我正在尝试编写一个脚本来复制我的 OS X 设置。特别是我想将箭头键重新映射到CMD+ H、J、K、L。
该技术似乎与此类似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
。