关于macos:在Mac OS X中使用Caps Lock作为Esc

Using Caps Lock as Esc in Mac OS X

如何让Caps Lock在Mac OS X中像Esc一样工作?


编辑:如本回答所述,较新版本的MacOS现在支持将Caps Lock重新绑定到Escape。因此,不再需要安装第三方软件来实现此目的。

这是我尝试使用Seil(以前称为PCKeyboardHack)实现此目的的全面,直观的回答(带链接)。

  • 首先,进入系统偏好设置,选择键盘,然后选择键盘选项卡(第一个选项卡),然后单击修改键:
  • Step 1

    在弹出对话框中,将Caps Lock Key设置为No Action

    choose no action

    2)现在,点击这里下载Seil并安装它:

    3)安装完成后,您将安装一个新的应用程序(Mountain Lion和更新版本),如果您使用的是较旧的操作系统,则可能需要检查新的"系统偏好设置"窗格:

    open seil or the preference pane

    4)选中"更改大写锁定"框并输入"53"作为转义键的代码:

    set the keyboard code

    而且你已经完成了!如果它不能立即工作,您可能需要重新启动计算机。

    印象深刻?想要更多控制?

    您可能还想查看KeyRemap4MacBook,它实际上是pqrs.org的旗舰键盘重映射工具 - 它也是免费的。

    如果你喜欢这些工具,你可以捐款。我与他们没有任何关系,但我已经使用这些工具很长一段时间了,不得不说那边的人一直做得很好,维护这些,增加功能和修复bug。

    这是一个屏幕截图,显示了一些(数百个)预选选项:

    Picture 1.png

    PQRS还有一个名为NoEjectDelay的实用程序,您可以将其与KeyRemap4MacBook结合使用,以重新编程Eject键。稍作调整之后我就开始拨打AirPort Wifi。

    重新映射Mac键盘时,这些实用程序提供无限的灵活性。玩得开心!


    从macOS 10.12.1开始,可以将Caps Lock本地重新映射到Esc(系统偏好设置 - >键盘 - >修改键)。

    enter image description here


    这是可能的。

    解决方案1

    来自TrueAffection.net上的arcticle。

    • Download PCKeyboardHack and install it.
    • Go to PCKeyboardHack in System Preferences.
    • Enable ‘Change Caps Lock’ and set the keycode to 53.

    解决方案2

    此解决方案不涉及修补键盘驱动程序,但为您提供Vim特定的解决方案。

    OS X支持将Caps Lock键映射到一大堆键,但您必须"手动",编辑.plist文件。本文描述了该过程。作为该提示的补充,我建议您首先在系统偏好设置中将Caps-Lock设置为无,然后您只需要更改.plist文件中的一个值。此外,您当然可以使用属性列表编辑器,而不是通过XML转换步骤。

    诀窍是将Caps Lock键映射到帮助键(代码6),这不在大多数键盘上。但如果它是,它将被视为插入键,你可能不会使用它,因为你要求重新映射你的大写锁定以防止伸出你的手;)

    然后,您可以将帮助和Insert键映射到vim中的Esc

    1
    2
    3
    4
    map  <Help> <Esc>
    map! <Help> <Esc>
    map  <Insert> <Esc>
    map! <Insert> <Esc>

    这适用于gvim(Vim.app)。我没有让它与终端中的vim一起工作,我没有用MacVim测试它。

    因此,它是一个复杂的,半生不熟的解决方案或安装第三方hackery。你的选择;)

    编辑:刚刚注意到解决方案3,如果你使用MacVim,你可以使用CtrlOptionCommand作为Esc。使用"系统偏好设置",将Caps Lock映射到其中一个键非常简单。


    现在使用macOS Sierra将Caps Lock键映射到Esc要容易得多。

  • 打开系统首选项→键盘。

  • 单击右下角的"修改键"按钮。

  • 单击要重新映射的硬件密钥旁边的下拉框,然后选择Escape。

  • 单击确定并关闭系统偏好设置。

  • enter image description here

    No hardware Escape key on new MacBook Pros? Don’t fret, macOS Sierra lets you remap the Escape action to a modifier key


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

    在macOS Sierra 10.12中,Apple为用户重新映射密钥引入了一种新方法。

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

    如果这听起来不错,请看一下hidutil

    例如,要重新映射大写锁定以转义,请参阅密钥表并查找大写锁定使用代码0x39并且转义具有使用代码0x29。将这些代码或十六进制值0x700000000放入源代码中,并按以下方式设置:

    1
    hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000039,"HIDKeyboardModifierMappingDst":0x700000029}]}'

    您可以在同一命令中添加其他映射。就个人而言,我喜欢将大写字母重新映射到退格键,并重新映射退格键以删除:

    1
    hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000039,"HIDKeyboardModifierMappingDst":0x70000002A}, {"HIDKeyboardModifierMappingSrc":0x70000002A,"HIDKeyboardModifierMappingDst":0x70000004C}]}'

    要查看当前映射:

    1
    hidutil property --get"UserKeyMapping"

    系统重启时您的更改将丢失。如果您希望它们持久化,请将它们放在脚本中并设置登录钩子:

    1
    sudo defaults write com.apple.loginwindow LoginHook /path/to/login_script.sh


    我知道怎么做才能将Caps Lock映射到Control,或Option或Command。这可以通过键盘和键盘完成。系统偏好设置的鼠标窗格。单击左下方的"修改键",您将能够将大写锁定,控制,选项和命令重新映射到其中任何一个。

    @Craig:
    这表明Caps Lock可以用作普通键 - 即非切换键。在我的MacBook上,由于我已将Caps Lock重新映射到Control,因此Caps Lock指示灯从不亮起。它只是像Control键一样。

    enter image description here


    在macOS Sierra(10.12测试版)上尚未提供Seil。因此,我一直在使用Keyboard Maestro这些设置:enter image description here

    感谢这个github评论:https://github.com/tekezo/Seil/issues/68#issuecomment-230131664


    尝试过这些解决方案后,我有一些注意事项:

    DoubleCommand不允许你交换esc和大写锁定。

    PCKeyboardHack将允许您将capslock映射到escape,但是没有能力将escape映射到capslock 。最新版本允许您通过编辑两个键来执行完整交换。

    这可能或可能不足以满足您的需求(我知道这是我的需要)。


    如果您不想安装第三方应用程序并且您真的只关心iTerm中的vim,则以下工作:

    如此处所述,将CapsLock重新映射到帮助。

    短版本:使用plutil或类似编辑~/Library/Preferences/ByHost/.GlobalPreferences*.plist,它看起来应该类似于:

    1
    2
    3
    4
    <key>HIDKeyboardModifierMappingDst</key>
    <integer>6</integer>
    <key>HIDKeyboardModifierMappingSrc</key>
    <integer>0</integer>

    重新开始!简单的注销和登录对我来说不起作用。

    在iTerm中,为Help添加一个新的键映射:发送十六进制代码0x1b,它对应于Escape。

    我知道这不是所要求的,但我认为很多人寻找这样的解决方案的意图实际上是这种更专业的变体。


    为了使用PCKeyboardHack和KeyRemap4MacBook实际将转义密钥与大写锁定密钥(不仅仅是映射到另一个)交换,您必须按照此线程中的说明,将大写锁定键映射到未使用的密钥代码。键盘,但由KeyRemap4MacBook(例如110)占。然后,在PCKeyboardHack中,选择映射该键代码以逃避的适当选项(在110的情况下,它是"逃脱的应用程序密钥")。以下是KeyRemap4MacBook首选项的外观(假设您已选中"仅启用显示"复选框)。

    enter image description here

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


    Seil在macOS Sierra上不起作用,所以我使用Karabiner Elements,从https://pqrs.org/latest/karabiner-elements-latest.dmg下载。

    使用GUI或将以下内容放入~/.karabiner.d/configuration/karabiner.json

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    {
     "profiles" : [
        {
         "name" :"Default profile",
         "selected" : true,
         "simple_modifications" : {
           "caps_lock" :"escape"
          }
        }
      ]
    }


    您还可以使用DoubleCommand重新映射此键和其他键。

    IIRC,它将把Caps Lock映射到Esc。


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

    enter image description here