macOS SierraでWindows PC風のキーバインド(ショートカット)を設定
問題
そろそろ安定しているから大丈夫だろうとMacBookAireの「OS X El Capitan」から「macOS Sierra」にアップグレードしたところ、他の方と同様にkarabinerが使えないという点でハマりました。
私はWindowsでの作業も多いので、PC風のキーバインドにしています。(Cntl+Cでコピーだったり、Cntl+Aで全選択だったり、また、FN+左でHome、FN+右でEndなど。)
対策
対策は他の方と同様で、Hammerspoon、キーバインドの変更となりました。
Hammerspoon
Hammerspoonは、macOS の操作を自動化できるツールです。 Luaという記法で記載します。
Init.luaを次のように記載します。
HammerspoonのConfig (Init.lua)
hs.hotkey.bind({"ctrl"}, "c", nil, function() hs.eventtap.keyStroke({"cmd"}, "c") end) hs.hotkey.bind({"ctrl"}, "v", nil, function() hs.eventtap.keyStroke({"cmd"}, "v") end) hs.hotkey.bind({"ctrl"}, "w", nil, function() hs.eventtap.keyStroke({"cmd"}, "w") end) hs.hotkey.bind({"ctrl"}, "q", nil, function() hs.eventtap.keyStroke({"cmd"}, "q") end) hs.hotkey.bind({"ctrl"}, "f", nil, function() hs.eventtap.keyStroke({"cmd"}, "f") end) hs.hotkey.bind({"ctrl"}, "a", nil, function() hs.eventtap.keyStroke({"cmd"}, "a") end) hs.hotkey.bind({"ctrl"}, "x", nil, function() hs.eventtap.keyStroke({"cmd"}, "x") end) hs.hotkey.bind({"ctrl"}, "z", nil, function() hs.eventtap.keyStroke({"cmd"}, "z") end) hs.hotkey.bind({"ctrl"}, "s", nil, function() hs.eventtap.keyStroke({"cmd"}, "s") end)
「コントロール+C」を「コマンド+C」に変換したりしてます。
DefaultKeyBinding.dictで、キーバインド変更
続けて、MacOSのキーバインドを変更して、Fnキーと矢印キーの調整します。
DefaultKeyBinding.dictというファイルを作って、キーバインドを設定します。
mkdir -p ~/Library/KeyBindings cd ~/Library/KeyBindings touch DefaultKeyBinding.dict open -a TextEdit DefaultKeyBinding.dict
エディタが開いたら次のように記述(UTF-8)。
{ /* home */ "\UF729" = "moveToBeginningOfLine:"; "$\UF729" = "moveToBeginningOfLineAndModifySelection:"; /* end */ "\UF72B" = "moveToEndOfLine:"; "$\UF72B" = "moveToEndOfLineAndModifySelection:"; /* page up/down */ "\UF72C" = "pageUp:"; "\UF72D" = "pageDown:"; }
MACを再起動で反映されます。
だいたい動いたので、しばらくはこれで行こうかと思います。
今後は、karabiner elementsの発展に期待です。
参考
https://groups.google.com/forum/#!topic/osx-karabiner/xkh0oZfY7pk slongwell.github.io