在Wayland下配置额外的鼠标按钮


10

我使用10键鼠标(Logitech M705)。在X11下,通过修改中的文件,我能够将其他按钮之一配置为第二次单击etc/X11/xorg.conf.d

在Wayland之下,这不再起作用。我的研究表明,我需要做些事情libinput。我以为这是一个普遍的问题,但在任何地方都找不到答案。

有人可以解释如何重新映射鼠标按钮或解释为什么不能完成映射吗?


我使用Wayland一段时间了,到目前为止,我还找不到如何重新映射按钮的信息。
paulodiovani

Answers:


6

如果您正在运行Wayland,则可以重新映射按钮,如下所示:

  1. 运行xev | grep button以记录鼠标单击事件,并通过在窗口中单击来获取事件的编号。就我而言,中间按钮是:

    state 0x10, button 2, same_screen YES
    

    我想将其映射到:

    state 0x10, button 13, same_screen YES
    
  2. 然后运行xinput --list并找到您的指针设备,我的是:

    Logitech Performance MX  id=9  [slave pointer  (2)]
    
  3. xinput get-button-map 9 返回:

    1 2 3 4 ... 20
    
  4. xinput set-button-map:

    $ xinput set-button-map 9  1 13 3 4 .. 12 2 14 .. 20
    

注意:将数字替换9id=

如果定义了该键的行为,则将映射您的事件。如果不是,那将是另外一个问题。在韦兰TBH我还没有找到一种方式,对事件执行命令(这是很容易的一个Xorg的xbindkeys),因此完全自定义键和鼠标事件的行为。我相信韦兰正试图更加安全,并禁止这种行为。

无论如何,您仍然有机会很容易地切换到Xorg并享受其功能。


为我工作,但是您如何使更改永久化?似乎我必须xinput set-button-map为每次Wayland新课程都跑步...
mgalgs

1
是的,您需要每次都运行它。要使其自动化,可以将其放入脚本中并创建服务文件,或将其放入与发行版相对应的启动时运行的init文件夹中(在基于systemd的OS上为/etc/rc.d/init .d /)
CermakM

您可以在xconf文件中放置一个选项: Option "ButtonMapping" "1 2 3 ..."
hollandais volant

这只会更改xorg输入驱动程序,不会更改任何本机使用Wayland合成的应用程序,例如Gnome Shell或Nautilus
Ray Foss

3

我制作了一个小的Shell脚本+ systemd单位文件,我将其称为wayland-mouse-mapper

摘录Mathportillo / wayland-mouse-mapper

一个小脚本,用于将鼠标按钮映射到Wayland上的击键。

我让自己使用鼠标额外的按钮来获得有用的东西。它已使用Gnome在Fedora 27上经过测试并与Logitech MX Master 2S一起使用,并且也可以在我的旧Logitech Performance MX上使用。它可能适用于任何Wayland和任何Logitech鼠标(或任何鼠标,如果您编辑映射),因为似乎没有其他方法(xdotools,xbindkeys等)起作用。

它通过读取libinput调试事件并使用evemu触发键事件来工作,具体取决于已识别设备中的已识别按钮。

纽扣

这些只是默认设置,您可以在mousemapper.sh脚本的开始处自定义它们。

  • 前进:移至(Super+ Page up)上方的工作区
  • 返回:移至(Super+ Page down)下面的工作区

0

尝试修改hwdb udev规则。这会将鼠标按钮注册为键盘键,例如Launch8 / F16,并在所有程序,wayland或其他程序中禁用其功能。

# /usr/lib/udev/hwdb.d/71-mouse-local.hwdb

evdev:input:*
 KEYBOARD_KEY_90004=key_f16
 KEYBOARD_KEY_90005=key_f17

然后以root身份systemd-hwdb update; udevadm trigger拔出鼠标,然后重新插入。

其他健全性检查:sudo udevadm info /dev/input/by-path/*-usb-*-mouse | grep -A3 -P3 KEYBOARD_KEY,或进行类似的查询,systemd-hwdb query "evdev:input:v046dp406a*请参阅源以获取有关提取ID的详细信息。

来源:https : //yulistic.gitlab.io/2017/12/linux-keymapping-with-udev-hwdb/

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.