繁体   English   中英

在 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 )实现这一目标的全面、直观的PCKeyboardHack答案(带有链接)的PCKeyboardHack

  1. 首先,进入System Preferences ,选择Keyboard ,然后选择Keyboard Tab (第一个选项卡),然后单击Modifier Keys

第1步

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

选择不采取行动

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

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

打开 seil 或首选项窗格

4) 选中“Change Caps Lock”框并输入“53”作为转义键的代码:

设置键盘代码

你完成了! 如果它不能立即工作,您可能需要重新启动机器。

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

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

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

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

图1.png

PQRS 还有一个很棒的实用程序,称为NoEjectDelay ,您可以将它与KeyRemap4MacBook结合使用,以重新编程 Eject 键。 稍作调整后,我已设置为切换 AirPort Wifi。

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

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

在此处输入图片说明

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

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

  • 无需摆弄系统 GUI
  • 不需要特殊权限
  • 完全可定制
  • 无需安装任何第三方垃圾,如 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}]}'

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

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 灯永远不会亮起。 它的作用就像 Control 键一样。

在此处输入图片说明

现在使用 macOS Sierra 将Caps Lock键映射到Esc变得更加容易。

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

  2. 单击右下角的修饰键按钮。

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

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

在此处输入图片说明

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

这是可能的。

解决方案1

一个arcticle上TrueAffection.net。

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

解决方案2

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

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

诀窍是将 Caps Lock 键映射到 Help 键(代码 6),这在大多数键盘上都没有。 但如果是,它将被视为插入键,您可能无论如何都不会使用它,因为您询问重新映射 Caps Lock 以防止伸展您的手 ;)

然后,您可以在 vim 中将 Help 和Insert键映射到Esc

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

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

所以,这是一个相当复杂的、半生不熟的解决方案或安装第三方黑客。 你的选择;)

编辑:刚刚注意到解决方案 3,如果您使用MacVim,您可以使用CtrlOptionCommand作为Esc 使用系统偏好设置将 Caps Lock 映射到这些键之一是微不足道的。

Seil 在 macOS Sierra(10.12 测试版)上尚不可用。 因此,我一直在使用具有以下设置的键盘大师: 在此处输入图片说明

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

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

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

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

这可能足以满足您的需求,也可能不够(我知道它适合我的)。

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

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

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

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

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

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

我知道这并不完全是我们所要求的,但我认为许多寻找此类解决方案的人的意图实际上是这种更专业的变体。

为了使用 PCKeyboardHack 和 KeyRemap4MacBook 将转义键与大写锁定键(不仅仅是将一个映射到另一个)实际交换,您必须按照此线程中的说明,将大写锁定键映射到未使用的键码键盘,但由 KeyRemap4MacBook(例如 110)计算。 然后,在PCKeyboardhack中,选择适当的选项,将该键槽映射到转义(在110的情况下,它是“逃生的”应用程序密钥“)。 这是您的 KeyRemap4MacBook 首选项应该是什么样子(前提是您选择了“仅显示已启用”复选框)。

在此处输入图片说明

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

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

在此处输入图片说明

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 将大写锁定更改为退格

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM