我正在使用 Gnome Tweaks 的“其他布局选项”来自定义修饰键的位置,以便它们适用于我的键盘布局。我希望我的左键Win和左键Ctrl在我的内置笔记本电脑键盘上互换位置仅有的,但不适用于我的外接 USB 键盘。
我如何实现这个目标?
背景
在我的 Macbook Air 键盘上,第三级修饰键的默认位置非常不符合人体工程学,但在外接键盘上不一定如此。这种情况需要根据键盘定制布局选项。
顺便说一句,我应该提到 macOS 目前通过提供内部键盘上修饰键的任意重新映射充分认识到了这一需求。
Windows 几乎没有类似的功能,除非借助 SharpKeys 等第三方工具,这使得键盘快捷键应用程序(如 Logitech Gaming Software)的设置变得非常困难,因为 SharpKeys 是后它们,从而重新映射其他应用程序的模拟按键。
答案1
这可以在硬件级别更改中实现,因此请通过 撤消所做的更改gnome-tweaks
。需要 root 权限。
参考:https://manpages.ubuntu.com/manpages/focal/man7/hwdb.7.html
注意:如果执行此操作时发现任何包“未安装”,请安装它们。
例子:
跑步sudo evtest
[admin@ADMIN ~]$ sudo evtest
[sudo] password for admin:
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0: Power Button
/dev/input/event1: Lid Switch
/dev/input/event2: Power Button
/dev/input/event3: AT Translated Set 2 keyboard
/dev/input/event4: Compx 2.4G Receiver
/dev/input/event5: Compx 2.4G Receiver
/dev/input/event6: Compx 2.4G Receiver System Control
/dev/input/event7: Compx 2.4G Receiver Consumer Control
/dev/input/event8: Toshiba input device
/dev/input/event9: PC Speaker
/dev/input/event10: Video Bus
/dev/input/event11: Video Bus
/dev/input/event12: ETPS/2 Elantech Touchpad
/dev/input/event13: HDA Intel PCH Mic
/dev/input/event14: HDA Intel PCH Headphone
/dev/input/event15: HDA Intel PCH HDMI/DP,pcm=3
/dev/input/event16: HDA Intel PCH HDMI/DP,pcm=7
/dev/input/event17: HDA Intel PCH HDMI/DP,pcm=8
/dev/input/event18: HDA Intel PCH HDMI/DP,pcm=9
/dev/input/event19: HDA Intel PCH HDMI/DP,pcm=10
Select the device event number [0-19]:
从上面的输出来看,event3 是我的东芝笔记本电脑内置键盘,已损坏。event4 是我的无线键盘。我将配置此无线键盘,仅交换左 Win 和左 Control。
从上面的输出提示中,选择 4,因为这是我的无线键盘。然后按下两个键,左控制键和左窗口键。它们的标识如下所示(仅部分输出)
Event: time 1604846371.179388, -------------- SYN_REPORT ------------
Event: time 1604846371.269377, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e0
Event: time 1604846371.269377, type 1 (EV_KEY), code 29 (KEY_LEFTCTRL), value 0
Event: time 1604846371.269377, -------------- SYN_REPORT ------------
Event: time 1604846375.626511, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e3
Event: time 1604846375.626511, type 1 (EV_KEY), code 125 (KEY_LEFTMETA), value 1
Event: time 1604846375.626511, -------------- SYN_REPORT ------------
记下下面的值和键名
值700e0
, 键名称LEFTCTRL
值700e3
, 键名称LEFTMETA
因此,为了交换,我们需要700e0
(leftmeta
注意,上面的输出中需要小写字母而不是大写字母)
700e3
和leftctrl
现在使用以下命令打开文件,用键盘事件编号替换 eventX。
sudo -H gedit /sys/class/input/event4/device/modalias
我的用例的示例内容,
input:b0003v1D57pFA20e0100-e0,1,4,11,14,k71,72,73,74,75,77,79,7A,7B,7C,7D,7E,7F,80,81,82,83,84,85,86,87,88,89,8A,B7,B8,B9,BA,BB,BC,BD,BE,BF,C0,C1,C2,F0,ram4,l0,1,2,sfw
请注意来自 Modalias 文件的上述文本。
现在创建 hwdb 配置文件并使用以下命令打开它
sudo -H gedit /etc/udev/hwdb.d/10-my-modifiers.hwdb
根据上述锻炼,该文件应包含以下内容。
evdev:input:b0003v1D57pFA20e0100-e0,1,4,11,14,k71,72,73,74,75,77,79,7A,7B,7C,7D,7E,7F,80,81,82,83,84,85,86,87,88,89,8A,B7,B8,B9,BA,BB,BC,BD,BE,BF,C0,C1,C2,F0,ram4,l0,1,2,sfw
KEYBOARD_KEY_700e3=leftctrl
KEYBOARD_KEY_700e0=leftmeta
保存文件并关闭。
我们已经配置了文件。使用以下命令更新 hwdb。
sudo systemd-hwdb update
如果没有显示任何错误,那就好了。否则,我们需要查找evdev
行以正确配置。
要立即应用更改,请运行以下命令。
sudo udevadm trigger
使用两个具有不同配置的无线键盘进行测试......两者都证明了其个性。
主要參考文獻:https://wiki.archlinux.org/index.php/Map_scancodes_to_keycodes
类似的例子:如何在 Wayland 中将“Caps_Lock”键重新映射到“w”