在Mac OS X中将Caps Lock用作Esc


448

如何Caps LockEscMac OS X 那样进行工作?


31
对于使用vim的程序员来说,这似乎是一项标准任务。因此,我重新投票开始
杰里米·安格利姆(Jeromy Anglim)2013年

4
另一种方法是映射大写锁定到控制(系统预置>键盘>修饰键),并执行换码序列Ctrl + [esc。对Vim有用。
thelostspore

2
适用于macOS Sierra的本机解决方案:stackoverflow.com/a/41004544/1940276
Kevin Roth

1
在塞拉利昂的MacOS本机工作的解决方案是第二个最好的答案在这里(从@rkusa)
玛丽安·塞尔尼

关于“与众不同”的相关问题:如何将Caps Lock重新映射到Escape和Control?
joeytwiddle

Answers:


394

编辑:正如在描述这个答案,MacOS的较新版本现在已经重新绑定原生支持Caps LockEscape。因此,不再需要安装第三方软件来实现此目的。


这是我针对如何使用Seil(以前称为PCKeyboardHack)实现此目标的全面,直观的逐步解答(带有链接)的尝试。

  1. 首先,进入“ 系统偏好设置”,选择“ 键盘”,然后选择“ 键盘”选项卡(第一个选项卡),然后单击“ 修饰键”

步骤1

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

选择不采取行动

2)现在,单击此处下载Seil并安装它:

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

打开seil或首选项窗格

4)选中“更改大写锁定”框,然后输入“ 53”作为退出键的代码:

设置键盘代码

大功告成!如果无法立即运行,则可能需要重新启动计算机。

印象深刻?需要更多控制权吗?

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

如果您喜欢这些工具,可以捐款。我与他们没有任何关系,但是我已经使用这些工具很长时间了,不得不说那里的人在维护这些工具,添加功能和修复错误方面做得很出色。

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

图片1.png

PQRS还具有一个名为NoEjectDelay的实用程序,您可以将其与KeyRemap4MacBook结合使用以对Eject密钥进行重新编程。稍作调整后,我将其设置为切换AirPort Wifi。

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


3
我想澄清的是,我近两年来一直在单独使用PCKeyboardHack 而没有 KeyRemap4Macbook。
rossipedia 2011年

13
请注意,如果您使用外接键盘,则应为每个键盘重复第一步(即,大写锁定=不执行任何操作)。我没有为外接键盘执行此步骤,因此由于意外的大写锁定保护功能,大写锁定对快速的按键操作没有响应。superuser.com/questions/317900/eliminate-macbook-capslock-delay
Jeromy Anglim

11
很棒的教程。我将Caps Lock映射到Esc大约一年了。这非常有效。但是,有一天,我正在与一位高级开发人员结对。我告诉他我用Vim做主编辑。我也是,他说。他打开机器,我们开始工作。轮到我来编辑代码时,我摸索着跳了一下,因为他的Caps Lock没有被映射。我一直在尝试直到Esc,但是我偶尔会碰到Caps,然后我的常规命令会改变。他教我Ctrl-c也会使您回到可视模式。帮个忙,开始使用Ctrl-c。
campeterson 2013年

