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


114

两指滚动可以正常工作,但是有没有办法我可以反转方向(自然滚动)?似乎向后反对OSX的方式。


我已经使用了一天,现在我想反转向上和向下箭头键滚动页面的方向。
joeytwiddle 2014年

3
gsettings set org.gnome.desktop.peripherals.touchpad natural-scroll true在16.04为我工作
Yibo Yang

Answers:


94

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

因此,首先打开系统设置>鼠标和触摸板。如下面的屏幕截图所示,如果有内容粘住手指的选项,请选中它。然后,滚动条将以相反的方向工作。


也可以通过DConf编辑器访问。去org.gnome.settings-daemon.peripherals.touchpad检查natural-scroll


您还可以在命令行上设置此选项:

gsettings set org.gnome.settings-daemon.peripherals.touchpad natural-scroll true

最后,是时候实现它们了:)
Naftuli Kay 2013年

我没有考虑问题日期!:D
Alen

3
不幸的是,它在Nautilus和其他一些应用程序中不起作用,尽管在其他应用程序中也起作用
特别是

3
14.04的“ 系统设置”>“鼠标和触摸板 ”被列为“自然滚动”,并且包括Nautilus在内都可以正常工作。
史蒂文·阿尔默罗斯

1
如果要在没有GUI的情况下设置滚动方向,请在终端中使用以下命令(这将永久地为每个用户设置设置):gsettings set org.gnome.desktop.peripherals.touchpad natural-scroll false或鼠标gsettings set org.gnome.desktop.peripherals.mouse natural-scroll false。(Fedora 24将鼠标识别为触摸板,因此请使用命令行.touchpad,请参见forums.fedoraforum.org/…和Fedora bug bugzilla.redhat.com/show_bug.cgi?id=1352159
erik

78

有几种方法可以为鼠标启用系统范围的反向或自然滚动。我尝试过的只有两种方法可以在所有窗口中启用它,包括gedit,终端,软件中心,鹦鹉螺等。最简单的方法是执行以下操作。此方法将需要最新版本的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,显示3次并用逗号分隔)。您将使用在输出中获得的数字的负值。另外,确保记下属性编号(在输出中的括号中;对于我而言,在Ubuntu中为(272),在Fedora中为(273))。

注意:如果没有包含“ Scrolling Distance”属性的输出,则此方法将对您不起作用,您需要在此处停止并跳到本指南下方显示的替代方法。

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

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中也没有“ Scrolling Distance”属性),则可以执行以下操作:

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

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;相应地调整您的设备ID )。

sh -c“ sleep 5; exec xinput set-prop 11 272 1”

之后,保存文件并注销。再次登录时,您应该按用户自然滚动,或者可以在所有用户的自动启动中进行设置。


完善!我不必使用替代方法。Lenovo Helix,Arch Linux,Gnome 3.16和Logitech MX无线鼠标。谢谢!
eduncan911

谢谢!对于其他用户(使用像我这样的多个键盘)...此答案中有关xinput set-prop等的部分仅用于避免重启。
罗伯特

没有evdev的“替代方法”在Fedora 22上对我不起作用,并且使鼠标指针无响应(无法加载鼠标模块)。
罗伯特2015年

1
是的,我发现替代方法不再适用于Fedora 22及更高版本。您可以在Evdev或libinput之间进行选择。如果安装Evdev驱动程序,请不要使用其他方法。它不会工作。无论如何,使用Fedora 22都会获得Evdev的最新版本之一,因此替代方法是该版本中的争议点,尽管它仍然可以在其他发行版中使用,直到将最新的更改合并到其中为止。我建议使用Evdev而不是libinput。Libinput仍然是非常有问题的,在这里无法使用这两种方法。
D. Charles Pyle

1
第二种方法在Ubuntu 14.04中对我有用,第一种方法在Ubuntu 16.04中对我有用。其次在Ubuntu 16.04上不起作用。可能是由于最新的evdev ..
天行者

43

我认为在Ubuntu 12.10及更高版本上实现此目的的最简单,最好的方法(未在12.04及更低版本上进行测试)是编辑突触配置:

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

将这些行添加到Section "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或肉桂的注意事项:

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

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

取消选中活动

PS:

默认值为111,它表示速度,这意味着您可以使用该值来调整滚动速度以适应您的喜好。将其设置为负值可使其简单地沿相反方向滚动。


这也适用于12.04,但不适用于Nautilus。
拉尔斯·尼斯特罗姆(LarsNyström),2013年

在13.04中适用于文件(Nautilus)。我不知道为什么它在12.04中不起作用。我在12.10中使用了这种方法,现在在13.04中使用了这种方法。
ЕлинЙ.

Ubuntu 12.04使用Nautilus版本3.4.2。我相信较新版本的Ubuntu使用较新版本的Nautilus。
拉尔斯·尼斯特罗姆(LarsNyström),

+1。我原本希望以VertEdgeScroll相反的方式走下去,VertTwoFingerScroll但它们似乎是布尔值,无论如何这可能是一个疯狂的主意。 x.org/archive/X11R7.5/doc/man/man4/synaptics.4.html
joeytwiddle 2014年

