KeyRemap4MacBookをカスタマイズする方法(最近のおすすめ版?)
KeyRemap4MacBookには大変にお世話になっているnobeansです。こんにちは。
オレオレなカスタマイズをして使ってたんですが、だいぶ古いバージョンのままになってました。
ちょっとした理由があってKeyRemap4MacBookを最新版に更新しないといけなくなったんですが、久しぶりにみたらRDC対応やiTerm2などソース部分をハックしてたところは普通にデフォで対応されてました。素晴らしい。
なので、オレオレ設定を記述したfiles/prefpane/checkbox.xmlの該当部分だけコピペすれば、最新版に簡単に移行できます。
で、checkbox.xmlだと、デフォの設定群とオレオレ設定が1ファイルに混在することになるんですけど、よくみるとfiles/prefpane/include/local.top.xmlというファイルが追加されてて、オレオレ設定はこれに書いておくと、ビルド時にcheckbox.xmlとマージされる仕組みができてました。素晴らしい。
というわけで、これからKeyRemap4MacBookを使い倒したい人はfiles/prefpane/include/local.top.xmlにオレオレ設定を書くようにすると良いですよ。
というお話。
自分の最新設定
一応はっておきます。
<!-- Put your private settings here --> <item> <name>For nobeans</name> <list> <item> <name>PC style</name> <list> <item> <name>Control+X/C/V to Cut/Copy/Paste</name> <sysctl>remap.controlXCV2copyPasteCut</sysctl> <not>VI, EMACS, TERMINAL, VIRTUALMACHINE, REMOTEDESKTOPCONNECTION, X11</not> <autogen>--KeyToKey-- KeyCode::X, VK_CONTROL, KeyCode::X, ModifierFlag::COMMAND_R</autogen> <autogen>--KeyToKey-- KeyCode::C, VK_CONTROL, KeyCode::C, ModifierFlag::COMMAND_R</autogen> <autogen>--KeyToKey-- KeyCode::V, VK_CONTROL, KeyCode::V, ModifierFlag::COMMAND_R</autogen> </item> <item> <name>Control+S to Save</name> <sysctl>remap.controlS2save</sysctl> <not>VI, EMACS, TERMINAL, VIRTUALMACHINE, REMOTEDESKTOPCONNECTION, X11</not> <autogen>--KeyToKey-- KeyCode::S, VK_CONTROL, KeyCode::S, ModifierFlag::COMMAND_R</autogen> </item> <item> <name>Control+Z to Undo / Control+Y to Redo</name> <sysctl>remap.controlZY2undoRedo</sysctl> <not>VI, EMACS, TERMINAL, VIRTUALMACHINE, REMOTEDESKTOPCONNECTION, X11</not> <autogen>--KeyToKey-- KeyCode::Z, VK_CONTROL, KeyCode::Z, ModifierFlag::COMMAND_R</autogen> <autogen>--KeyToKey-- KeyCode::Y, VK_CONTROL, KeyCode::Z, ModifierFlag::COMMAND_R | ModifierFlag::SHIFT_R</autogen> </item> <item> <name>Control+W to Window Close</name> <sysctl>remap.controlW2closeWindow</sysctl> <not>VI, EMACS, TERMINAL, VIRTUALMACHINE, REMOTEDESKTOPCONNECTION, X11</not> <autogen>--KeyToKey-- KeyCode::W, VK_CONTROL, KeyCode::W, ModifierFlag::COMMAND_R</autogen> </item> <item> <name>Control+R to Reload</name> <sysctl>remap.controlR2reload</sysctl> <not>VI, EMACS, TERMINAL, VIRTUALMACHINE, REMOTEDESKTOPCONNECTION, X11</not> <autogen>--KeyToKey-- KeyCode::R, VK_CONTROL, KeyCode::R, ModifierFlag::COMMAND_R</autogen> </item> </list> </item> <item> <name>Emacs style</name> <list> <item> <name>Control+PNBF to Up/Down/Left/Right</name> <appendix>(Only with modifier None or Shift)</appendix> <sysctl>remap.emacsmode_controlPNBF_nobeans</sysctl> <not>VI, EMACS, TERMINAL, VIRTUALMACHINE, REMOTEDESKTOPCONNECTION, X11</not> <autogen>--KeyToKey-- KeyCode::P, ModifierFlag::CONTROL_L | ModifierFlag::NONE, KeyCode::CURSOR_UP</autogen> <autogen>--KeyToKey-- KeyCode::N, ModifierFlag::CONTROL_L | ModifierFlag::NONE, KeyCode::CURSOR_DOWN</autogen> <autogen>--KeyToKey-- KeyCode::B, ModifierFlag::CONTROL_L | ModifierFlag::NONE, KeyCode::CURSOR_LEFT</autogen> <autogen>--KeyToKey-- KeyCode::F, ModifierFlag::CONTROL_L | ModifierFlag::NONE, KeyCode::CURSOR_RIGHT</autogen> <autogen>--KeyToKey-- KeyCode::P, ModifierFlag::CONTROL_L | VK_SHIFT | ModifierFlag::NONE, KeyCode::CURSOR_UP, ModifierFlag::SHIFT_R</autogen> <autogen>--KeyToKey-- KeyCode::N, ModifierFlag::CONTROL_L | VK_SHIFT | ModifierFlag::NONE, KeyCode::CURSOR_DOWN, ModifierFlag::SHIFT_R</autogen> <autogen>--KeyToKey-- KeyCode::B, ModifierFlag::CONTROL_L | VK_SHIFT | ModifierFlag::NONE, KeyCode::CURSOR_LEFT, ModifierFlag::SHIFT_R</autogen> <autogen>--KeyToKey-- KeyCode::F, ModifierFlag::CONTROL_L | VK_SHIFT | ModifierFlag::NONE, KeyCode::CURSOR_RIGHT, ModifierFlag::SHIFT_R</autogen> </item> <item> <name>Control+D to Forward Delete</name> <appendix>(Without other modifiers; compatibile with Dictionary.app)</appendix> <sysctl>option.emacsmode_controlD_nobeans</sysctl> <not>VI, EMACS, TERMINAL, VIRTUALMACHINE, REMOTEDESKTOPCONNECTION, X11</not> <autogen>--KeyToKey-- KeyCode::D, VK_CONTROL | ModifierFlag::NONE, KeyCode::FORWARD_DELETE</autogen> </item> <item> <name>Control+H to Delete</name> <appendix>(Without other modifiers)</appendix> <sysctl>option.emacsmode_controlH_nobeans</sysctl> <not>VI, EMACS, TERMINAL, VIRTUALMACHINE, REMOTEDESKTOPCONNECTION, X11</not> <autogen>--KeyToKey-- KeyCode::H, VK_CONTROL | ModifierFlag::NONE, KeyCode::DELETE</autogen> </item> <item> <name>Control+M to Return</name> <appendix>(Without other modifiers)</appendix> <sysctl>option.emacsmode_controlM_nobeans</sysctl> <not>VI, EMACS, TERMINAL, VIRTUALMACHINE, REMOTEDESKTOPCONNECTION, X11</not> <autogen>--KeyToKey-- KeyCode::M, VK_CONTROL | ModifierFlag::NONE, KeyCode::RETURN</autogen> </item> <item> <name>Control+AE to Command+Left/Right</name> <appendix>(Only with modifier None or Shift)</appendix> <sysctl>option.emacsmode_controlAE_nobeans</sysctl> <not>VI, EMACS, TERMINAL, VIRTUALMACHINE, REMOTEDESKTOPCONNECTION, X11</not> <autogen>--KeyToKey-- KeyCode::A, VK_CONTROL | ModifierFlag::NONE, KeyCode::CURSOR_LEFT, ModifierFlag::COMMAND_L</autogen> <autogen>--KeyToKey-- KeyCode::E, VK_CONTROL | ModifierFlag::NONE, KeyCode::CURSOR_RIGHT, ModifierFlag::COMMAND_L</autogen> <autogen>--KeyToKey-- KeyCode::A, VK_CONTROL | VK_SHIFT, KeyCode::CURSOR_LEFT, ModifierFlag::COMMAND_L | ModifierFlag::SHIFT_L</autogen> <autogen>--KeyToKey-- KeyCode::E, VK_CONTROL | VK_SHIFT, KeyCode::CURSOR_RIGHT, ModifierFlag::COMMAND_L | ModifierFlag::SHIFT_L</autogen> </item> </list> </item> <item> <name>Original style</name> <list> <item> <name>Control+< to PageUp / Control+> to PageDown</name> <sysctl>remap.controlLtGt2pageUpDown</sysctl> <not>VI, EMACS, TERMINAL, VIRTUALMACHINE, REMOTEDESKTOPCONNECTION, X11</not> <autogen>--KeyToKey-- KeyCode::COMMA, VK_CONTROL, KeyCode::PAGEUP</autogen> <autogen>--KeyToKey-- KeyCode::DOT, VK_CONTROL, KeyCode::PAGEDOWN</autogen> </item> <item> <name>Control+< to PageUp / Control+> to PageDown</name> <appendix>(Not moving cursor only for Firefox)</appendix> <sysctl>remap.controlLtGt2pageUpDown_Firefox</sysctl> <only>FIREFOX</only> <autogen>--KeyToKey-- KeyCode::COMMA, VK_CONTROL, KeyCode::PAGEUP</autogen> <autogen>--KeyToKey-- KeyCode::DOT, VK_CONTROL, KeyCode::PAGEDOWN</autogen> </item> <item> <name>Control+< to PageUp / Control+> to PageDown</name> <appendix>(Moving cursor as PC style)</appendix> <sysctl>remap.controlLtGt2pageUpDown_Pc</sysctl> <not>VI, EMACS, TERMINAL, VIRTUALMACHINE, REMOTEDESKTOPCONNECTION, X11, FIREFOX</not> <autogen>--KeyToKey-- KeyCode::COMMA, VK_CONTROL, KeyCode::PAGEUP, ModifierFlag::OPTION_L</autogen> <autogen>--KeyToKey-- KeyCode::DOT, VK_CONTROL, KeyCode::PAGEDOWN, ModifierFlag::OPTION_L</autogen> </item> <item> <name>Option_R+Arrow for Spaces</name> <sysctl>remap.spaces_special_optionR_arrows</sysctl> <autogen>--KeyToKey-- KeyCode::CURSOR_UP, ModifierFlag::OPTION_R, KeyCode::CURSOR_UP, ModifierFlag::CONTROL_L</autogen> <autogen>--KeyToKey-- KeyCode::CURSOR_DOWN, ModifierFlag::OPTION_R, KeyCode::CURSOR_DOWN, ModifierFlag::CONTROL_L</autogen> <autogen>--KeyToKey-- KeyCode::CURSOR_LEFT, ModifierFlag::OPTION_R, KeyCode::CURSOR_LEFT, ModifierFlag::CONTROL_L</autogen> <autogen>--KeyToKey-- KeyCode::CURSOR_RIGHT, ModifierFlag::OPTION_R, KeyCode::CURSOR_RIGHT, ModifierFlag::CONTROL_L</autogen> </item> <item> <name>Control+Tab to Change Tabs for Terminal</name> <sysctl>remap.terminal_special_ctrlTab</sysctl> <only>TERMINAL</only> <autogen>--KeyToKey-- KeyCode::TAB, VK_CONTROL | ModifierFlag::NONE, KeyCode::BRACKET_RIGHT, ModifierFlag::COMMAND_R | ModifierFlag::SHIFT_R</autogen> <autogen>--KeyToKey-- KeyCode::TAB, VK_CONTROL | VK_SHIFT | ModifierFlag::NONE, KeyCode::BRACKET_LEFT, ModifierFlag::COMMAND_R | ModifierFlag::SHIFT_R</autogen> </item> </list> </item> </list> </item>