Answers:
改变喜好和跑步, defaults -currentHost read -g
显示正在编写的更改。我打算写一个简短的bash脚本来自动化它,但看起来我被击败了:
#!/bin/bash
mappingplist=com.apple.keyboard.modifiermapping
if [ $1 == "emacs" ]; then
echo "Switching to emacs modifiers"
defaults -currentHost write -g $mappingplist '(
{
HIDKeyboardModifierMappingDst = 4;
HIDKeyboardModifierMappingSrc = 2; },
{
HIDKeyboardModifierMappingDst = 12;
HIDKeyboardModifierMappingSrc = 10;
},
{
HIDKeyboardModifierMappingDst = 2;
HIDKeyboardModifierMappingSrc = 4;
},
{
HIDKeyboardModifierMappingDst = 10;
HIDKeyboardModifierMappingSrc = 12;
})'
else
echo "Switching to default modifiers"
defaults -currentHost delete -g $mappingplist
fi
该脚本采用一个参数,如果是 参数是emacs,然后它交换 命令和控制,如果参数 是它还原的任何东西 默认值。
-g
国旗吗?我没有在手册页中看到 defaults
。此外,这看起来像是交换两组值:4表示2,10表示12,但只有两个修饰符可以更改。你能详细说明一下,或者只看输出但不知道它们实际代表什么? (起初我怀疑有四个密钥代码 - 左边两个,右边两个 - 但它们似乎不是密钥代码,至少不是键盘驱动程序报告的。)
您可以使用 KeyRemap4MacBook 随着 PCKeyBoardHack 。它还允许您在任何Mac应用程序中使用Emacs键,包括不使用Cocoa的应用程序,如MS应用程序。
defaults -currentHost write -g com.apple.keyboard.modifiermapping.1133-50475-0 -array '<dict><key>HIDKeyboardModifierMappingSrc</key><integer>0</integer><key>HIDKeyboardModifierMappingDst</key><integer>2</integer></dict>
更改 1133
和 50475
到显示的供应商和产品ID ioreg -n IOHIDKeyboard -r
。 src 0
和 dst -1
会禁用 大写锁定 。
defaults -currentHost write -g
修改:
~/Library/Preferences/ByHost/.GlobalPreferences.*.plist
您必须注销并重新申请更改。如果值是字符串(如@pithyless的答案),则更改将显示在“系统偏好设置”中,但它们没有任何效果。
键的值 :
-1 none
0 caps lock
1 left shift
2 left control
3 left option
4 left command
5 keypad 0
6 help
9 right shift
10 right control
11 right option
12 right command
结合几个答案我想出了这个似乎有效的脚本( 将Caps-lock映射到Control )。
$ keyboard_id = "$(ioreg -n IOHIDKeyboard -r | grep -e VendorID\" -e ProductID | tr -d \"\|[:blank:] | cut -d\= -f2 | tr '\n' -)"
$ defaults -currentHost write -g "com.apple.keyboard.modifiermapping.${keyboard_id}0" '(
{
HIDKeyboardModifierMappingDst = 2;
HIDKeyboardModifierMappingSrc = 0;
})'
唯一的问题是它似乎没有任何影响...... :(
我会更新,如果我得到它的工作。
我想换掉 正确的命令 同 正确的选择 只有钥匙。
当我设置全局 命令 和 选项 交换系统偏好设置...&gt;键盘&gt;修改键......,系统中有以下配置(按预期工作):
$ defaults -currentHost read -g com.apple.keyboard.modifiermapping.1452-591-0
(
{
HIDKeyboardModifierMappingDst = 30064771299;
HIDKeyboardModifierMappingSrc = 30064771298;
},
{
HIDKeyboardModifierMappingDst = 30064771303;
HIDKeyboardModifierMappingSrc = 30064771302;
},
{
HIDKeyboardModifierMappingDst = 30064771298;
HIDKeyboardModifierMappingSrc = 30064771299;
},
{
HIDKeyboardModifierMappingDst = 30064771302;
HIDKeyboardModifierMappingSrc = 30064771303;
}
)
但是当我修改它时,只能交换 对 如下所示 - 它不起作用:
$ defaults -currentHost write -g com.apple.keyboard.modifiermapping.1452-591-0 '(
{
HIDKeyboardModifierMappingDst = 30064771303;
HIDKeyboardModifierMappingSrc = 30064771302;
},
{
HIDKeyboardModifierMappingDst = 30064771302;
HIDKeyboardModifierMappingSrc = 30064771303;
}
)'
这是因为值被写为字符串而不是整数。您可以看到使用:
$ plutil -convert xml1 -o - ~/Library/Preferences/ByHost/.GlobalPreferences.*.plist
<?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">
<plist version="1.0">
<dict>
<key>com.apple.keyboard.modifiermapping.1452-591-0</key>
<array>
<dict>
<key>HIDKeyboardModifierMappingDst</key>
<string>30064771303</string>
<key>HIDKeyboardModifierMappingSrc</key>
<string>30064771302</string>
</dict>
<dict>
<key>HIDKeyboardModifierMappingDst</key>
<string>30064771302</string>
<key>HIDKeyboardModifierMappingSrc</key>
<string>30064771303</string>
</dict>
</array>
</dict>
</plist>
因此,更新设置的正确方法是使用XML格式:
$ defaults -currentHost write -g com.apple.keyboard.modifiermapping.1452-591-0 -array \
'<dict>
<key>HIDKeyboardModifierMappingDst</key>
<integer>30064771303</integer>
<key>HIDKeyboardModifierMappingSrc</key>
<integer>30064771302</integer>
</dict>' \
'<dict>
<key>HIDKeyboardModifierMappingDst</key>
<integer>30064771302</integer>
<key>HIDKeyboardModifierMappingSrc</key>
<integer>30064771303</integer>
</dict>'
最后,您必须注销并再次登录。