Answers:
如果您正在运行Wayland,则可以重新映射按钮,如下所示:
运行xev | grep button
以记录鼠标单击事件,并通过在窗口中单击来获取事件的编号。就我而言,中间按钮是:
state 0x10, button 2, same_screen YES
我想将其映射到:
state 0x10, button 13, same_screen YES
然后运行xinput --list
并找到您的指针设备,我的是:
Logitech Performance MX id=9 [slave pointer (2)]
xinput get-button-map 9
返回:
1 2 3 4 ... 20
xinput set-button-map:
$ xinput set-button-map 9 1 13 3 4 .. 12 2 14 .. 20
注意:将数字替换9
为id=
如果定义了该键的行为,则将映射您的事件。如果不是,那将是另外一个问题。在韦兰TBH我还没有找到一种方式,对事件执行命令(这是很容易的一个Xorg的xbindkeys
),因此完全自定义键和鼠标事件的行为。我相信韦兰正试图更加安全,并禁止这种行为。
无论如何,您仍然有机会很容易地切换到Xorg并享受其功能。
xinput set-button-map
为每次Wayland新课程都跑步...
Option "ButtonMapping" "1 2 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)下面的工作区
尝试修改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/