自然滚动不适用于水平滚动,如何修复?

自然滚动不适用于水平滚动,如何修复?

我已启用自然滚动功能Ubuntu 调整的杂项选项,但这似乎对水平滚动不起作用——无论是在网络浏览器中,还是在 nautilus 或其他本机应用程序中。

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

我正在使用 Ubuntu 12.04。

答案1

不需要使用指定的应用程序来配置自然滚动,而是可以使用脚本来反转滚动方向(垂直轴和水平轴)。

  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)]
        (...)
    
  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
    
  3. 然后,通过否定垂直/水平距离的值来创建脚本文件以应用相反的方向。输入先前返回的变量:

    #!/bin/sh
    xinput set-prop <TOUCHPAD_ID> <DISTANCE_KEY> -<V_DISTANCE> -<H_DISTANCE>
    nautilus -q
    nautilus -n &
    
  4. 授予该文件执行权限,将其设置为在启动时运行,就这样。

来源:

此方法移植自Andy C. 的旧网络博客,以创建一个独立的答案。谢谢 Andy 提供了一个优雅的系统级解决方案。

笔记

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

答案2

还有一种“更好”的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

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

答案3

作为使用脚本文件或 Ubuntu Tweak 的替代方案,您还可以尝试由 Zedtux 制作的名为“Natural Scrolling”的应用程序。它将作为指示器出现。

要安装它,最简单的方法是使用终端:

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

答案4

在 xfce4 (Xubuntu、Ubuntu Studio 等) 中,您可以在控制台上添加此项:

echo 'pointer = 1 2 3 4 5 7 6 8 9 10 11 12' >> .Xmodmap
xmodmap .Xmodmap

相关内容