罗技 M545 按钮映射

罗技 M545 按钮映射

我昨天买了一台 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 中可以正常运行。

这只是一种解决方法,因为它仍然会发送键盘事件,但它可以完成我主要希望它做的事情。

编辑:修复代码

相关内容