在 Mac OS X 中通过命令行重新映射键

在 Mac OS X 中通过命令行重新映射键

我正在尝试编写一个脚本来复制我的 OS X 设置。特别是我想将箭头键重新映射到CMD+ HJKL

该技术似乎与此类似Linux 解决方案,除了要修改的密钥文件位于/usr/X11/share/X11/xkb/symbols/us。但它并没有真正按预期工作,似乎正在映射选项密钥。

如何在 OS X 中通过命令行重新映射按键?

答案1

应用程序特定的键盘快捷键(例如来自系统偏好设置的键盘快捷键)存储在相应应用程序的偏好设置文件中的/Users/username/Library/Preferences/顶层NSUserKeyEquivalents键中。

可以使用命令行上的/usr/libexec/PlistBuddy和程序读取和写入这些文件。defaults

$ defaults read com.apple.Automator NSUserKeyEquivalents
{
    "Hide Library" = "@$l";
    "Show Library" = "@$l";
}
$ defaults write com.apple.Terminal NSUserKeyEquivalents -dict-add "About Terminal" '^@$a'

符号及其含义:

  • @Command
  • $Shift
  • ^Control
  • ~Option

此外,您可以简单地将这些文件复制到其他机器上,以便随身携带您的用户偏好设置。

答案2

使用KeyRemap4MacBook,你可以将其保存为私有文件

<?xml version="1.0"?>
<root>
<item>
<name>test</name>
<identifier>private.test</identifier>
<autogen>--KeyToKey-- KeyCode::H, VK_COMMAND | ModifierFlag::NONE, KeyCode::CURSOR_LEFT</autogen>
<autogen>--KeyToKey-- KeyCode::H, VK_COMMAND | VK_SHIFT | ModifierFlag::NONE, KeyCode::CURSOR_LEFT, ModifierFlag::SHIFT_L</autogen>
<autogen>--KeyToKey-- KeyCode::J, VK_COMMAND | ModifierFlag::NONE, KeyCode::CURSOR_DOWN</autogen>
<autogen>--KeyToKey-- KeyCode::J, VK_COMMAND | VK_SHIFT | ModifierFlag::NONE, KeyCode::CURSOR_DOWN, ModifierFlag::SHIFT_L</autogen>
<autogen>--KeyToKey-- KeyCode::K, VK_COMMAND | ModifierFlag::NONE, KeyCode::CURSOR_UP</autogen>
<autogen>--KeyToKey-- KeyCode::K, VK_COMMAND | VK_SHIFT | ModifierFlag::NONE, KeyCode::CURSOR_UP, ModifierFlag::SHIFT_L</autogen>
<autogen>--KeyToKey-- KeyCode::L, VK_COMMAND | ModifierFlag::NONE, KeyCode::CURSOR_RIGHT</autogen>
<autogen>--KeyToKey-- KeyCode::L, VK_COMMAND | VK_SHIFT | ModifierFlag::NONE, KeyCode::CURSOR_RIGHT, ModifierFlag::SHIFT_L</autogen>
</item>
</root>

省略 | ModifierFlag::NONE也会改变,例如 ⌥⌘H 变成 ←。

请参阅来源键码常量预定义设置

如果您想要完全自动化配置,您可以使用 启用该设置/Library/org.pqrs/KeyRemap4MacBook/app/KeyRemap4MacBook_cli.app/Contents/MacOS/KeyRemap4MacBook_cli enable private.test

相关内容