答案1
您可以使用xkbcomp
,并描述了详细的过程这里。您必须找到要重新映射的键的代码。同一 OP 中的其他答案可能会有用。
xkeycaps
可能会有用。
有关的>
- 如何重新映射某些键或设备?
- https://dev.to/0xbf/remap-keys-in-the-keyboard-in-ubuntu-5a36
- http://www.fascinatingcaptain.com/projects/remap-keyboard-keys-for-ubuntu/
- (Pablo Bianchi 评论)https://superuser.com/questions/277990/how-do-i-swap-alt-and-windows-keys-with-xmodmap
- (Pablo Bianchi 评论)https://unix.stackexchange.com/questions/86933/swap-alt-and-super
答案2
总的来说,这是一个答案,因为它缺乏完整性,但我只会使用 setxkbmap 将按键交换选项分配给特定键盘。
xinput
将为你提供键盘的 ID
wutang@shaolin:~$ xinput
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ VirtualBox mouse integration id=9 [slave pointer (2)]
⎜ ↳ VirtualBox USB Tablet id=10 [slave pointer (2)]
⎜ ↳ ImExPS/2 Generic Explorer Mouse id=12 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Sleep Button id=7 [slave keyboard (3)]
↳ Video Bus id=8 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=11 [slave keyboard (3)]
完全公开我非常懒惰并且不会打扰我的虚拟来通过我已经测试过的第二个键盘,甚至更懒惰没有设置从主机(--> VM)剪切和粘贴实际上确实显示 2 个键盘...(s#!^ 答案)
所以你只需要想象我的输出中有第二个键盘,它有一个唯一的 id
如果我仅要更改其中一个键盘(AT Translated Set 2 键盘):
setxkbmap -device 11 -option altwin:swap_lalt_lwin
我认为这不是永久性的;如果您拔掉键盘、注销或关闭电源,它可能会消失。
不提供选项的 -option 标志将删除所有选项。
答案3
事实证明我的同事也遇到了同样的问题。在征得他的同意后,以下是立即有效的解决方案:
首先运行这个并滚动到有关键盘的信息运行cat /proc/bus/input/devices | less
I: Bus=0005 Vendor=004c Product=026c Version=0160
N: Name="Magic Keyboard with Numeric Keypad"
P: Phys=44:e5:17:96:76:24
S: Sysfs=/devices/pci0000:00/0000:00:14.0/usb3/3-10/3-10:1.0/bluetooth/hci0/hci0:256/0005:004C:026C.0007/input/input38
U: Uniq=c4:14:11:03:c2:de
H: Handlers=sysrq kbd event20 leds
B: PROP=0
B: EV=120013
B: KEY=10000 0 0 1 1007b00001007 ff9f207ac14057ff ffbeffdfffefffff fffffffffffffffe
B: MSC=10
B: LED=1f
现在通过这种方式构造一个 id:
evdev:input:b<bus_id>v<vendor_id>p<product_id>e<version_id>-<modalias>
版本和模式并不重要。我得到这个:
evdev:input:b0005v004Cp026C*
接下来创建此文件
etc/udev/hwdb.d/60-applekeyboard.hwdb
我认为名字并不重要,但我不确定。
该文件应包含我们刚刚创建的 ID 和键的重新映射:
# Apple magic
evdev:input:b0005v004Cp026C*
KEYBOARD_KEY_700e2=leftmeta
KEYBOARD_KEY_700e3=leftalt
如何找到名称?只需执行sudo evtest
“查找键盘”并按下要更改的键即可。输出如下所示:
Event: time 1644400418.762658, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e3
Event: time 1644400418.762658, type 1 (EV_KEY), code 56 (KEY_LEFTMETA), value 1
使用该输出来构建所需的密钥并进行更改。
接下来,sudo 运行以下命令进行更新:
systemd-hwdb update
udevadm control --reload-rules
udevadm trigger
那么你就完成了。