反转两指滚动方向(自然滚动)?

两指滚动很好用,但有没有办法我可以反转方向(自然滚动)?它似乎与OSX的方式相反。

我已经使用了一天,现在我想反转我的向上和向下箭头键滚动页面的方向。 - joeytwiddle
4在16.04上,gsettings set org.gnome.desktop.peripherals.touchpad natural-scroll true 对我起了作用。 - Yibo Yang
如何在Linux Mint中通过图形用户界面(GUI)完成此操作。您还可以参考这个askubuntu问题/回答,或者这个Unix & Linux问题/回答中的我的回答和其他回答。 - Cadoiz
19个回答

第一种方法:使用GNOME设置

我不知道您使用的是哪个版本的Ubuntu,但在Ubuntu 13.04到Ubuntu 20.04(我猜测),可以通过鼠标和触摸板设置来实现。

首先,打开系统设置 > 鼠标和触摸板。如下面截图所示,如果有一个选项叫内容跟随手指,请勾选它。然后滚动条将以相反方向工作。我建议点击“测试您的设置”按钮来试用一下。

Screenshot


第二种方法:使用DConf编辑器

同样,您也可以通过DConf编辑器来访问此功能。要安装DConf编辑器,请运行以下命令:

sudo apt-get install dconf-editor

然后转到org.gnome.settings-daemon.peripherals.touchpad并勾选natural-scroll


您还可以在命令行上设置此选项:
gsettings set org.gnome.settings-daemon.peripherals.touchpad natural-scroll true

在Ubuntu 20.04上,
DConf路径已更改为:org.gnome.desktop.peripherals.touchpad,相应的命令也发生了变化。
gsettings set org.gnome.desktop.peripherals.touchpad natural-scroll true

终于,他们实施了这样的措施,真是时候到了 :) - Naftuli Kay
我没有考虑到问题的日期!:D - AliNajafies
我认为这对于Ubuntu Touch 是必不可少的,因为它可以移动内容本身而不是滚动条滑块。 - AliNajafies
3不幸的是,它在Nautilus和其他一些应用程序中无法工作,但在其他应用程序中可以。 - notablytipsy
4在14.04版本中,系统设置 > 鼠标和触摸板被列为“自然滚动”,并且运行良好,包括Nautilus。 - Steven Almeroth
并且它并不适用于所有的笔记本电脑。在我的惠普笔记本上,这个设置根本没有任何作用。而在另一个回答中建议的syncclient VertScrollDelta -111却有效。手掌检测也是一样的情况。 - Nathan
2如果你想在没有图形界面的情况下设置滚动方向,请在终端中使用以下命令(此命令会永久地为每个用户设置该设置):gsettings set org.gnome.desktop.peripherals.touchpad natural-scroll false 或者对于你的鼠标 gsettings set org.gnome.desktop.peripherals.mouse natural-scroll false。(Fedora 24 将你的鼠标识别为触摸板,因此请使用带有 .touchpad 的命令行,参见 http://forums.fedoraforum.org/showthread.php?p=1778162&posted=1#post1778162 和 Fedora bug https://bugzilla.redhat.com/show_bug.cgi?id=1352159) - erik
登录以感谢这个方法) +1 - Altenrion
@erik 不错的CLI方法,但对我不起作用:首先,我的路径略有不同(你的是“desktop”,而我是“settings-daemon”),其次,将“natural-scroll”从true翻转到false再翻转回来对触摸板的行为没有影响(在Ffox、终端和nautilus中观察到),第三,我没有“mouse.natural-scroll”可以尝试。有什么建议吗? - Tomislav Nakic-Alfirevic
不幸的是,dConf似乎对我在Ubuntu 18.04上使用苹果的Magic Trackpad 2进行滚动没有影响。触摸板可以用来移动指针和点击,但无法进行滚动。 - Mobigital
在Ubuntu 20.04中,DConf编辑器的路径不存在。 - Flimm
@Flimm 谢谢你的报告;刚刚更新了答案。 - AliNajafies
@AliNajafies 我尝试使用dconf编辑器进行操作,但我的触摸板速度和滚动方向似乎没有变化。你能帮助我解决这个问题吗? - Ricky

有几种方法可以启用系统范围内的反向或自然滚动鼠标。我尝试过的只有两种方法可以在所有窗口中启用,包括gedit、终端、软件中心、nautilus等。最简单的方法是按照以下步骤操作。这种方法需要最新版本的xserver-xorg-input-evdev驱动程序,你可以从这里获取。我知道它能够正常工作,因为我正在使用它,并且在编写这篇指南之前已经进行了测试,该指南之前是为Fedora 21编写的。确保在Ubuntu-Tweak中关闭了反向滚动,否则你将看不到更改的效果。此外,对于那些不想在系统范围内使用自然滚动的用户,他们可以使用此选项来按用户禁用自然滚动。现在,让我们开始吧...
在继续本指南之前,请更新/安装Evdev到最新版本并重新启动。
通过在终端中运行以下命令来获取你的鼠标设备ID:
xinput list
拿到你得到的那个数字(仅指"id="后面的数字),然后在下面的命令中用那个数字替换掉"{device id}"。
xinput list-props {device id} | grep "Scrolling Distance"

除非您在grep命令中使用-i,否则它是区分大小写的。记下您从该命令的输出中找到的数字(在我的情况下,它是数字1,以逗号分隔并显示三次)。您将使用输出中获得的数字的负值。此外,请确保记下属性编号(它将在输出中用括号括起来;在我的情况下,Ubuntu中为(272),Fedora中为(273))。

注意:如果您没有获得包含“滚动距离”属性的输出,则此方法对您无效,您需要在此处停止并跳转到本指南下面显示的备选方法。

在您的终端中运行以下命令:

sudo touch /usr/share/X11/xorg.conf.d/20-natural-scrolling.conf
现在,运行以下命令(你可以使用你喜欢的文本编辑器代替nano,但我使用nano):
sudo nano /usr/share/X11/xorg.conf.d/20-natural-scrolling.conf
在您首选的文本编辑器中打开的文件中,粘贴以下内容(但请确保将数字更改为与第3步得到的逗号分隔的数字相同;在我的情况下,数字是1,所以我放了-1):
Section "InputClass"
        Identifier "Natural Scrolling"
        MatchIsPointer "on"
        MatchDevicePath "/dev/input/event*"
        Option "VertScrollDelta" "-1"
        Option "HorizScrollDelta" "-1"
        Option "DialDelta" "-1"
EndSection
保存文件并退出文本编辑器。无需重新启动。只需执行以下命令(替换属性编号、第三步中得到的负数以及第二步中得到的设备ID):
xinput set-prop {device id} {property number} -1 -1 -1
你可能需要在某些系统上退出Nautilus并重新启动Nautilus(如果在运行上述命令后Nautilus的自然滚动正常工作,则跳过此步骤)。按下Alt+F2,分别运行以下每个命令:
nautilus -q

nautilus -n

就是这样!现在你应该拥有系统范围的自然滚动,它将持久存在。

另一种方法:

如果你不想安装最新版本的Evdev(或者,即使在最新的Evdev中,你的鼠标也没有“滚动距离”属性),你可以按照以下步骤操作:

在打开的终端中运行以下命令:

sudo touch /usr/share/X11/xorg.conf.d/20-natural-scrolling.conf
现在,运行以下命令(你可以使用你喜欢的文本编辑器代替nano,但我使用nano):
sudo nano /usr/share/X11/xorg.conf.d/20-natural-scrolling.conf
在您所喜欢的文本编辑器中打开的文件中,粘贴以下内容:
Section "InputClass"
        Identifier "natural scrolling for mouse wheel"
        MatchIsPointer "on"
        MatchDevicePath "/dev/input/event*"
        Driver "mouse"
        Option "Device" "/dev/input/mice"
        Option "Protocol" "Auto"
        Option "ZAxisMapping" "5 4"
