KeyRemap4MacBookのパッチ書いた。
- Ctrl + Option + : を Cmd + TAB
- Ctrl + Option + ; を Cmd + TAB + shift
のキーバインドを追加します。デフォルトのCommand + TAB ( アプリケーションの切り替え )の挙動を割り当てることになります。なんだかニッチなバインドです。英数をOptionに切り替えておくとほぼホームポジションのまんま全体を押せる感じなんですけど。
( 自分の設定では Ctrl+; / Ctrl+: をTerminalやSafari、Emacsのタブの切り替えに使っているせいか、 ; と : は「横方向」な切り替えボタンとして馴染んでたので ; と : を使ってアプリの切り替え方法無いかなぁーと模索したらとりあえずこうなった経緯。 )
( KeyRemap4MacBookをごにょごにょしたい方は本家の
http://www.pqrs.org/tekezo/macosx/keyremap4macbook/source.html.ja
を眺めながら作業しましょう。 追加の機能を取り入れやすいようにビルド方法が工夫されていて感動しました!
diff -u -r KeyRemap4MacBook-5.1.0.org/files/prefpane/checkbox.xml KeyRemap4MacBook-5.1.0/files/prefpane/checkbox.xml --- KeyRemap4MacBook-5.1.0.org/files/prefpane/checkbox.xml 2008-11-26 13:26:45.000000000 +0900 +++ KeyRemap4MacBook-5.1.0/files/prefpane/checkbox.xml 2008-11-26 14:01:30.000000000 +0900 @@ -706,6 +706,14 @@ <name>Option+Tab to F5</name> <sysctl>remap.optionTab2f5</sysctl> </item> + <item> + <name>Controll+Option+; to Command+Shift+Tab</name> + <sysctl>remap.controllLOptionSemicolon2commandShiftLTab</sysctl> + </item> + <item> + <name>Controll+Option+: to Command+Tab</name> + <sysctl>remap.controllLOptionColon2commandTab</sysctl> + </item> </list> </item> diff -u -r KeyRemap4MacBook-5.1.0.org/files/share/reset KeyRemap4MacBook-5.1.0/files/share/reset --- KeyRemap4MacBook-5.1.0.org/files/share/reset 2008-11-26 13:26:45.000000000 +0900 +++ KeyRemap4MacBook-5.1.0/files/share/reset 2008-11-26 14:29:23.000000000 +0900 @@ -126,6 +126,8 @@ remap.commandTab2f5 0 remap.optionTab2commandTab 0 remap.optionTab2f5 0 +remap.controllLOptionSemicolon2commandShiftLTab 0 +remap.controllLOptionColon2commandTab 0 option.emacsmode_controlD 0 option.emacsmode_controlH 0 option.emacsmode_controlI 0 diff -u -r KeyRemap4MacBook-5.1.0.org/src/core/kext/remap.cpp KeyRemap4MacBook-5.1.0/src/core/kext/remap.cpp --- KeyRemap4MacBook-5.1.0.org/src/core/kext/remap.cpp 2008-11-26 13:26:45.000000000 +0900 +++ KeyRemap4MacBook-5.1.0/src/core/kext/remap.cpp 2008-11-26 14:01:31.000000000 +0900 @@ -1081,6 +1081,37 @@ } } + void + remap_controllLOptionSemicolon2commandShiftLTab(const RemapParams ¶ms) + { + if (! config.remap_controllLOptionSemicolon2commandShiftLTab) return; + + if ( params.ex_origKey != KeyCode::SEMICOLON) return; + + if (allFlagStatus.isHeldDown_option() && allFlagStatus.isHeldDown_control()) { + *(params.key) = KeyCode::TAB; + allFlagStatus.optionL.temporary_decrease(); + allFlagStatus.controlL.temporary_decrease(); + allFlagStatus.shiftL.temporary_increase(); + allFlagStatus.commandL.temporary_increase(); + } + } + + void + remap_controllLOptionColon2commandTab(const RemapParams ¶ms) + { + if (! config.remap_controllLOptionColon2commandTab ) return; + + if ( params.ex_origKey != KeyCode::QUOTE) return; + + if (allFlagStatus.isHeldDown_option() && allFlagStatus.isHeldDown_control()) { + *(params.key) = KeyCode::TAB; + allFlagStatus.optionL.temporary_decrease(); + allFlagStatus.controlL.temporary_decrease(); + allFlagStatus.commandL.temporary_increase(); + } + } + // ---------------------------------------- void remap_hhkmode(const RemapParams ¶ms) @@ -2627,6 +2658,8 @@ remap_commandTab2f5(params); remap_optionTab2f5(params); remap_optionTab2commandTab(params); + remap_controllLOptionSemicolon2commandShiftLTab(params); + remap_controllLOptionColon2commandTab(params); // ---------------------------------------- remap_app_vm_commandspace2optionbackquote(params);
細かく眺めてないので この書き方がお作法的に正しいのかどうかちょと分からない ...