我昨天买了一台 Logitech M545,但它的表现并不正常。使用我的旧 M705,我可以使用拇指按钮在 Firefox、Thunar 等中后退/前进,但使用 M545 时,它们甚至不会发送按钮按下的正常代码。以下是我得到的结果:
返回键:
KeyPress event, serial 28, synthetic NO, window 0x7000001,
root 0x2d3, subw 0x0, time 7968516, (47,78), root:(3157,978),
state 0x10, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyPress event, serial 28, synthetic NO, window 0x7000001,
root 0x2d3, subw 0x0, time 7968516, (47,78), root:(3157,978),
state 0x50, keycode 40 (keysym 0x64, d), same_screen YES,
XLookupString gives 1 bytes: (64) "d"
XmbLookupString gives 1 bytes: (64) "d"
XFilterEvent returns: False
KeyRelease event, serial 28, synthetic NO, window 0x7000001,
root 0x2d3, subw 0x0, time 7968524, (47,78), root:(3157,978),
state 0x50, keycode 40 (keysym 0x64, d), same_screen YES,
XLookupString gives 1 bytes: (64) "d"
XFilterEvent returns: False
KeyRelease event, serial 28, synthetic NO, window 0x7000001,
root 0x2d3, subw 0x0, time 7968530, (47,78), root:(3157,978),
state 0x50, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
转发按钮:
KeyPress event, serial 28, synthetic NO, window 0x7000001,
root 0x2d3, subw 0x0, time 7969328, (47,78), root:(3157,978),
state 0x10, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 28, synthetic NO, window 0x7000001,
root 0x2d3, subw 0x0, time 7969436, (47,78), root:(3157,978),
state 0x50, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
我已经尝试过 Debian 和 Ubuntu Vivid 的几种不同的内核。
我该如何重新映射这些按钮以获得我习惯的行为,以及如何区分它们和键盘按下?此外,由于两个按钮都发送 Super_L,我该如何区分它们?
如果重新映射意味着我会从键盘上丢失 Super_L,那就这样吧,尽管这并不理想。
有任何想法吗?
答案1
通常,在这种情况下,您必须运行 Logitech 实用程序来重新编程按钮。通过 VirtualBox 可以正常工作。
(根据我使用 G300 的经验以及 M545 描述中提到的可编程事实)
另一种可能性是路由器守护进程。它可以动态更改输入设备的事件。可用于修复问题或进一步扩展按钮的功能。
答案2
我刚刚做了一个GitHub 上的仓库,提供适用于 M560/M545/M546 的驱动程序。
只需下载它,并检查源代码到正确的内核版本,然后运行make && sudo make install
。然后您就可以使用xbindkeys-config
它来映射它。
答案3
我(大概)设法解决了这个问题。
使用以下内容创建“/etc/udev/hwdb.d/90-logitech-m-545.hwdb”:
# Logitech M545
keyboard:usb:v046DpC52B*
KEYBOARD_KEY_70007=back
KEYBOARD_KEY_700E3=forward
然后:
udevadm hwdb --update
拔下接收器并重新插入,现在拇指按钮至少在 Firefox 中可以正常运行。
这只是一种解决方法,因为它仍然会发送键盘事件,但它可以完成我主要希望它做的事情。
编辑:修复代码