在Mac OS X中使用Caps Lock作为Esc

时间:2008-09-24 14:42:22

标签: macos vim capslock

如何在Mac OS X中使大写锁定 Esc 一样工作?

14 个答案:

答案 0 :(得分:375)

编辑this answer所述,较新版本的MacOS现在支持将大写锁定重新绑定到 Escape 。因此,不再需要安装第三方软件来实现这一目标。


以下是我尝试使用Seil(以前称为PCKeyboardHack)进行全面,直观的回答(带链接)答案。

  1. 首先,进入系统偏好设置,选择键盘,然后选择键盘标签(第一个标签页),然后点击修改器键
  2. Step 1

    在弹出式对话框中,将大写锁定键设置为No Action

    choose no action

    2)现在,click here to download Seil并安装它:

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

    open seil or the preference pane

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

    set the keyboard code

    你已经完成了!如果它不能立即生效,你可能需要重新启动你的机器。

    外加?想要更多控制权?

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

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

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

    Picture 1.png

    PQRS还有一个名为make a donation的强大工具,可以与NoEjectDelay结合使用来重新编程弹出键。经过一些调整后,我已经开始调整AirPort Wifi。

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

答案 1 :(得分:266)

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

enter image description here

答案 2 :(得分:35)

这是可能的。

解决方案1 ​​

来自TrueAffection.net上的an arcticle

  
        
  • 下载PCKeyboardHack并安装它。
  •     
  • 转到系统偏好设置中的PCKeyboardHack。
  •     
  • 启用“更改大写锁定”并将键码设置为53。
  •   

解决方案2

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

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

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

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

map  <Help> <Esc>
map! <Help> <Esc>
map  <Insert> <Esc>
map! <Insert> <Esc>

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

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

编辑:刚刚注意到解决方案3,如果您使用的是MacVim,则可以使用 Ctrl Option Command ESC 。使用“系统偏好设置”,将Caps Lock映射到其中一个键非常简单。

答案 3 :(得分:28)

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

  1. 打开系统偏好设置→键盘。

  2. 单击右下角的“修改键”按钮。

  3. 点击您要重新映射的硬件密钥旁边的下拉框,然后选择Escape。

  4. 单击“确定”并关闭“系统偏好设置”。

  5. enter image description here

    https://9to5mac.com/2016/10/25/remap-escape-key-action-macbook-pro-macos-sierra-10-12-1-modifier-keys/

答案 4 :(得分:20)

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

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

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

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

例如,要重新映射大写锁定以转义,请参阅key table并发现大写锁定使用代码为0x39,并且转义具有使用代码0x29。将这些代码或&#39; d与十六进制值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"

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

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

答案 5 :(得分:17)

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

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

enter image description here

答案 6 :(得分:14)

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

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

答案 7 :(得分:10)

尝试了其中几种解决方案后,我有一些注意事项:

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

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

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

答案 8 :(得分:9)

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

按照here所述,将CapsLock重新映射为帮助。

简短版本:使用plutil或类似代码编辑~/Library/Preferences/ByHost/.GlobalPreferences*.plist,它应该与此类似:

<key>HIDKeyboardModifierMappingDst</key>
<integer>6</integer>
<key>HIDKeyboardModifierMappingSrc</key>
<integer>0</integer>

重新启动!简单的注销和登录对我没有用。

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

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

答案 9 :(得分:4)

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

enter image description here

我最初尝试将此信息as an edit发布到cwd's excellent answer,但遭到拒绝。我鼓励任何想要走我描述的路线的人首先阅读他/她的回应。

答案 10 :(得分:2)

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

答案 11 :(得分:1)

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

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

答案 12 :(得分:0)

Karabiner元素 适用于macOS的功能强大且稳定的键盘定制程序。 (免费软件)

https://pqrs.org/osx/karabiner/index.html

为我工作,为Mojave将大写锁定更改为退格

答案 13 :(得分:-1)

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

enter image description here