7
(每天学习更多)CTRL-[实际上等同于ESC。stackoverflow.com/questions/5030164/...
campeterson

5
如果您还可以编辑并在顶部提到,这已经是macOS 10.12.1中每个@rkusa的答案的功能,那就太好了,这样新用户就不必下载第三方软件
edhurtig

309

由于MACOS 10.12.1就可以重新映射Caps LockEsc本地(系统偏好设置- >键盘- >修饰键)。

在此处输入图片说明


11
太棒了!在听到新的MBP没有转义键后,我发现了这一点。看起来苹果公司预期会有反弹。
Andy E

1
运行El Capitan 10.11.6,此设置已可用。
Zool

1
感谢上帝!塞拉(Sierra)打破Seil / Karabiner后,我以为我注定要失败。
菲利普

4
奇怪的是,我使用的是10.11.6,没有此选项。我只允许将esc重新映射为caps,ctrl,opt或command。我的WASD键盘v2确实如此。
Benny Powers

1
有什么办法可以通过命令行来做到这一点?也许以类似于这些的方法?github.com/herrbischoff/awesome-osx-command-line#keyboard
Jordan Eldredge

40

我对这里的任何答案都不满意,因此一直在寻找命令行解决方案

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

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

如果对您来说听起来不错,请看一下hidutil

例如,要重新映射大写锁定以转义,请参考密钥表,并发现大写锁定的用法代码为0x39,而转义的用法代码为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"

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

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

3
+!这是在macOS上重新映射密钥的现代而正确的方法
Fanckush

2
Karabiner 关于重复键问题使我不得不寻找用于键重新映射的本机解决方案。apple.stackexchange.com上的这篇文章和另一篇文章对我们有很大帮助。
CHB

谢谢您,+ 1!我在Apple帖子中添加了一些切线注释,希望这些注释为那些不想使用Esc键但不使用Caps Lock的穷人增加了一些价值。
Tripleee

内置键盘有问题的MacBook的绝佳方法。我的键盘设置有问题,因此我无法在其中重新映射任何键。
伊戈尔(Igor)

我无法使用该LoginHook方法正常运行-我猜可能是它执行后为我的斯堪的纳维亚键盘选择了本地键盘设置吗?无论如何,stackoverflow.com/a/ 22872222/ 874188注意到LoginHook已弃用,并主张launchd改为使用。
Tripleee

34

这是可能的。

解决方案1

一个arcticle上TrueAffection.net。

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

解决方案2

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

OS X支持将Caps Lock键映射到一大堆键,但是您必须“手动”编辑.plist文件。本文介绍了该过程。作为该提示的附录,我建议您首先在“系统偏好设置”中将Caps-Lock设置为“无”,然后只需更改.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可以使用CtrlOption并且Command作为Esc。使用“系统偏好设置”可以轻松地将Caps Lock映射到这些键之一。


1
解决方案3:如何在MacVim中将Ctrl,Option或Command用作Esc?我在首选项中找不到此设置。
clizzin 2011年

您可以在系统偏好设置=>键盘中映射它。
maletor 2011年

9
您暗示的暗示在哪里?
马修·辛克尔

2
Maletor-那里没有地方告诉macvim使用控制作为转义
Scott Schulthess11年

1
@MatthewSchinckel这里是一个这样的链接:hints.macworld.com/article.php?story=20060825072451882
Ben


29

我唯一知道的方法是将Caps Lock映射到Control,Option或Command。这可以通过“系统偏好设置”的“键盘和鼠标”面板来完成。单击左下角的“修改键”,您将能够将Caps Lock,Control,Option和Command重新映射到其中的任何一个。

@Craig:这表明可以将Caps Lock 用作普通键(即非切换键)。在MacBook上,由于我已重新将Caps Lock映射到Control,因此Caps Lock灯永远不会点亮。它就像控制键一样。

在此处输入图片说明



1
遗憾的是没有Logitech键盘,因此CapsLock上没有转义键,没有vim ==我正在返回键盘
Enric Ribas

14

Seil尚未在macOS Sierra(10.12 beta)上可用。因此,我一直在使用Keyboard Maestro进行以下设置:在此处输入图片说明

归功于这个github评论:https : //github.com/tekezo/Seil/issues/68#issuecomment-230131664


2
我正在使用github.com/tekezo/Karabiner-Elements(可在Sierra上运行)。到目前为止效果很好,尽管我希望它做到了“ Control_L到Control_L(+,仅当您键入Control_L时,发送Escape)”
atomkirk

1
@atomkirk您介意共享您使用的Karabiner JSON配置吗?
LandonSchropp

1
{“ profiles”:[{“ name”:“默认profile”,“ selected”:true,“ simple_modifications”:{“ caps_lock”:“ escape”}}]}
atomkirk


Karabiner用atomikrk的JSON为我完成了窍门。尽管上面有屏幕截图,但Keyboard Maestro UI还是一团糟,我无法对其进行配置。
保罗

10

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

DoubleCommand不会让你掉ESC和大写锁定。

PCKeyboardHack 允许您映射大写锁定以逃脱,但没有将转义映射到大写锁定的功能。最新版本允许您通过编辑两个键来执行完全交换。

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


1
PCKeyboardHack不允许您将转义映射到capslock,但随附的应用程序KeyRemap4MacBook可以。它使您可以将“转义到CapsLock”和“ Shift +转义到CapsLock”。
罗里·奥肯

9

如果您不想安装第三方应用程序,而您实际上只关心iTerm内的vim,可以使用以下方法:

重映射的CapsLock帮助所描述这里

简短版本:使用plutil或类似的东西进行编辑~/Library/Preferences/ByHost/.GlobalPreferences*.plist,它应该类似于以下内容:

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

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

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

我知道这并不是所要的,但我认为许多人正在寻找这样的解决方案,实际上是这个更专业的变体。


4

为了使用PCKeyboardHack和KeyRemap4MacBook实际上将大写锁定键与大写锁定键交换(而不仅仅是映射到另一个),您必须遵循该线程中的说明,将大写锁定键映射到键盘上未使用的键码。键盘,但由KeyRemap4MacBook(例如110)占。然后,在PCKeyboardHack中,选择适当的选项以映射该键码以进行转义(在110的情况下,它是“要转义的应用程序键”)。这是KeyRemap4MacBook首选项的外观(假设您已选中“仅启用显示”复选框)。

在此处输入图片说明

我最初试图发布此信息,作为cwd出色答案的修改,但遭到拒绝。我鼓励任何想走我描述的路线的人先阅读他/她的回答。




0

打开键盘偏好设置,然后单击修改键...。您可以将大写锁定键更改为控制,选项,转义或命令。

在此处输入图片说明


9
发布者询问的都不是“ Esc”。可能用于Vim。
拉菲·雅各比

1
@RafiJacoby Esc和之间有什么区别Escape?(严重问题)
byxor

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.