我如何Caps Lock像Esc在 Mac OS X 中一样工作?
14 回答
编辑:如本答案中所述,较新版本的 MacOS 现在具有对重新绑定Caps Lock到Escape. 因此,不再需要安装第三方软件来实现这一点。
这是我对如何使用SeilPCKeyboardHack
(以前称为
- 首先,进入System Preferences,选择Keyboard,然后选择Keyboard Tab(第一个选项卡),然后单击Modifier Keys:
在弹出对话框中将Caps Lock Key设置为No Action
:
2) 现在,点击这里下载Seil并安装它:
3)安装后,您将安装一个新的应用程序(Mountain Lion 和更新版本),如果您使用的是旧操作系统,您可能需要检查新的系统偏好设置窗格:
4)选中“更改大写锁定”框并输入“53”作为转义键的代码:
你完成了!如果它不能立即工作,您可能需要重新启动计算机。
印象深刻?想要更多控制权?
您可能还想查看KeyRemap4MacBook,它实际上是旗舰键盘重新映射工具pqrs.org
- 它也是免费的。
如果您喜欢这些工具,您可以捐款。我与他们没有任何关系,但我已经使用这些工具很长时间了,不得不说那里的人在维护这些工具、添加功能和修复错误方面做得非常出色。
这是一个屏幕截图,显示了几个(数百个)预选选项:
PQRS 还有一个很棒的实用程序,称为NoEjectDelay,您可以将它与KeyRemap4MacBook结合使用,以重新编程 Eject 键。稍作调整后,我设置为切换 AirPort Wifi。
这些实用程序在重新映射 Mac 键盘时提供了无限的灵活性。玩得开心!
我对这里的任何答案都不满意,于是开始寻找命令行解决方案。
在 macOS Sierra 10.12 中,Apple 为用户引入了一种重新映射键的新方法。
- 无需摆弄系统 GUI
- 不需要特殊特权
- 完全可定制
- 无需安装任何 3rd-party 废话,例如 PCKeyboardHack / Seil / Karabiner / KeyRemap4MacBook / DoubleCommand / NoEjectDelay
如果这对您来说听起来不错,请查看hidutil
.
例如,要将 caps-lock 重新映射为 escape,请参阅key 表,发现 caps-lock 的用法代码为 0x39,而 escape 的用法代码为 0x29。将这些代码或十六进制值 0x700000000 放在源和目标中,如下所示:
hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000039,"HIDKeyboardModifierMappingDst":0x700000029}]}'
您可以在同一命令中添加其他映射。就个人而言,我喜欢将大写锁定重新映射到退格键,并将退格键重新映射为删除:
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
然后执行的文件中:
launchctl load com.ldaws.CapslockBackspace.plist
我唯一知道如何做的就是将 Caps Lock 映射到 Control、Option 或 Command。这可以通过系统偏好设置的键盘和鼠标面板来完成。单击左下角的“修改键”,您将能够将 Caps Lock、Control、Option 和 Command 重新映射到其中的任何一个。
@Craig:这表明 Caps Lock可以用作普通键——即非切换键。在我的 MacBook 上,由于我已将 Caps Lock 重新映射到 Control,因此 Caps Lock 灯永远不会亮起。它的作用就像控制键。
现在使用 macOS Sierra映射Caps Lock密钥要容易得多。Esc
打开系统偏好设置→键盘。
单击右下角的修改键按钮。
单击要重新映射的硬件密钥旁边的下拉框,然后选择 Escape。
单击确定并关闭系统偏好设置。
这是可能的。
解决方案 1
来自TrueAffection.net上的一篇文章。
- 下载 PCKeyboardHack 并安装它。
- 转到系统偏好设置中的 PCKeyboardHack。
- 启用“更改大写锁定”并将密钥代码设置为 53。
解决方案 2
此解决方案不涉及修补键盘驱动程序,而是为您提供 Vim 特定的解决方案。
OS X 支持将 Caps Lock 键映射到一大堆键,但您必须“手动”完成,编辑 .plist 文件。该过程在本文中进行了描述。作为该提示的附录,我建议您首先在系统偏好设置中将 Caps-Lock 设置为 None,然后您只需要更改 .plist 文件中的一个值。此外,您当然可以使用属性列表编辑器来代替 XML 转换步骤。
诀窍是将 Caps Lock 键映射到 Help 键(代码 6),这在大多数键盘上都没有。但如果是,它将被视为插入键,您可能不会使用它,因为您询问重新映射 Caps Lock 以防止伸手;)
然后,您可以将帮助和Insert密钥映射到Escvim 中。
map <Help> <Esc>
map! <Help> <Esc>
map <Insert> <Esc>
map! <Insert> <Esc>
这适用于 gvim (Vim.app)。我没有让它在终端中与 vim 一起工作,我还没有用 MacVim 测试它。
因此,这是一个相当复杂的、半生不熟的解决方案或安装第三方黑客。你的选择;)
编辑:刚刚注意到解决方案 3,如果您使用的是MacVim,您可以使用Ctrl,Option和Commandas Esc。使用 System Preferences 将 Caps Lock 映射到其中一个键是微不足道的。
Seil 在 macOS Sierra(10.12 测试版)上尚不可用。因此,我一直在使用具有以下设置的键盘大师:
归功于此 github 评论:https ://github.com/tekezo/Seil/issues/68#issuecomment-230131664
在尝试了其中几种解决方案后,我有一些注意事项:
DoubleCommand不允许您交换 esc 和 caps-lock。
PCKeyboardHack 将允许您映射 capslock 以逃避,但无法将转义映射到大写锁定. 最近的版本将允许您通过编辑两个键来执行完整的交换。
这可能足以满足您的需求,也可能不足以满足您的需求(我知道它适合我的)。
如果您不想安装第三方应用程序并且您真的只关心 iTerm 中的 vim,则可以使用以下方法:
如此处所述,将 CapsLock 重新映射到帮助。
短版:使用 plutil 或类似的 edit ~/Library/Preferences/ByHost/.GlobalPreferences*.plist
,它应该看起来像这样:
<key>HIDKeyboardModifierMappingDst</key>
<integer>6</integer>
<key>HIDKeyboardModifierMappingSrc</key>
<integer>0</integer>
重新开始!一个简单的注销和登录对我不起作用。
在 iTerm 中,为 Help 添加一个新的键映射:发送十六进制代码 0x1b,对应 Escape。
我知道这并不完全是所要求的,但我认为许多人寻找这样的解决方案的意图实际上是这个更专业的变体。
为了使用 PCKeyboardHack 和 KeyRemap4MacBook 将转义键与大写锁定键(不仅仅是映射到另一个)实际交换,您必须按照此线程中的说明,将大写锁定键映射到未使用的键码键盘,但由 KeyRemap4MacBook(例如 110)占。然后,在PCKeyBoardHack中,选择适当的选项,该选项映射要逃脱的密钥代码(在110的情况下,是“逃脱的应用程序密钥”)。这是您的 KeyRemap4MacBook 首选项的外观(前提是您选择了“仅显示启用”复选框)。
打开键盘首选项并单击修饰键...您可以将大写锁定键更改为控制、选项、转义或命令。
Seil 还不能在 macOS Sierra 上运行,所以我使用的是Karabiner Elements,从https://pqrs.org/latest/karabiner-elements-latest.dmg下载。
使用 GUI 或将以下内容放入~/.karabiner.d/configuration/karabiner.json
:
{
"profiles" : [
{
"name" : "Default profile",
"selected" : true,
"simple_modifications" : {
"caps_lock" : "escape"
}
}
]
}
您还可以使用 DoubleCommand 重新映射此键和其他键。
IIRC,它将 Caps Lock 映射到 Esc。
Karabiner-Elements 一个强大而稳定的 macOS 键盘定制器。(免费软件)
https://pqrs.org/osx/karabiner/index.html
为我工作,为 Mojave 将大写锁定更改为退格键