ファンクションキーを有機ELディスプレイに置き換えた、新MacBook Proの「Touch Bar」。ソフトウェアでその細長い領域を制御するという発想は斬新で、利用価値の高いものだが、ハードキーもなかなかどうして捨てがたい。その気になればカスタマイズも……というわけで、いま敢えてファンクションキーの活用法について考えてみたい。なお、検証はMacBook Air(macOS Sierra 10.12.1)で行っている。

ファンクションキーに任意の機能を割り当てる

macOSで任意の機能をファンクションキーに割り当てるとなると、システム環境設定「キーボード」パネルの「ショートカット」タブを利用することがオーソドックスな方法だ。しかし、アプリケーションレベルの機能以外は画面に表示されているものしか変更できず、システム共通の(異種アプリケーションで利用できる)機能はどうにもならない。

個人的に、「調べる」はどうにかしたいところ。カーソル直下に単語がある状態でControl-Command-Dを押すと呼び出せるこの機能、macOS内蔵辞書だけでなくWikipediaやApp Storeなどもあわせて検索できるので重宝している。

しかし、ついSHIFT-Command-Dなどとショートカットキーを間違えてしまいがちで、イライラすることが少なくない。これをファンクションキー1つで呼び出せれば……「ショートカットキー」タブの「サービス」欄にある「辞書で調べる」という項目も用意されているが、これは辞書アプリを起動するためのもので別モノ。他の方法を探すしかない。

「調べる」を単独のファンクションキーで起動できるようにしたい

お勧めは、システムワイドなホットキー設定ファイル「~/Library/Preferences/com.apple.symbolichotkeys.plist」を書き換える方法だ。テキストエディタで書き換えることはできないが、Terminalからdefaultsコマンドを以下の要領で実行すればいい(再ログインで設定が有効化)。ここでは、Control-Command-Dの代わりにF1キーを指定している。これで、ショートカットキーを押し間違えて表示しているページをリーディングリストに登録してしまう(Shift-Command-D)というミスはなくなるはずだ。

内容を説明しておこう。「-dict-add」に続く70という数値は、「調べる」のショートカットキー固有のエントリ番号 -- 29番はデスクトップ全体のスクリーンショット、30番は選択範囲のスクリーンショットなど、さまざまな定義があるので興味があれば調べてほしい -- であり、そこに「63236」と「122」、「0」という3つのアイテムをくわえることで、ショートカットキーを表現している。

なお、「63236」はF1を押したときのキャラクタの対応値(Unicode)、「122」はF1のキーコード、「0」は修飾キー(表1)を使わないことを意味している。ここでは修飾キーを利用していないが、複数の修飾キーを使う場合は各数値を加算すればいい。たとえば、ShiftとControlの同時押しは「393216」(131072+26214)だ。

キーコードの調べかただが、Mac App Storeで無償公開されている「Key Codes」がお勧めだ。起動後にF1キーを押せば、Unicodeが「63236」、キーコードが「122」と表示されることだろう。その要領でキーコードを調べれば、システムワイドなショートカットキーに単独のファンクションキーを割り当てできることだろう。

$ defaults write com.apple.symbolichotkeys AppleSymbolicHotKeys -dict-add 70 "<dict><key>enabled</key><true/><key>value</key><dict><key>parameters</key><array><integer>63236</integer><integer>122</integer><integer>0</integer></array><key>type</key><string>standard</string></dict></dict>"

押したキーのキーコードを調べることができる「Key Codes」

修飾キーの対応値
131072 Shift
262144 Control
524288 Option
1048576 Command

パワーキーでスリープしない

厳密にはファンクションキーではないが、パワーキーもカスタマイズを試したいキーのひとつ。デフォルトの設定では、少し長めに押すとスリープ、数秒ほど押すと再起動やスリープなど電源関連の処理を選択できるダイアログが現れるが、これをスリープを省く設定にすることもできる。以下のとおりTerminalでコマンドラインを実行すれば、ただちにパワーキーの挙動が変わるはずだ。

$ defaults write com.apple.loginwindow PowerButtonSleepsSystem -bool no

パワーキーの挙動を元に戻す(少し長めに押すとスリープする)場合は、以下のコマンドラインを実行する。こちらも設定を有効にしたときと同様、実行後すぐにパワーキーの挙動が変わる。

$ defaults delete com.apple.loginwindow PowerButtonSleepsSystem

パワーキーを押したらすぐにダイアログが表示されるよう設定をカスタマイズできる