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