1
这可能是最好的解决方案,因为它独立于所使用的桌面环境。对于我的Ubuntu 14.10,该xorg.conf.d文件夹和文件不存在,因此我需要手动创建它们并创建自定义InputSection
0xAffe 2014年

18

更新:此解决方案不适用于使用GTK3的应用程序,例如Nautilus(文件浏览器)之类的核心Gnome应用程序。有关适用于所有应用程序的解决方法,请参见下面的D Charles Pyle的答案。或关注Gnome错误682457,以获取不需要解决方法的核心修复程序。

您可以使用“ 自然滚动 ”进行系统范围的反向滚动。

什么是自然滚动?

自然滚动是GNOME Applet,可让您反转滚动方向。就像在iOS设备上一样,您向上推动手指可向上移动页面内容(向下可向下移动)。除了文件之外,不要再移动滚动条。

安装自然滚动:

可以从其PPA安装自然滚动。

点击Alt+ Ctrl+ T打开终端并运行以下命令:

sudo add-apt-repository ppa:zedtux / naturalscrolling
sudo apt-get更新
sudo apt-get install naturalscrolling

如何启用自然滚动?

安装后,按超级键(Windows键)以打开Unity破折号并搜索“自然滚动”并打开它。您将在Unity面板中看到一个新指示器,单击它并选择您的设备。在首选项中,您可以将其设置为从登录开始。而已!

在此处输入图片说明


1
是否可以隐藏图标?
史蒂文·罗斯

3
它在诸如nautilus和USC的系统窗口上不起作用。
2013年

