我有一台 Mac,键盘上的修饰键从左到右的顺序为:Ctrl、Alt、Super(又名 、Cmd、⌘)Windows-key。我希望顺序改为Ctrl、Super、Alt,因此我已着手重新映射它们。
问题就出在这里,因为我经常连接外接键盘,而外接键盘的按键顺序已经正确。如果我在这里调换按键,结果就会出错。
所以我想专门为苹果键盘重新映射/交换按键。作为替代方案,我很乐意接受仅为笔记本电脑中特定的键盘重新映射按键(而不是自动为所有苹果键盘重新映射按键)。
经过研究,我最终得到一个只起到一半作用的解决方案。
我在登录时运行以下脚本(~/.kde/Autostart/custom-remap.sh
),该脚本仅尝试重新映射我的内部键盘的按键:
#!/bin/bash -e
DIRNAME=$(dirname $0)
# Use xinput to target a specific keyboard only:
APPLE_KEYBOARD_ID=$(
xinput list |
grep 'Apple Internal Keyboard' |
sed -n 's/.*id=\([0-9]\+\).*/\1/p'
)
# Apply mappings from xkb/symbols/custom
# Maps ctrl, win and alt-keys to be in PC standard positions
setxkbmap -device $APPLE_KEYBOARD_ID -print |
sed 's/\(xkb_symbols.*\)"/\1+custom(apple-keyboard-swaps)"/' |
xkbcomp -I$DIRNAME/xkb -i $APPLE_KEYBOARD_ID -synch - $DISPLAY
这依赖于以下文件xkb/symbols/custom
:
xkb_symbols "apple-keyboard-swaps" {
key <LWIN> { [ Alt_L ] };
key <LALT> { [ Super_L ] };
key <RWIN> { [ Alt_R ] };
key <RALT> { [ Control_R ] };
};
这种解决方案有时很有效,有时则没有效果,最近似乎我的系统中出现了一种混合结果:或Alt键都Super无法正常工作,它们似乎同时起到了两者的作用。
“有时”这个定义确实不太准确。重启后我可能会进入任一状态。连接/断开外接键盘可能会触发状态更改。其他时候,当我使用计算机时,状态似乎会随机切换。多次运行脚本似乎不会影响状态(如果第一次不发生,则下次也不会发生n第二次)。
我如何才能实现相关的重新映射并使其可靠地工作?
(我目前正在运行 Kubuntu 14.04,但在 Kubuntu 13.10 下也有类似的表现)
答案1
我还想在我的 MacBook Pro 上交换 cmd 和 alt 键,但当我插入普通外接键盘时则不行。
从方向这里,以下内容在 14.04 版(可能还有 13.10 版)上“有效”:
- 添加,如果文件不存在则
options hid_apple swap_opt_cmd=1
创建/etc/modprobe.d/hid_apple.conf
- 使用以下方法重建 initramfs:
sudo update-initramfs -u -k all
- 重启