我有 Logitech darkfeild 鼠标(可以在玻璃上使用的鼠标),并且想知道如何重新映射我当前未使用的按钮之一(缩放按钮)以用作选定的键盘按钮(控制或晚餐)?......我也在使用 13.04....仅供参考。
谢谢
答案1
答案2
某些桌面环境 (DE) 与各种窗口管理器 (WM) 结合使用,可以通过鼠标输入实现相当多的功能,但它可能无法涵盖我们可能想要更改的那个模糊设置。就我而言,我在我的所有机器上都使用 Logitech M510 鼠标,但我更喜欢将它们用作鼠标中键,而不是使用浏览“前进”和“后退”按钮(拇指旁边的按钮)来浏览互联网。当我在 Blender 中花一个小时或更长时间建模时,否则我的中指会很痛。要进行此更改,我需要使用“xinput”命令配置 X 设备本身。
我首先需要找到我们想要使用的设备,在本例中是我的 Logitech M510 鼠标。这可以通过首先使用 xinput 命令列出所有 X 设备来完成,如下所示:
$ xinput
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Microsoft Natural® Ergonomic Keyboard 4000 id=11 [slave pointer (2)]
⎜ ↳ Logitech Unifying Device. Wireless PID:1025 id=12 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=15 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Power Button id=8 [slave keyboard (3)]
↳ Sleep Button id=9 [slave keyboard (3)]
↳ Microsoft Natural® Ergonomic Keyboard 4000 id=10 [slave keyboard (3)]
↳ BisonCam, NB Pro id=13 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=14 [slave keyboard (3)]
特别注意,我的鼠标位于虚拟核心指针下方,并且它通过 USB 连接到计算机的点是 X 设备 ID=12。我们不需要它,但知道它很有用,如果我们需要更多有关设备的详细信息,我们将执行以下操作(其中 12 是 X 设备 ID):
$ xinput list 12
Logitech Unifying Device. Wireless PID:1025 id=12 [slave pointer (2)]
Reporting 7 classes:
Class originated from: 12. Type: XIButtonClass
Buttons supported: 24
Button labels: "Button Left" "Button Middle" "Button Right" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right" "Button Side" "Button Extra" "Button Forward" "Button Back" "Button Task" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown"
Button state:
Class originated from: 12. Type: XIValuatorClass
Detail for Valuator 0:
Label: Rel X
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 12. Type: XIValuatorClass
Detail for Valuator 1:
Label: Rel Y
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 12. Type: XIValuatorClass
Detail for Valuator 2:
Label: Rel Horiz Wheel
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 12. Type: XIValuatorClass
Detail for Valuator 3:
Label: Rel Vert Wheel
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 12. Type: XIScrollClass
Scroll info for Valuator 2
type: 2 (horizontal)
increment: 1.000000
flags: 0x0
Class originated from: 12. Type: XIScrollClass
Scroll info for Valuator 3
type: 1 (vertical)
increment: -1.000000
flags: 0x2 ( preferred )
现在重新配置按钮功能只需更改按钮图即可。我们将获得现有的按钮图,如下所示:
$ xinput get-button-map 12 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
这是当前的按钮映射。可以将其视为按钮数组,每个值都是该索引处按钮的“功能”。不幸的是,我记不清我是如何得出这个结论的,但我想在鼠标上将按钮 8、9 和 10 的功能更改为按钮 2 的功能。我通过更改这些按钮的功能编号并将其重新设置为 X 设备的按钮映射来实现此目的,如下所示:
$ xinput set-button-map 12 1 2 3 4 5 6 7 2 2 2 11 12 13 14 15 16 17 18 19 20 21 22 23 24
为了使其成为永久解决方案,我将上述命令添加到我的 .profile 中,以便在我登录时执行。但是,设备 ID 可能会根据连接到计算机的设备而每次启动时发生变化。为了避免这种情况,可以使用 grep 和 awk 查找设备 ID 并将其提供给 xinput 命令,如下所示:
MOUSE_ID=`xinput list | grep -i Logitech | awk -F= '{ print $2}' | awk '{print $1}'` `xinput set-button-map $MOUSE_ID 1 2 3 4 5 6 7 2 2 2 11 12 13 14 15 16 17 18 19 20 21 22 23`
上述几行添加到 .profile 文件中,设备将从 xinput 列表中动态定位,并按照我们的需要重新映射按钮功能。但请注意,上例中的 Logitech 不明确(因为我只有 1 个 Logitech 设备),因此从 xinput 命令的输出中,您可能需要填写一些更具体的内容,以便 grep 进行匹配。