EndSection
保存文件并重新启动。如上所述,个别用户可以使用Ubuntu-Tweak在每个用户的基础上关闭它,以“打开”自然滚动(它将是每个用户基础上与系统范围设置相反,但不会影响其他希望使用自然滚动的用户的实际系统设置)。
注意:如果您安装了最新的Evdev,例如Fedora 22,则此处的替代方法将无效。请使用上面的Evdev方法。还要注意:无论如何,这两种方法都无法在Wayland中使用libinput。您需要另一种按用户或其他方式进行操作的替代方法。如果使用libinput,请确保删除上述创建的文件,并在桌面文件中创建一个启动项。创建桌面文件后,在Exec行中放置以下内容(确保在使用libinput时使用鼠标的设备ID和naturalscrolling属性号码;我的设备ID是11,属性号码是272;请根据您的情况进行调整)。
sh -c "sleep 5; exec xinput set-prop 11 272 1"
随后,保存文件并注销。当您再次登录时,您应该可以在每个用户的基础上进行自然滚动,或者可以在所有用户的自动启动中设置它。

太棒了!我不需要使用备选方法。联想Helix,Arch Linux,Gnome 3.16和罗技MX无线鼠标。谢谢你! - eduncan911
谢谢!对于其他像我一样有多个键盘的用户来说...这个答案中关于xinput set-prop等部分只是为了避免重新启动。 - robert
在Fedora 22上,没有使用evdev的“备用方法”对我来说不起作用,并且导致鼠标指针无响应(无法加载鼠标模块)。 - robert
1是的,我发现在 Fedora 22 及以上版本中,替代方法已经不再适用。你可以选择使用 Evdev 或 libinput。如果你安装了 Evdev 驱动,请不要使用替代方法,它将无法工作。在 Fedora 22 中,你已经获得了最新版本的 Evdev,所以替代方法在该版本中没有意义,尽管它仍然适用于其他发行版,直到最新的更改被纳入其中。我建议使用 Evdev 而不是 libinput。Libinput 仍然存在很多错误,并且无法与任何一种方法配合使用。 - D. Charles Pyle
第一种方法非常好用。Ubuntu 15.4和Microsoft Touch Mouse。谢谢! - kza
这对我来说在使用两指滚动时有效,但在使用循环滚动时无效。我尝试将“Synaptics Circular Scrolling Distance”设置为负值,但那样根本无法滚动。有什么建议吗? - Chris Moore
不确定如何帮助循环滚动。我没有硬件可以测试。 我知道某些硬件在负数值太低时会丢失所有滚动。我尝试将该数字设置得更低以获得更快的滚动,结果却没有滚动。如果您已经处于-1,则目前无法做任何事情。但是,如果您使用另一个数字(例如-108或其他数字),请尝试将其设置为-1并查看结果。尝试使用不同的参数。此外,一些设备需要比-1更低的数字,例如-200或其他数字。 - D. Charles Pyle
在 elementary OS 0.3.2 Freya 上解决了!第一种方法在终端和Skype等多个应用中无效,但第二种方法可以在任何地方使用!非常感谢! - menkow
1第二种方法在Ubuntu 14.04中对我有效,第一种方法在Ubuntu 16.04中对我有效。第二种方法在Ubuntu 16.04上没有起作用。可能是因为最新的evdev版本。 - Skywalker
在Ubuntu 16.04中,类似于Meharoof,第一种方法适用于蓝牙鼠标,而第二种方法不适用于我的触摸板。有没有任何想法如何使其适用于触摸板(list-props仅显示设备启用、坐标转换矩阵、设备产品和设备节点)?谢谢。 - Rafael Xavier
我想知道是否可能使用第一种方法,只需使用xinit set-prop~/.xinitrc中加入一个简短的两行代码。也就是说,是否有必要对.conf文件进行更改? - user70382
要永久关闭它,每个用户都可以使用以下命令:gsettings set org.gnome.desktop.peripherals.touchpad natural-scroll false(适用于触摸板和Fedora 24鼠标(Fedora 24中的错误)),或者gsettings set org.gnome.desktop.peripherals.mouse natural-scroll false。请参阅http://forums.fedoraforum.org/showthread.php?p=1778162&posted=1#post1778162和Fedora bug https://bugzilla.redhat.com/show_bug.cgi?id=1352159。 - erik
我的回答中提供了一个更简单、不那么冗长的方法。请点击此链接查看:https://askubuntu.com/questions/91426/reverse-two-finger-scroll-direction-natural-scrolling/861626#861626 - Timothy Zorn
对我来说,设置synclient VertScrollDelta=50解决了问题。 - Augustin Riedinger
这在Ubuntu 16.10上完美运行,但在升级到Ubuntu 17.04后停止工作。以下是我在Ubuntu 17.04上的解决方法:https://askubuntu.com/a/905625/424125 - Alex
100% 兼容 Synaptics 触摸板驱动程序。 - dat tutbrus
第一种方法在Ubuntu 18.04上也适用(另一种我没有测试过),即使没有Evdev(实际上可能是因为我不知道它是否存在于我的系统中...)。我使用了一个不同的头文件来配置.conf文件,参考自Arch wiki - Arch Stanton
这种方法在2019年仍然有效!我刚刚使用这个解释来修复Xubuntu 19.10中的滚动问题。 - Bo Johnson
谢谢你不假设我在使用GNOME桌面的废话! - PeterT

