在 Windows 中,我习惯于单击中心按钮,它提供向上或向下“快速滚动”选项。我怎样才能在 Linux 上得到这种行为?目前似乎在中心单击时使用后退按钮。
我在 CentOS 下使用 Gnome。
答案1
Windows 的这项功能从未真正进入 Unix 世界。在 Unix 世界中,鼠标中键的主要用途是粘贴剪贴板内容(或更准确地说,是用鼠标选择的文本,它是自动复制的)。一些跨平台应用程序(例如 Firefox 和 Chrome)在 Windows 下支持 Linux 风格的鼠标中键,反之亦然,但除此之外,大多数应用程序不支持这种细粒度的滚动。
尽管如此,您可以在系统级别相当接近。可以设置一个鼠标按钮,当按下该按钮时,鼠标移动将转换为滚轮事件。这与您习惯的功能相同,但您可能会发现运动不稳定,因为应用程序接收滚轮事件,这些事件通常被解释为滚动一整行或一列。
要使用此配置,请使用x输入程序(我不知道是否有 GUI 前端)。首先,运行以下命令来查看指点设备的名称:
$ xinput --list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Generic USB Mouse id=8 [slave pointer (2)]
⎜ ↳ Macintosh mouse button emulation id=12 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=7 [slave keyboard (3)]
↳ USB Keyboard id=9 [slave keyboard (3)]
例如,在上面的输出中,指针设备是Generic USB mouse
。您可以运行以下命令来列出可以调整的属性:
xinput --list-props 'Generic USB Mouse'
您正在寻找的属性集是“Evdev Wheel Emulation”属性。通过以下设置,当按下鼠标中键(按钮 2)时,移动鼠标会发送滚轮事件(4=上、5=下、6=左、7=右)。
xinput --set-prop 'Generic USB Mouse' 'Evdev Wheel Emulation' 1
xinput --set-prop 'Generic USB Mouse' 'Evdev Wheel Emulation Button' 2
xinput --set-prop 'Generic USB Mouse' 'Evdev Wheel Emulation Axes' 6 7 4 5
您可能需要调整其他参数(惯性、超时)。
您可以将这些命令放入脚本中。添加#!/bin/sh
作为第一行,并使脚本文件可执行(例如chmod +x ~/bin/activate-wheel-emulation.sh
)。然后将该脚本添加到要在会话启动时运行的命令列表中(gnome-session-properties
允许您对其进行配置)。
如果您拥有 root 访问权限并且想要对所有用户进行更改(在家用计算机上可接受),则通过X.org 服务器配置文件。以 root 身份创建一个名为的文件,/etc/X11/xorg.conf.d/wheel-emulation.conf
其中包含鼠标驱动程序。设置相同,但组织方式略有不同。
Section "InputClass"
Identifier "Wheel Emulation"
MatchProduct "Generic USB Mouse"
Option "EmulateWheel" "on"
Option "EmulateWheelButton" "2"
Option "XAxisMapping" "6 7"
Option "YAxisMapping" "4 5"
EndSection
答案2
事实证明这可以通过 Firefox 偏好设置来完成。
- 从下拉菜单中:编辑 --> 首选项
- 然后选择选项卡:高级 --> 常规
- 然后勾选“使用自动滚动”
截屏
答案3
这对我有用,Ubuntu 20.04/20.10:注意,它在任何地方、每个应用程序中都适用。如何在 Wayland 中执行此操作,我不知道,尽管它正在操纵 libinput,所以它应该是可能的。
该答案只是已接受答案的一个示例。
#/usr/share/X11/xorg.conf.d/41-libinput.conf
Section "InputClass"
Identifier "Logitech USB Receiver Mouse"
MatchIsPointer "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
Option "ScrollButton" "2"
Option "ScrollMethod" "button"
Option "NaturalScrolling" "true"
EndSection