macでcapslock+jとかでカーソル移動をできるようにした。

MacのUSキーボードでカーソル移動をcapslock+jとかでできるようにしたという話。

まずPCKeyboardHackを使って、capslockキーをcontrol_Rキーに変更する。この時「システム環境設定->キーボード->キーボードタブ->装飾キー」でcapslockキーを「アクションなし」にするのも忘れないでおく。(一応、ここの設定設定でもcapslockをcontrolキーに変えることはできるのだが、その場合はcontrol_Rではなくcontrol_L判定になってしまう。それだと色々と面倒になるのでわざわざPCKeyboardHackを使ってcontrol_Rキーで設定することにしている。詳しくは後述する)

次にKeyRemap4MacBookの設定でprivate.xmlを以下のように編集する。

<?xml version="1.0"?>
<root>
  <item>
    <name>My Cursor Setting</name>
    <appendix>change capslock+u,m,j,k,h to cursor and delete</appendix>
    <identifier>fn_cursor</identifier>
    <autogen> __KeyToKey__ KeyCode::U, ModifierFlag::CONTROL_R, KeyCode::CURSOR_UP </autogen>
    <autogen> __KeyToKey__ KeyCode::M, ModifierFlag::CONTROL_R, KeyCode::CURSOR_DOWN </autogen>
    <autogen> __KeyToKey__ KeyCode::J, ModifierFlag::CONTROL_R, KeyCode::CURSOR_LEFT </autogen>
    <autogen> __KeyToKey__ KeyCode::K, ModifierFlag::CONTROL_R, KeyCode::CURSOR_RIGHT </autogen>
    <autogen> __KeyToKey__ KeyCode::H, ModifierFlag::CONTROL_R, KeyCode::DELETE </autogen>
  </item>
</root>

これにより、以下のように操作できるようになった。
capslock+U = ↑
capslock+M = ↓
capslock+J = ←
capslock+K = →
capslock+H = delete

ちなみにcapslockキーは一番最初にcontrol_Rに変換してるので、普通のcontrolキーとしても動作する。なので以下のような操作も可能になる。
capslock+A = 行頭へ移動
capslock+E = 行末へ移動

これでcapslockと各種文字キーでいろんな移動ができるようになった。

しかしこれでは、普通にcontrol+jなどのショートカットキーを使おうと思ってもできなくなってしまうのではないか?・・・そう思うかもしれない。

問題ない。その時は元々キーボードに備え付けられているcontrolキーを使えば良い。もともと備え付けられているcontrolキーはcontrol_Lとして判定されるので、control_Rに変更したcapslockキーと併用することができる。(これが冒頭でcapslockキーをわざわざcontrol_Rに設定した理由だ)

これのお陰で「control+←」というショートカットキーがあった場合に、「control+capslock+j」でもいけるようになる。

すごいぞ! PCKeyboardHack! KyeRemap4MacBook!


ちなみに、ここを参考にして今回のカスタマイズをしますた。
https://gist.github.com/YungSang/4576084