如何使大写锁定像Mac OS X中的Esc一样工作?
我知道怎么做的唯一一件事是将大写锁定映射到控制,或选项,或命令。这可以通过键盘和放大器来完成;“系统首选项”的鼠标面板。点击左下角的“修改键”,你就可以将“大写锁定”、“控制”、“选项”和“命令”重新映射到其中任何一个。
这是有可能的。
来自true深情网的一个arcticle。
下载并安装PCKeyboardHack。 进入系统首选项中的PCKeyboardHack。 启用“Change Caps Lock”并设置键码为53。
这个解决方案不涉及修补键盘驱动程序,而是提供了一个特定于Vim的解决方案。
OS X支持将大写锁键映射到一大堆键,但你必须“手动”,编辑.plist文件。该过程在这篇文章中描述。作为提示的补充,我建议你首先在系统首选项中将Caps-Lock设置为None,然后你只需要更改.plist文件中的一个值。当然,您也可以使用属性列表编辑器,而不是执行XML转换步骤。
诀窍是将“Caps Lock”键映射到“Help”键(代码6),这在大多数键盘上都没有。但如果它是,它将被视为插入键,你可能不会使用它,因为你要求重新映射你的Caps Lock以防止伸展你的手;)
然后你可以将Help和插入键映射到vim中的Esc。
map <Help> <Esc> map! <Help> <Esc> map <Insert> <Esc> map! <Insert> <Esc>
这将适用于gvim (Vim.app)。我没有让它与终端中的vim一起工作,我也没有用MacVim测试它。
因此,这是一个相当复杂的、不成熟的解决方案,或者安装一个第三方的黑客。你自己选;)
编辑:刚刚注意到解决方案3,如果你使用MacVim,你可以使用Ctrl, 选项和命令作为Esc。使用系统首选项,将Caps Lock映射到其中一个键是很简单的。
您还可以使用DoubleCommand来重新映射这个键和其他键。
IIRC,它会将Caps Lock映射为Esc。
在尝试了以上几种解决方案后,我总结了以下几点:
DoubleCommand将允许你交换esc和caps-lock。
PCKeyboardHack 将允许你映射capslock来转义,但是没有将转义映射到大写锁的能力。最新版本将允许您通过编辑两个键来执行完整的交换。
这可能满足你的需求,也可能不满足(我知道这是我的需求)。
打开键盘首选项,点击修改键…您可以将大写锁定键更改为控制、选项、转义或命令。
编辑:如这个答案中所述,新版本的MacOS现在支持将大写锁定重新绑定到逃避。因此,不再需要安装第三方软件来实现这一目标。
下面是我对如何使用Seil(以前称为PCKeyboardHack)实现这一目标的全面、可视化的回答(带有链接)的尝试。
PCKeyboardHack
在弹出对话框中将大写锁定键设置为No Action:
No Action
2)现在,点击这里下载Seil并安装它:
3)安装后,你会安装一个新的应用程序(Mountain Lion和更新的),如果你是在一个较旧的操作系统上,你可能需要检查一个新的系统首选项窗格:
4)选中“Change Caps Lock”,输入“53”作为escape键的代码:
这样就完成了!如果它不能立即工作,你可能需要重新启动你的机器。
你可能还想看看KeyRemap4MacBook,它实际上是pqrs.org的旗舰键盘重映射工具——它也是免费的。
pqrs.org
如果你喜欢这些工具,你可以捐款。我和他们没有任何关系,但我已经使用这些工具很长一段时间了,不得不说那里的家伙在维护这些工具、添加功能和修复错误方面做得非常出色。
下面是一个截图,展示了几个(数百个)可预选选项:
PQRS还有一个叫做NoEjectDelay的很棒的实用程序,你可以结合KeyRemap4MacBook来重新编程弹出键。稍作调整后,我将我的手机设置为切换机场Wifi。
这些实用程序在重新映射Mac键盘时提供了无限的灵活性。玩得开心!
为了使用PCKeyboardHack和KeyRemap4MacBook实际交换转义键和大写锁定键(而不仅仅是将一个映射到另一个),你必须遵循这个线程中的说明,将大写锁定键映射到键盘不使用但由KeyRemap4MacBook负责的键码(例如。110)。然后,在PCKeyboardHack中,选择适当的选项来映射该键码来转义(在110的情况下,它是“应用程序键来转义”)。以下是你的KeyRemap4MacBook首选项应该是什么样的(前提是你选择了“仅显示启用”复选框)。
我最初试图将此信息作为编辑发布到Cwd的回答很好,但它被拒绝了。我鼓励任何想要走我描述的路线的人先读一下他/她的回答。
如果你不想安装第三方应用程序,并且你真的只关心iTerm中的vim,下面的方法是有效的:
重新映射CapsLock以帮助,如在这里所述。
简短版本:使用plutil或类似的方法编辑~/Library/Preferences/ByHost/.GlobalPreferences*.plist,它看起来应该类似于:
~/Library/Preferences/ByHost/.GlobalPreferences*.plist
<key>HIDKeyboardModifierMappingDst</key> <integer>6</integer> <key>HIDKeyboardModifierMappingSrc</key> <integer>0</integer>
重新启动!简单的登出和登录对我来说不起作用。
在iTerm中,为Help添加一个新的键映射:发送十六进制代码0x1b,它对应于Escape。
我知道这并不完全是要求的,但我认为许多人寻找这样的解决方案的目的实际上是这个更专业的变体。
Seil尚未在macOS Sierra (10.12 beta)上使用。因此,我一直在使用键盘大师与这些设置:
这条github评论:https://github.com/tekezo/Seil/issues/68#issuecomment-230131664
Seil还不能在macOS Sierra上工作,所以我使用弹簧扣元素,从https://pqrs.org/latest/karabiner-elements-latest.dmg下载。
要么使用GUI,要么将以下内容放入~/.karabiner.d/configuration/karabiner.json:
~/.karabiner.d/configuration/karabiner.json
{ "profiles" : [ { "name" : "Default profile", "selected" : true, "simple_modifications" : { "caps_lock" : "escape" } } ] }
从macOS 10.12.1开始,可以将大写锁定本地重新映射到Esc(系统首选项->键盘->修改器键)。
现在,在macOS Sierra中将大写锁定键映射到Esc要容易得多。
打开系统首选项→键盘。
点击右下角的修改键按钮。
单击要重新映射的硬件键旁边的下拉框,然后选择Escape。
单击“确定”并关闭“系统首选项”。
https://9to5mac.com/2016/10/25/remap-escape-key-action-macbook-pro-macos-sierra-10-12-1-modifier-keys/
我对这里的任何答案都不满意,并去寻找命令行解决方案。
在macOS Sierra 10.12版本中,苹果为用户引入了一种重新映射按键的新方式。
如果这听起来不错,看看hidutil。
hidutil
例如,要将caps-lock重新映射为escape,请参考密钥表并发现caps-lock的使用代码为0x39,而escape的使用代码为0x29。将这些代码或十六进制值0x700000000放在源文件和dest文件中,如下所示:
hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000039,"HIDKeyboardModifierMappingDst":0x700000029}]}'
您可以在同一个命令中添加其他映射。就我个人而言,我喜欢将caps-lock重映射为退格,并将退格重映射为delete:
hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000039,"HIDKeyboardModifierMappingDst":0x70000002A}, {"HIDKeyboardModifierMappingSrc":0x70000002A,"HIDKeyboardModifierMappingDst":0x70000004C}]}'
查看当前映射:
hidutil property --get "UserKeyMapping"
您的更改将在系统重新启动时丢失。如果希望它们持久存在,请在启动代理中配置它们。这是我的:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!-- Place in ~/Library/LaunchAgents/ --> <!-- launchctl load com.ldaws.CapslockBackspace.plist --> <plist version="1.0"> <dict> <key>Label</key> <string>com.ldaws.CapslockEsc</string> <key>ProgramArguments</key> <array> <string>/usr/bin/hidutil</string> <string>property</string> <string>--set</string> <string>{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000039,"HIDKeyboardModifierMappingDst":0x70000002A},{"HIDKeyboardModifierMappingSrc":0x70000002A,"HIDKeyboardModifierMappingDst":0x70000004C}]}</string> </array> <key>RunAtLoad</key> <true/> </dict> </plist>
我已经把这个内容放在一个位于~/Library/LaunchAgents/com.ldaws.CapslockBackspace.plist的文件中,然后执行:
~/Library/LaunchAgents/com.ldaws.CapslockBackspace.plist
launchctl load com.ldaws.CapslockBackspace.plist
https://pqrs.org/osx/karabiner/index.html
为我在莫哈韦把大写键改成退格键