自然滚动不适用于水平滚动,如何解决?

Eli*_*lka 8 touchpad synaptics ubuntu-tweak 12.04 scrolling

我已经通过Ubuntu Tweak的其他选项启用了自然滚动,但这似乎对水平滚动不起作用 - 无论是在网络浏览器中,还是在 nautilus 或其他本机应用程序中。

有没有办法在水平滚动上强制执行这种行为?

我正在使用 Ubuntu 12.04。

Eli*_*lka 9

代替使用指定的应用程序来配置自然滚动,可以编写一个脚本来反转滚动方向 - 在垂直轴和水平轴上。

  1. 首先获取xinput滚动距离相关的prop(注意尖括号中的变量):

    $ xinput list
    ? Virtual core pointer id=2 [master pointer (3)]
    ?   ? Virtual core XTEST pointer id=4   [slave pointer (2)]
    ?   ? SynPS/2 Synaptics TouchPad id=<TOUCHPAD_ID>   [slave pointer (2)]
    ? Virtual core keyboard id=3    [master keyboard (2)]
        (...)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 获取该道具的适当值:

    $ xinput list-props <TOUCHPAD_ID> | grep "Scrolling Distance"
        Synaptics Scrolling Distance (<DISTANCE_KEY>):  <V_DISTANCE>, <H_DISTANCE>
        Synaptics Circular Scrolling Distance (301):    0.100000
    
    Run Code Online (Sandbox Code Playgroud)
  3. 然后,通过否定垂直/水平距离的值来创建脚本文件以应用相反的方向。输入之前返回的变量:

    #!/bin/sh
    xinput set-prop <TOUCHPAD_ID> <DISTANCE_KEY> -<V_DISTANCE> -<H_DISTANCE>
    nautilus -q
    nautilus -n &
    
    Run Code Online (Sandbox Code Playgroud)
  4. 授予文件执行权限,将其设置为在启动时运行,然后就可以了。

来源:

此方法是从Andy C. 的旧网络博客移植而来,以创建一个自包含的答案。谢谢你,安迪,提供了一个优雅的、系统范围的解决方案。

笔记

  • 似乎调用 nautilus 正在破坏 13.04 上的脚本。省略对 nautilus 的两次调用可以解决它。
  • 自然滚动(垂直和水平)在 14.x 中开箱即用,因此无需在那里编写脚本,只需在鼠标和触摸板选项中切换“自然滚动”即可。


tan*_*ius 4

还有一种xorg.conf基于“更好”的方法来使反转<V_DISTANCE><H_DISTANCE>设置(根据@Eliran的答案确定)永久:

创建一个目录/etc/X11/xorg.conf.d/,并在其中创建一个类似 的文件51-synaptics-tweaks.conf,其中包含:

Section "InputClass"
    Identifier "touchpad"
    Driver "synaptics"
    MatchIsTouchpad "on"
        Option "VertTwoFingerScroll" "on"
        Option "HorizTwoFingerScroll" "on"
        # In the following lines, use your own negative V_DISTANCE / H_DISTANCE values.
        Option "VertScrollDelta" "-113"
        Option "HorizScrollDelta" "-113"
EndSection
Run Code Online (Sandbox Code Playgroud)

这遵循 Ubuntu 在/usr/share/xorg.conf.d/*示例文件中的建议以及Archlinux 说明。要看到效果,当然要重新启动 X :)