我最初的问题是XY Problem。
你想做 X,你认为 Y 是最好的方法。你不是问X,而是问Y。
我想让 Vim 被理解Caps Lock为Esc(同时仍然保持其他疯狂的系统级修改),所以我询问了 Vim 没有的功能。
事实证明,虽然上面提供的答案很棒,而且内容丰富,但我只是不喜欢被告知“不”。我在错误的问题空间中寻找答案。
OP 链接中讨论的应用程序之一 KeyRemap4MacBook 具有高度可扩展性。文档还有很多不足之处,但我能够根据我原来的问题拼凑出一个解决方案。这与“vim 中的地图内容”的原始主题大相径庭,为此我深表歉意,但我希望将其留给需要它的可怜灵魂。
简单来说,上一篇文章建议将这个添加到 KR4MB 的 'private.xml' 文件中:
<item>
<name>Remap Caps Lock to Hyper</name>
<appendix>OS X doesn't have a Hyper. This maps Left Control to Control + Shift + Option + Command.</appendix>
<identifier>caps_lock_to_hyper</identifier>
<autogen>
--KeyToKey--
KeyCode::F19,
KeyCode::COMMAND_L,
ModifierFlag::OPTION_L | ModifierFlag::SHIFT_L | ModifierFlag::CONTROL_L
</autogen>
</item>
(稍作修改Caps Lock)
这可以改为:
<item>
<name>Caps Lock to Hyper OR Escape</name>
<appendix>Caps Lock should be remapped to F19 (80) in PCKBH</appendix>
<appendix>This remaps F19 to "Hyper" aka Cmd-Shift-Ctrl-Alt...</appendix>
<appendix>...but, when pressed alone, F19 sends only escape</appendix>
<identifier>remap.hyper2hyper_escape</identifier>
<autogen>
--KeyOverlaidModifier--
KeyCode::F19,
KeyCode::COMMAND_L,
ModifierFlag::OPTION_L | ModifierFlag::SHIFT_L | ModifierFlag::CONTROL_L,
KeyCode::ESCAPE
</autogen>
</item>
这告诉系统,无论何时Caps Lock单独按下,它实际上都是Esc,但如果它与任何其他键一起按下,它就是F19。