在Ubuntu 12.10及以上版本(未在12.04及以下版本上进行测试)中,实现这一目标的最简单且我认为是最好的方法是编辑synaptics配置文件。
sudoedit /usr/share/X11/xorg.conf.d/50-synaptics.conf

在16.04上,将此文件复制到/etc/X11/xorg.conf.d/50-synaptics.conf下,然后进行编辑。
cp /usr/share/X11/xorg.conf.d/50-synaptics.conf /etc/X11/xorg.conf.d/
sudoedit /etc/X11/xorg.conf.d/50-synaptics.conf

在"InputClass"部分中添加以下行:Identifier "touchpad catchall"
        Option "VertScrollDelta" "-111"
        Option "HorizScrollDelta" "-111"

这样它的内容就会变成:

Section "InputClass"
        Identifier "touchpad catchall"
        Driver "synaptics"
        MatchIsTouchpad "on"
        Option "VertScrollDelta" "-111"
        Option "HorizScrollDelta" "-111"
# ...

重新启动(或继续阅读),享受自然滚动的乐趣 :)
如果你想在不重新启动的情况下尝试你的设置,可以使用synclient
synclient VertScrollDelta=-111
synclient HorizScrollDelta=-111

更改会立即生效,但如果您不在50-synaptics-conf文件中添加它们,重启后更改将不会保留。

针对GNOME或Cinnamon的注意事项:

如果您使用GNOME或Cinnamon桌面管理器,很有可能GNOME/Cinnamon的设置会覆盖您的自定义设置。为了防止GNOME/Cinnamon的设置覆盖您的设置,请打开dconf编辑器 [dconf-editor] 并编辑以下条目:

/org/gnome/settings-daemon/plugins/mouse/
or
/org/cinnamon/settings-daemon/plugins/mouse/

取消选中激活

P.S.:

默认值是111,它表示速度,这意味着您可以通过调整该值来调节滚动速度以适应您的喜好。给它一个负值可以使其以相反的方向滚动。

