如何在不使用第三方程序的情况下重新映射我的 OSX 键盘?

Posted

技术标签:

【中文标题】如何在不使用第三方程序的情况下重新映射我的 OSX 键盘?【英文标题】:How can I remap my OSX keyboard without using third-party programs? 【发布时间】:2016-12-08 12:02:26 【问题描述】:

我目前正在使用 Seil 重新映射大写锁定以在 OSX 10.11 上转义。每当我检查 htop 只是为了查看当系统没有做太多任何事情时(程序打开但没有做太多处理)时正在运行的东西,Seil 总是在那里并且它的 cpu 和内存使用波动。这可能没什么大不了的,但考虑到我只将 vim 用于偶尔的纯文本文件,不得不总是运行这个东西感觉很疯狂。我不想每次使用 vim 时都必须启动 Seil。我最好的选择是禁用大写锁定并将桥接物理连接到转义键吗? Vim 是 OSX 的标准配置,如果不将逃逸重新映射到某些东西就无法使用,所以我认为这会出现,而不是依赖其他人为其制作应用程序。

【问题讨论】:

你有 xmodmap 吗?我不知道这是否适用于 OS X。 @yellowantphil 除非它带有你必须安装的所有 xcode 东西才能让一堆 *nix 东西工作。我还没有听说过,所以我将不得不四处阅读。我只是想可能改变 vim (插件?)以使用大写锁定(或其他东西)作为转义。穿鞋总比穿皮衣之类的好,但我不确定这是否可行。 特别是对于 vim,您还可以使用 Ctrl-] - 或者此列表中有更多想法:vim.wikia.com/wiki/Avoid_the_escape_key 【参考方案1】:

将大写锁定重新映射到控件

您可以将 caps lock 键重新映射到键盘设置中的 control 键(单击 Modifier Keys 按钮)。

在 vim 中,esc 的别名是 control-[,这比使用 esc 键。

在 Vim 中重新映射 Caps Lock 以转义

导航到主文件夹下的Library/Preferences/ByHost 目录

cd ~/Library/Preferences/ByHost

识别隐藏的属性列表文件

ls -a | grep Global

将其分配给一个shell变量,以便以后引用

pfile=$(ls -a | grep Global)

确保新创建的变量pfile 具有正确的值。它应该看起来像这样:.GlobalPreferences.7D7C488E-0E83-5562-B58B-011C540890F3.plist

echo $pfile

进行备份以防万一出现严重错误

cp $pfile,.bak

将pfile复制到主目录并转换为xml

cp $pfile ~/keys-binary.plist
plutil -convert xml1 -o ~/keys-xml.plist ~/keys-binary.plist

打开文件并搜索文本HIDKeyboardModifierMappingSrcHIDKeyboardModifierMappingDst。将HIDKeyboardModifierMappingDstinteger标签之间的值设置为5,HIDKeyboardModifierMappingSrc下设置为0,如下所示。

 <key>com.apple.keyboard.modifiermapping.1452-588-0</key>
 <array>
     <dict>
         <key>HIDKeyboardModifierMappingDst</key>
         <integer>5</integer>
         <key>HIDKeyboardModifierMappingSrc</key>
         <integer>0</integer>
     </dict>
 </array>

保存,然后转换回二进制文件

plutil -convert binary1 -o ~/keys-binary.plist ~/keys-xml.plist

最后,将此文件复制回ByHost目录,替换掉原来的文件。

您需要在更改生效之前退出并重新登录。重新登录后,将以下行添加到您的 .vimrc

noremap  <Esc>Op <Esc>
noremap! <Esc>Op <Esc>

如果您在终端中打开 vim,这将起作用。如果您使用的是 gvim,请尝试 Solution 2 by eelco,我在撰写这篇文章时引用了它,并使用了几个不同的映射使其在终端中工作。

另请注意,要使其正常工作,必须选中终端首选项中的允许 VT100 应用程序键盘模式选项。

【讨论】:

这对大多数人来说是一个不错的选择,但我右手小指和无名指的掌骨已经折断并且无法正常愈合。我试图限制它们的使用,并且 escape 很容易成为 vim 中除了空间之外最常用的键。我最初应该更努力地搜索并找到这个:***.com/questions/30308192/… 哇!这正是我想做的!我很感激你为此付出的努力!完美运行!

以上是关于如何在不使用第三方程序的情况下重新映射我的 OSX 键盘?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不重新加载页面的情况下重新启动 Angular 应用程序?

如何在不使用第三方的情况下以编程方式从 Chase 下载我的银行交易?

如何在不使用数据库的情况下重新实例化动态 ASP.NET 用户控件?

如何在不重新加载 vue.js 页面的情况下翻译应用程序?

是否可以在不重新启动 JSF 中的服务器的情况下更新应用程序?

如何在不丢失当前页面的情况下重绘数据表