我有一台装有 Ubuntu 的 iMac,还有它的无线设备(鼠标、键盘),然而有些东西让我很烦,那就是 MagicMouse(Mac 的无线鼠标)的滚动也在左右部分操作。
如何停用这些区域的滚动并且仅在中心起作用?
有任何想法吗?
答案1
如果你熟悉使用终端,那么有一个相对地使用 来停用按钮的简单方法xinput
(它也可以用于禁用单击中间按钮)。如果您的计算机上未安装 xinput,只需打开终端并使用sudo apt-get install xinput
。
以下是永久禁用左右滚动的步骤:
- 在任何目录中,使用该
xinput
命令。这将显示已连接设备的列表——这是我的一个例子:
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ MSFT0001:02 04F3:304B Mouse id=11 [slave pointer (2)]
⎜ ↳ MSFT0001:02 04F3:304B Touchpad id=12 [slave pointer (2)]
⎜ ↳ Logitech M705 id=9 [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)]
↳ Integrated Camera: Integrated C id=10 [slave keyboard (3)]
↳ Ideapad extra buttons id=13 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=14 [slave keyboard (3)]
↳ Google Pixel USB-C earbuds id=15 [slave keyboard (3)]
MSFT0001:02 04F3:304B Mouse
现在,对于我的计算机,除了我实际插入的鼠标( )之外,它还列出了通用鼠标Logitech M705
。如果您不确定哪个鼠标是您的,请尝试拔下它,再次在终端中运行命令,然后查找丢失的设备。
- 获取鼠标的 ID(我的 Logitech 鼠标的 id=9)并使用以下命令获取有关计算机识别的输入类型的更多信息:
xinput list <mouse-id-here>
这应该打印出类似下面的内容:
Logitech M705 id=9 [slave pointer (2)]
Reporting 7 classes:
Class originated from: 9. Type: XIButtonClass
Buttons supported: 20
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" None None None None None None None None None
Button state:
Class originated from: 9. Type: XIValuatorClass
Detail for Valuator 0:
Label: Rel X
Range: -1.000000 - -1.000000
Resolution: 0 units/m
Mode: relative
Class originated from: 9. Type: XIValuatorClass
... (more here)
这里需要注意的重要部分是列出的按钮标签。查看标签并找到"Button Horiz Wheel Left"
和"Button Horiz Wheel Right"
。找出它们的位置(我的按钮在列表中排在第 6 和第 7 位)。
- 现在您有了这两个位置,请使用以下命令:
xinput get-button-map <mouse-id-here>
这应该会向你显示一个数字列表,比如对我来说是 1 到 20:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
复制该列表(如果您在终端中,可以使用ctrl-shift-C
或command-shift-C
Mac 执行此操作)。现在使用xinput set-button-map <mouse-id-here> <list-of-numbers>
,粘贴数字并将代表左滚动和右滚动的两个数字替换为零。所以,对我来说它看起来像:
xinput set-button-map <mouse-id-here> 1 2 3 4 5 0 0 8 9 10 11 12 13 14 15 16 17 18 19 20
这样你的鼠标就不再左右滚动了。
- 如果您不想每次启动计算机时都执行此操作,只需打开“启动应用程序偏好设置”(如果您在 Ubuntu 中搜索它,它应该会显示出来),单击“添加”,然后将完整的 set-button-map 命令粘贴到字段中
command
。现在,它应该会在计算机启动时自动运行此命令。但是,如果您断开并重新连接鼠标,则无法保证它会起作用——您可能必须在插入鼠标的情况下重新启动计算机才能使更改生效。
希望这可以帮助!
编辑:我今天了解到设备 ID 可能会在启动之间发生变化。这让事情变得有点困难,但并非无法忍受。
基本上,您需要使用此命令从 xinput 中提取 ID 号:
xinput | grep <device-name> | awk -F'[= \t]+' '{print $7}'
请注意,这个“7”可能对你来说是一个不同的数字——只需反复尝试不同的数字,直到它返回你的鼠标 ID。然后,在启动文件中输入以下命令:
xinput set-button-map "$(xinput | grep <device-name> | awk -F'[= \t]+' '{print $7}')" 1 2 3 4 5 0 0 8 9 10 11 12 13 14 15 16 17 18 19 20
再次确保将“7”替换为适合您的数字。我知道这个答案已经彻底脱离了相对简单的状态,并陷入了 grep/regex/awk 的遗忘之中,但是嘿,它对我有用:)。
祝你好运!