KeyRemap4MacBookはOS X用キーボードカスタマイザの決定版ですが、窓使いの憂鬱からの移民としてはとにかくいじりがいがあるので、手元でいろいろ設定を追加しています。その中でも汎用性が高いと思われるやつをひとつ紹介。
US配列で右Commandキーの右にある「Enter」は、なかなかいい場所にあるのに使用頻度の低いかわいそうな子。KeyRemap4MacBookでも様々なキーへのマッピングが用意されていますが、僕はOptionキーにしています。Optionはメタキーとして欧文文字の入力に使いますが、ギリシャ文字や学術記号等、大して必要のないものも多いので、デスクトップ操作等のグローバルショートカットに活用しています。
しかし、EnterをOptionにするだけではもったいない。日本語使いがキーボードを使っていて何がまどろっこしいって、入力モードの切り替えの面倒さ。OS XのCommand+Spaceはとてもいい組み合わせだけど、両の親指を使うのが気に食わない。そこで、Enter単独押しでモード切替できたらいいんじゃね?というパッチがこれ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
diff -r f0c59438beaf files/prefpane/sysctl.xml --- a/files/prefpane/sysctl.xml Thu Feb 21 11:23:13 2008 +0900 +++ b/files/prefpane/sysctl.xml Fri Feb 22 16:15:20 2008 +0900 @@ -83,6 +83,12 @@ <item> <name>Enter to Option_L</name> <sysctl>keyremap4macbook.remap.enter2optionL</sysctl> + <list> + <item> + <name>Non-modifier Enter to Command_L+Space</name> + <sysctl>keyremap4macbook.option.enter2optionL_commandspace</sysctl> + </item> + </list> </item> <item> <name>Enter to Command_L+Control_L</name> diff -r f0c59438beaf src/kext/config.cpp --- a/src/kext/config.cpp Thu Feb 21 11:23:13 2008 +0900 +++ b/src/kext/config.cpp Fri Feb 22 16:15:20 2008 +0900 @@ -76,6 +76,9 @@ namespace org_pqrs_KeyRemap4MacBook { SYSCTL_INT(_keyremap4macbook_remap, OID_AUTO, enter2optionL, CTLTYPE_INT|CTLFLAG_RW, &(config.remap_enter2optionL), 0, ""); + SYSCTL_INT(_keyremap4macbook_option, OID_AUTO, enter2optionL_commandspace, CTLTYPE_INT|CTLFLAG_RW, + &(config.option_enter2optionL_commandspace), 0, ""); + SYSCTL_INT(_keyremap4macbook_remap, OID_AUTO, enter2commandLcontrolL, CTLTYPE_INT|CTLFLAG_RW, &(config.remap_enter2commandLcontrolL), 0, ""); @@ -370,7 +373,10 @@ namespace org_pqrs_KeyRemap4MacBook { sysctl_register_oid(&sysctl__keyremap4macbook_remap_enter2commandL); sysctl_register_oid(&sysctl__keyremap4macbook_remap_enter2controlL); sysctl_register_oid(&sysctl__keyremap4macbook_remap_enter2fn); + sysctl_register_oid(&sysctl__keyremap4macbook_remap_enter2optionL); + sysctl_register_oid(&sysctl__keyremap4macbook_option_enter2optionL_commandspace); + sysctl_register_oid(&sysctl__keyremap4macbook_remap_enter2commandLcontrolL); sysctl_register_oid(&sysctl__keyremap4macbook_remap_enter2commandLshiftL); sysctl_register_oid(&sysctl__keyremap4macbook_remap_enter2semicolon); @@ -515,7 +521,10 @@ namespace org_pqrs_KeyRemap4MacBook { sysctl_unregister_oid(&sysctl__keyremap4macbook_remap_enter2commandL); sysctl_unregister_oid(&sysctl__keyremap4macbook_remap_enter2controlL); sysctl_unregister_oid(&sysctl__keyremap4macbook_remap_enter2fn); + sysctl_unregister_oid(&sysctl__keyremap4macbook_remap_enter2optionL); + sysctl_unregister_oid(&sysctl__keyremap4macbook_option_enter2optionL_commandspace); + sysctl_unregister_oid(&sysctl__keyremap4macbook_remap_enter2commandLcontrolL); sysctl_unregister_oid(&sysctl__keyremap4macbook_remap_enter2commandLshiftL); sysctl_unregister_oid(&sysctl__keyremap4macbook_remap_enter2semicolon); diff -r f0c59438beaf src/kext/config.hpp --- a/src/kext/config.hpp Thu Feb 21 11:23:13 2008 +0900 +++ b/src/kext/config.hpp Fri Feb 22 16:15:20 2008 +0900 @@ -31,7 +31,10 @@ namespace org_pqrs_KeyRemap4MacBook { int remap_enter2commandL; int remap_enter2controlL; int remap_enter2fn; + int remap_enter2optionL; + int option_enter2optionL_commandspace; + int remap_enter2commandLcontrolL; int remap_enter2commandLshiftL; int remap_enter2semicolon; diff -r f0c59438beaf src/kext/keycode.hpp --- a/src/kext/keycode.hpp Thu Feb 21 11:23:13 2008 +0900 +++ b/src/kext/keycode.hpp Fri Feb 22 16:15:20 2008 +0900 @@ -156,6 +156,7 @@ namespace org_pqrs_KeyRemap4MacBook { namespace CharCode { enum { CONTROL_L = 0, + COMMAND_L = 0, FN = 0, TAB = 9, RETURN = 13, diff -r f0c59438beaf src/kext/remap.cpp --- a/src/kext/remap.cpp Thu Feb 21 11:23:13 2008 +0900 +++ b/src/kext/remap.cpp Fri Feb 22 16:15:20 2008 +0900 @@ -122,7 +122,35 @@ namespace org_pqrs_KeyRemap4MacBook { { if (! config.remap_enter2optionL) return; - RemapUtil::keyToModifier(params, RemapUtil::getEnterKeyCode(params), ModifierFlag::OPTION_L); + KeyCode::KeyCode enterKeyCode = RemapUtil::getEnterKeyCode(params); + + if (config.option_enter2optionL_commandspace) { + static bool useEnterAsOption = false; + + if (params.ex_origKey != enterKeyCode && *(params.eventType) == KeyEvent::DOWN) { + useEnterAsOption = true; + } + + if (params.ex_origKey == enterKeyCode) { + // Enter => OptionL (if type EnterKey only, works as EnterKey) + unsigned int origEventType = *(params.eventType); + RemapUtil::keyToModifier(params, enterKeyCode, ModifierFlag::OPTION_L); + + if (origEventType == KeyEvent::DOWN) { + useEnterAsOption = false; + + } else if (origEventType == KeyEvent::UP) { + if (useEnterAsOption == false) { + listFireExtraKey.add(FireExtraKey::TYPE_AFTER, KeyEvent::MODIFY, ModifierFlag::COMMAND_L, KeyCode::COMMAND_L, CharCode::COMMAND_L); + listFireExtraKey.add(FireExtraKey::TYPE_AFTER, KeyEvent::DOWN, ModifierFlag::COMMAND_L, KeyCode::SPACE, CharCode::SPACE); + listFireExtraKey.add(FireExtraKey::TYPE_AFTER, KeyEvent::UP, ModifierFlag::COMMAND_L, KeyCode::SPACE, CharCode::SPACE); + listFireExtraKey.add(FireExtraKey::TYPE_AFTER, KeyEvent::MODIFY, 0, KeyCode::COMMAND_L, CharCode::COMMAND_L); + } + } + } + } else { + RemapUtil::keyToModifier(params, enterKeyCode, ModifierFlag::OPTION_L); + } } void |
親指でタン、と叩いて切り替えるのは昔からのお気に入りで、mayuではこうしていました。
1 2 3 |
mod alt -= RAlt key *RAlt = $ToggleIME mod alt += !!RAlt |
Kinesis Contoured Keyboardでは、右CtrlをEnterにマッピングして、上記の設定で使っています。快適快適。
KeyRemap4MacBook 3.1.5で取り込まれました!すばやい!
Your point of view caught my eye and was very interesting. Thanks. I have a question for you.