这在12.04版本也适用,但对于Nautilus不起作用。 - Lars Nyström
在13.04版本中,文件管理器(Nautilus)可以正常工作。我不知道为什么在12.04版本中无法正常工作。我在12.10版本中使用了这种方法,现在也在13.04版本中使用。 - Елин Й.
Ubuntu 12.04 使用的是 Nautilus 版本 3.4.2。我相信更新版本的 Ubuntu 使用更新版本的 Nautilus。 - Lars Nyström
+1。我本来希望VertEdgeScroll的方向与VertTwoFingerScroll相反,但它们似乎是布尔值,而且这可能是一个疯狂的想法。http://www.x.org/archive/X11R7.5/doc/man/man4/synaptics.4.html - joeytwiddle
50-synaptics-conf 应该改为 50-synaptics.conf,否则在 Lubuntu 14.04 上这个方法对我有效。 - Peppe L-G
@PeppeL-G 是的,谢谢关注,我会立即进行更正。 - Елин Й.
1这可能是最好的解决方案,因为它不受使用的桌面环境的限制。对于我的Ubuntu 14.10来说,xorg.conf.d文件夹和文件并不存在,所以我需要手动创建它们,并创建一个自定义的InputSection - 0xAffe
这是一个很好的答案,因为它适用于使用X.org的任何Linux发行版。 - Josh Glover
这个答案适用于运行gnome-shell 3.20的Ubuntu GNOME 16.04 - 触摸板被反转了,找不到桌面选项来更改它。 - benJ
如果你像我一样是个白痴,把这些设置放错了位置,因为你读得太快没有注意,它会导致X启动失败,留下一个黑屏。幸运的是,你可以使用<kbd>Ctrl</kbd> + <kbd>Alt</kbd> + <kbd>F1</kbd>或者其他<kbd>F</kbd>键切换到登录控制台,在那里纠正你的错误。 - William Brawner
@BillyBrawner 我已更新答案并添加了整个部分的代码片段。 - Елин Й.
此外,我已经添加了一个信息,针对16.04版本,文件不应直接编辑。这也可能适用于旧版本,但目前我没有任何旧版Ubuntu进行测试。 - Елин Й.
请注意,这里所说的不是速度本身,而是速度的倒数:数值越高(绝对值),滚动速度就越慢。111和-111比31和-31滚动得更慢。 - Ciprian Tomoiagă

更新:这个解决方案对使用GTK3的应用程序(如核心GNOME应用程序Nautilus(文件浏览器))无效。请参考下面的D Charles Pyle's answer以获取适用于所有应用程序的解决方法。或者关注Gnome bug 682457以了解核心修复进展,而不需要解决方法。
您可以使用“Natural Scrolling”来实现系统范围内的反向滚动。 什么是自然滚动? 自然滚动是一个GNOME小程序,允许您反转滚动方向。您向上推动手指将页面内容向上移动(向下推动则向下移动),就像在iOS设备上一样。不再移动滚动条,而是移动文件。 安装自然滚动: 可以从其PPA安装自然滚动。
按下Alt+Ctrl+T打开终端并运行以下命令:
sudo add-apt-repository ppa:zedtux/naturalscrolling sudo apt-get update sudo apt-get install naturalscrolling
如何启用自然滚动?
安装完成后,按下Super键(Windows键)打开Unity Dash并搜索“natural scrolling”,然后打开它。您将在Unity面板中看到一个新的指示器,单击它并选择您的设备。在首选项中,您可以设置它在登录时启动。 就是这样!

enter image description here


1可以隐藏图标吗? - Steven Roose
3它在像Nautilus和USC这样的系统窗口上无法正常工作。 - Nur
在Fedora上对我没用。Pyle的答案实际上适用于所有情况(终端,eclipse等)。请参阅http://askubuntu.com/a/519859/277750 - robert
Err:19 http://ppa.launchpad.net/zedtux/naturalscrolling/ubuntu bionic Release 404 Not Found [IP: 2001:67c:1560:8008::15 80] - mLstudent33

在Ubuntu 14.04到Ubuntu 20.04上,前往“设置”,然后选择“鼠标和触摸板”,并选择“自然滚动”。

enter image description here


2这对我来说在16.04上有效,但是我需要检查自然滚动并重新启动 :) - rafaelphp

你所说的反向滚动被称为“自然滚动”,在Ubuntu中可以通过多种方式启用。这里有一篇OMG! Ubuntu!的文章详细介绍了如何安装能够满足你需求的软件。如果你熟悉Ubuntu Tweak,也可以在最新版本中启用它。

