我在 Ubuntu 22.04、Gnome Shell 42、Wayland 上使用 Logitech Trackman Marble Trackball。
我希望用其中一个额外的侧键模拟鼠标中键单击,但似乎我可以合成任何类型的按钮除了中间的按钮。
- 我已经创建了
/etc/udev/hwdb.d/71-logitech-trackman.hwdb
如下文件:
evdev:name:Logitech USB Trackball:*
KEYBOARD_KEY_90004=btn_middle
然后我运行:
sudo systemd-hwdb update
sudo udevadm trigger
并物理重新连接设备。
- 运行
sudo udevadm info /dev/input/event8 | grep btn_middle
表明映射已经生效。 - 运行
sudo evtest /dev/input/event8
输出正确的映射,如下所示:
Event: time 1689266776.764313, type 4 (EV_MSC), code 4 (MSC_SCAN), value 90004
Event: time 1689266776.764313, type 1 (EV_KEY), code 274 (BTN_MIDDLE), value 1
- 但是,
sudo libinput debug-events --device /dev/input/event8
当我按下重新映射的按钮时,运行不会发出任何输出(尽管它确实为所有其他事件输出了正确的行)。
奇怪的是,libinput
如果我选择任何其他目标事件(例如btn_left
、btn_right
,甚至是设备没有的其他按钮,例如 ) ,它都会发出输出btn_back
,并且这些点击会正确反映在 GUI 中。似乎只有中间按钮无法模拟。
如果我尝试重新映射四个物理按钮中的任何一个,行为是相同的。
什么原因会阻止鼠标中键映射工作?
答案1
我有类似的问题并解决了,尝试更改你的.hwdb 文件:
evdev:input:*
KEYBOARD_KEY_90004=btn_middle