我如何使大写锁定工作像Esc在Mac OS X?


当前回答

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"
      }
    }
  ]
}

其他回答

我知道怎么做的唯一一件事是将大写锁定映射到控制,或选项,或命令。这可以通过系统首选项的键盘和鼠标面板来完成。点击左下角的“修改键”,你就可以将“大写锁定”、“控制”、“选项”和“命令”重新映射到其中任何一个。

@Craig: 这表明,Caps Lock可以用作普通的(即非切换键)键。在我的MacBook上,由于我将“Caps Lock”重新映射为“Control”,“Caps Lock”指示灯就再也亮不起来了。它就像Control键一样。

In order to actually swap the escape key with the caps lock key (not just map one to the other) using both PCKeyboardHack and KeyRemap4MacBook, you have to follow the instructions in this thread, mapping the caps lock key to a keycode not used by the keyboard but accounted for by KeyRemap4MacBook (eg. 110). Then, in PCKeyboardHack, select the appropriate option that maps that keycode to escape (in the case of 110, it's "Application Key to Escape"). Here's what your KeyRemap4MacBook preferences should look like (provided you've selected the "show enabled only" checkbox).

我最初试图发布这个信息作为cwd的优秀答案的编辑,但它被拒绝了。我鼓励任何想要走我描述的路线的人先读一下他/她的回答。

自macOS 10.12.1以来,可以将Caps Lock重新映射为Esc本机(Apple > System Settings…> Keyboard > Keyboard Shortcuts > Modifier Keys in macOS 13,或之前的System Preferences -> Keyboard -> Modifier Keys)。

打开键盘首选项,点击修改键…您可以将大写锁定键更改为控制、选项、转义或命令。

我对这里的任何答案都不满意,于是开始寻找命令行解决方案。

在macOS Sierra 10.12版本中,苹果为用户引入了一种重新映射按键的新方式。

不需要摆弄系统gui 不需要特殊权限 完全可定制的 不需要安装任何第三方的垃圾,如PCKeyboardHack / Seil / Karabiner / KeyRemap4MacBook / DoubleCommand / NoEjectDelay

如果这听起来不错,看看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. ldws . capslockbackspace的文件中。Plist然后执行:

launchctl load com.ldaws.CapslockBackspace.plist