太棒了,谢谢。在Ubuntu Tweak中的“自然滚动”也会影响鼠标,我会看看.Xmodmap的调整是否有效。 - Naftuli Kay

使用以下方法获取设备ID:
xinput list

从这个命令中获取数字。
xinput list-props {device id} | grep "Scrolling Distance"

例如,一个示例输出:
Synaptics Scrolling Distance (290): 102, 102

这里,我们对数字102、102感兴趣。在你的情况下,它们可能是其他数字。只需将这些数字的负数放入下面提到的配置中。
编辑~/.profile文件,在文件末尾添加以下几行。
synclient VertScrollDelta=-102
synclient HorizScrollDelta=-102

注销并重新登录,自然滚动应该正常工作。

1在Xubuntu 14.04上,排在前面的最受欢迎的方法对我来说都不起作用。但是这个方法却有效! - rajb245
2这是我在GNOME + Arch上唯一有效的方法。谢谢你。 - tmsimont
3这些行应该放在 ~/.xsessionrc 中,而不是 ~/.profile。 - Timothy Zorn
Ubuntu 17.10在鼠标设置中有一个“自然滚动”复选框,但没有效果。我也尝试了dconf-editor,但它也无法启用自然滚动。这是唯一有效的方法。 - Ajay M

在Basharat Sial的回答中提到的自然滚动应用程序并不能修复某些系统窗口中的自然滚动问题。
作为替代,我推荐使用这个回答中提供的指南。当您使用他的指南时,您将不再需要自然滚动应用程序。

设置自然滚动系统范围内并使其与所有系统应用程序配合工作的最简单方法是设置以下文件。
仅适用于触摸板:

/usr/share/X11/xorg.conf.d/20-natural-scrolling-touchpads.conf

Section "InputClass"
    Identifier "Natural Scrolling Touchpads"
    MatchIsTouchpad "on"
    MatchDevicePath "/dev/input/event*"
    Option "VertScrollDelta" "-111"
    Option "HorizScrollDelta" "-111"
EndSection

仅限鼠标使用:

/usr/share/X11/xorg.conf.d/20-natural-scrolling-mouses.conf

Section "InputClass"
    Identifier "Natural Scrolling Mouses"
    MatchIsPointer "on"
    MatchIsTouchpad "off"
    MatchDevicePath "/dev/input/event*"
    Option "VertScrollDelta" "-1"
    Option "HorizScrollDelta" "-1"
    Option "DialDelta" "-1"
EndSection

无论是鼠标还是触摸板,都要创建两个文件。
然后,重新启动。
使用这两种配置的好处是它们不依赖于特定设备。您可以插入其他鼠标、触摸板或带有触摸板的键盘,它们都可以正常工作。

1在Ubuntu 17.10上工作过。 - vikrant

请按照以下步骤来广泛改变滚动方式。
在终端上输入:xev -event mouse。你会得到一个小框,在你把鼠标移到那个区域时,终端里会生成大量数据。
往上滚动时,注意按钮的名称,比如说“x”(在我的情况下是按钮5)。同时也要记下往下滚动时按钮的名称,比如说“y”(在我的情况下是按钮4)。
通过使用cp ~/.Xmodmap ~/.Xmodmap.bak创建~/.Xmodmap文件的备份。
执行cat ~/.Xmodmap命令。输出会像这样:pointer = 1 2 3 5 4 6 7 8 9 10 11 12 在上述输出中搜索x和y,它们将会连续出现并且只需要交换它们的位置。 在我的情况下,echo "pointer = 1 2 3 4 5 6 7 8 9 10 11 12" > ~/.Xmodmap && xmodmap ~/.Xmodmap有效。注意45的位置互换。
现在滚动将在整个系统中生效,无需重新启动。

3对于大多数用户来说,这可以简化为一个指令:echo "pointer = 1 2 3 5 4 6 7 8 9 10 11 12" >>~/.Xmodmap && xmodmap ~/.Xmodmap - tremby