在Fedora上对我不起作用。实际上,Pyle的答案适用于所有情况(末期,日食等)。参见askubuntu.com/a/519859/277750
罗伯特(



12

使用以下方法获取设备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 '16

2
这是对GNOME + Arch唯一有效的方法。THANK YOU
tmsimont

2
这些行应放在〜/ .xsessionrc中,而不是〜/ .profile中
Timothy Zorn 2016年

Ubuntu 17.10在“鼠标设置”中具有“自然滚动”复选框,但无效。也尝试过dconf-editor,它也没有启用自然滚动。这是唯一有效的方法。
Ajay M

9

Basharat Sial的答案中提到的“自然滚动”应用程序无法修复某些系统窗口中的自然滚动。

另外,我建议此答案中提供的指南。使用他的指南时,您将不再需要自然滚动应用程序。


7

在系统范围内设置自然滚动并使其与所有系统应用程序一起使用的最简单方法是设置以下文件。

仅触摸板:

/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,2017年

5

请按照以下步骤系统广泛地更改滚动。

  1. 在终端上输入:xev -event mouse。您会得到一个小盒子,将鼠标移到该部分时,您会在终端中生成大量数据。
  2. 向上滚动时,记下按钮名称,让我们说“ x”(在我的情况下是按钮5)。还要记下向下滚动时的按钮名称,让我们说“ y​​”。在我的情况下是“ 4”。
  3. 使用创建~/.Xmodmap文件备份cp ~/.Xmodmap ~/.Xmodmap.bak
  4. cat ~/.Xmodmap。输出会像pointer = 1 2 3 5 4 6 7 8 9 10 11 12
  5. 在上面的输出中搜索x和y,它们将处于连续位置,只需交换它们即可。以我echo "pointer = 1 2 3 4 5 6 7 8 9 10 11 12" > ~/.Xmodmap && xmodmap ~/.Xmodmap为例。需要注意的开关45
  6. 现在,滚动将在系统范围内应用。无需重启。

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

4

您还可以使用Ubuntu Tweak工具启用自然滚动(其他设置)

屏幕截图

带有.deb发行版的官方主页:http : //ubuntu-tweak.com/


我可以确认这适用于14.10。由于某些原因,我无法安装naturalscrollingpackage(W:未能获取ppa.launchpad.net/zedtux/naturalscrolling/ubuntu/dists/utopic/…404 未找到)
BoD

我在16.04上尝试过此方法,尽管该选项位于“其他”下的“调整”中,但它根本没有更改滚动顺序(从注销后重新登录)。
布莱恩·怀特

3

naturalscrolling包装似乎并不为Ubuntu 12.10的工作。我安装了Ubuntu Tweak:

sudo add-apt-repository ppa:tualatrix/ppa
sudo apt-get update
sudo apt-get install ubuntu-tweak

您可以在处调整滚动

调整->其他->自然滚动


2

在较新版本的GNOME(至少从3.6开始)中,不再需要安装扩展。可以在标准GNOME“鼠标和触摸板”设置下找到它。然而,有些令人困惑的是,地精决定将其命名为“ 内容贴在手指上 ”。


2

基于此博客,以下脚本在Ubuntu 12.04上对我有用。它将触摸板的水平和垂直滚动比例因子都设置为负值(通常可确保“自然”滚动)。它“在后台”执行操作,因此所有应用程序都将受到影响,即使那些不注意tweakUI调整设置的应用程序也是如此。那里有一些不必要的命令和注释,因此您可以查看发生了什么。您可能需要关闭TweakUI或类似程序中的任何自然滚动设置。

xinput list | grep "[Tt]ouch" | grep "id=([0-9]+)"
# ⎜   ↳ SynPS/2 Synaptics TouchPad                  id=11    [slave  pointer  (2)]
id=`xinput list | grep -Po "[Tt]ouch[^=]*id=[0-9]+" | grep -Po [0-9]+`
xinput --list-props $id | grep "Scrolling Distance"
# Synaptics Scrolling Distance (269):    -107, -107
# Synaptics Circular Scrolling Distance (282):    0.100000
prop_id=`xinput --list-props $id | grep -P ".*[^C][^i][^r][^c][^u][^l][^a][^r]\sScrolling Distance" | grep -Po '\([0-9]+\)' | grep -Po "[0-9]+"`
prop_xy=xinput --list-props $id | grep -P ".*[^C][^i][^r][^c][^u][^l][^a][^r]\sScrolling Distance" | grep -Po '\s+[-+]{0,1}[0-9]+\,\s*[-+]{0,1}[0-9]+' | tr -d '-'
xinput --list-props $id |  -P ".*[^C][^i][^r][^c][^u][^l][^a][^r]\sScrolling Distance" | grep -Po '\s+[-+]?[0-9]+[,]?' | tr -d '-' | tr -d ',' | tr ' \t' '-' | xargs xinput --set-prop $id $prop_id
nautilus -q
nautilus -n &

3
你可以尝试| grep -v 'Circular'[^e][^x][^t][^r][^a] [^r][^e][^a][^d][^a][^b][^i][^l][^i][^t][^y]。噢,愚蠢的我,才意识到您是一个-Perl编码器!
joeytwiddle

确实。愚蠢的我在一个地方而不是全部地方使用-P来为自己工作。将修复。
滚刀

实际上,我正在尝试否定正则表达式的一部分,而不是另一部分,因此@joeytwiddle简化不高兴。正则表达式的拒绝与否定相结合效果很好(错误-P或其他)
滚刀2014年

1
呵呵。我的建议是需要一个额外的命令,该命令肯定效率较低(无论如何在单处理器计算机上)。看起来像这样:... | grep -v 'Circular' | grep "\sScrolling Distance" | ... 交换它们可能更有效。嗯
joeytwiddle 2014年

是的,但是您的字符串将与我的完全不同。您将排除所有带有“ Circular”的字符串。我的将仅排除那些在“滚动”之前紧接“圆形”的对象。我的绝对是丑陋的,但是它的表现却有所不同,这是我测试过的唯一的一个,并确保它足够正确(它在我的机器上可以工作)。
滚刀

0

好的,所以我让Firefox滚动一种方式,而Evolution滚动另一种方式。我在“系统设置”下设置了自然滚动,但是发现Ubuntu调整了自然滚动以抵消某些应用程序中的滚动。我必须同时将系统设置和Ubuntu调整都设置为自然滚动,以使通用滚动朝着同一方向前进,否则它们似乎会互相影响。我花了好几个小时才弄清楚。


0

这适用于Mate以及大概其他在控制面板中没有简单选项的环境。

如果您已经有一个.Xmodmap文件,请手动添加此行。

# standard
echo "pointer = 1 2 3 4 5 6 7 8 9 10 11 12" > ~/.Xmodmap && xmodmap .Xmodmap


# "natural"
echo "pointer = 1 2 3 5 4 6 7 8 9 10 11 12" > ~/.Xmodmap && xmodmap .Xmodmap

0

我使用了@D的替代方法。查尔斯·派尔(Charles Pyle)提到,但稍作修改:

Option "ZAxisMapping" "4 5" 

代替

Option "ZAxisMapping" "5 4"

Ubuntu 14.04,GNOME,Logitech光电鼠标


0

在12.04.5

sudo add-apt-repository ppa:zedtux/naturalscrolling
sudo apt-get update
sudo apt-get install naturalscrolling

通过自然滚动应用程序搜索开始

右键单击右上方菜单中的图标。自然滚动>您的设备

另外,首选项>从登录开始


0

我刚刚得到了一个新的Latitude E5570,它受到错误#1590590(以及其他错误的影响::\),并且在此注释中提供了一个非常快速简便的解决方案:

〜/ .xinputrc

xinput设置按钮映射“ ImPS / 2通用滚轮鼠标” 1 2 3 5 4 6 7

这样,仅无法识别的触摸板的两指滚动方向将被反转,而外部鼠标的滚轮滚动方向将不会改变。

此外,由于unity / gnome中的某些错误,并非所有应用程序都正确解释.xinputrc / .Xmodmap命令。因此,例如chrome / firefox可以,但无论.xinputrc / .Xmodmap内容如何,​​鹦鹉螺窗口仍将使用“自然”滚动。我没有找到解决这些矛盾的方法。

唯一真正的解决方案当然是在内核级别适当地支持我们的触摸板

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.