按住中键时滚动鼠标移动


29

在Windows中,我习惯单击中心按钮,它提供了向上或向下的“快速滚动”选项。如何在Linux上获得这种行为?当前似乎在单击中心时使用了后退按钮。

我在CentOS下使用Gnome。


具体来说,什么不起作用?从第一天开始,Unix鼠标具有三个按钮,因此鼠标中键通常可以直接使用。
吉尔斯(Gilles)'所以

我习惯单击中心按钮,它提供了向上或向下的“快速滚动”选项。当前似乎在单击中心时使用了后退按钮。
some1

2
嗯,所以您想要Windows的中间按钮(或者不是按滚轮)的行为,而不是Unix的行为(中间按钮通常粘贴剪贴板的内容)。您确实需要在问题中说这句话,我们无法读懂您的想法!这需要应用程序的支持;您使用哪些应用程序?哪个桌面环境(例如Gnome,KDE,XFCE等)?
吉尔(Gilles)'所以

好吧,我认为可以在某个配置面板上进行设置,但是我什至无法做到。我认为桌面是Gnome,这是默认设置吗?问题出在Firefox中。
some1

1
对于Firefox,存在一个几乎重复的问题的解决方案。
吉尔斯(Gillles)“所以-别再邪恶了”,

Answers:


26

Windows功能从未真正进入Unix世界。在Unix世界中,鼠标中键的主要目的是粘贴剪贴板内容(或更准确地说,是使用鼠标选择的文本,它是自动复制的)。Firefox和Chrome等跨平台应用程序在Windows下均支持Linux样式的鼠标中键,反之亦然,但除此之外,大多数应用程序均不支持这种细粒度的滚动。

但是,您可以在系统级别上相当接近。可以设置鼠标按钮,以便在按下鼠标按钮时将鼠标移动转换为滚轮事件。该功能与您以前使用过的功能相同,但是您可能会发现运动不稳定,因为应用程序接收到转轮事件,通常将其解释为滚动整行或整列。

要使用此配置,请使用xinput程序(我不知道是否有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服务器配置文件进行更改。以超级用户/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

调整其他参数时,您需要格外小心。如果您减少Evdev Wheel Emulation Timeout太多参数,则可能完全失去鼠标中键(单击)的功能。例如,如果减小Evdev Wheel Emulation Timeout到低于的值,Evdev Middle Button Timeout则将不再生成“中间按钮单击”事件。从个人经验来看,以下内容似乎相当有效:
agnussmcferguss 2015年

xinput --set-prop 'Generic USB Mouse' 'Evdev Middle Button Emulation' 1xinput --set-prop 'Generic USB Mouse' 'Evdev Middle Button Timeout' 50xinput --set-prop 'Generic USB Mouse' 'Evdev Wheel Emulation Timeout' 100。这提供了相当灵活的单击和滚动功能,尽管如果您发现它触发得太快,则尝试增加Evdev Wheel Emulation Timeout(我认为默认
值为

Gilles,我认为您建议的xorg.conf.d配置文件中有问题。当我使用它时,我的X.Org启动到黑屏。我派生了一个版本,该版本通过Device "evdev"在的"EmulateWheelButton"值周围添加和放置双引号来工作"2"。(抱歉,我没有时间研究这些更改中的一个还是两个是否都解决了问题。)
Arkanon,2015年

@Arkanon缺少的双引号绝对是语法错误。我认为这没有Device "evdev"道理,您是说Driver "evdev"吗?我认为这可以代替MatchProduct为所有输入设备设置选项的指令,而不仅仅是通用USB鼠标。
吉尔斯(Gilles)'所以

1
@Wallacoloo我不知道您能否获得这种确切的效果,但是您可以通过键入数字小键盘来移动鼠标Pointer_EnableKeys(在Google上输入它或在此处询问新问题),并且可以使用XKB设置更奇特的行为(搜索键盘) :鼠标键,或在此处提出一个新问题,以确切描述您想要的东西,以及如果无法完全满足您将要解决的东西)。
吉尔斯(Gillles)“所以-别再邪恶了”

25

事实证明,这可以通过Firefox首选项来完成。

  1. 从下拉菜单中:编辑->首选项
  2. 然后选择选项卡:高级->常规
  3. 然后选中“使用自动滚动”

屏幕截图

   ss


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.