高级惯性滚动配置

高级惯性滚动配置

是否可以以某种方式配置突触惯性滚动,以便在按下键盘上的任何键时它会被中断?

解释一下这个问题:我经常使用快捷键。现在,当我浏览网页并使用惯性滚动返回网站顶部时,如果我尝试使用Ctrl+打开新标签,我会疯狂地缩放网站T,因为浏览器只检测Ctrl+ scrolling

很多应用程序都会出现这种情况,真的很烦人。我以前很喜欢惯性滚动,但只要这个问题持续存在,我就不得不禁用它。

答案1

恐怕这已经在 Xorg 上讨论并标记为“已解决”,但不会被修复,因为 Xorg 不会意识到您何时按下Ctrl,并且惯性滚动仍然存在。(见Peter Hutterer 的评论以及与的类比Ctrl)。

因此,至少在我们拥有 Unity 8 之前(当 Xorg 被 Mir 取代并且希望我们能看到这个问题真正得到解决时),我们只能采取一种临时解决办法,而不是完美修复或完全禁用惯性滚动。

我建议的修复方法之一是禁用应用程序本身的Ctrl+scrolling功能。这肯定是一个不干净的解决方案,因为问题仍然存在,但只是消除了效果,而且您​​必须对最常使用惯性滚动的应用程序执行此操作。

要在 Firefox 中禁用Ctrl+功能,请在地址栏中输入 ,然后单击“我会小心的,我保证!”现在,在搜索栏中,输入 并双击第一个结果并将其值设置为,这样只会滚动内容而不是缩放。您可以将其值设置为以下值并产生相应的效果:scrollingabout:configmousewheel.with_control.action1

  • 0(已禁用)
  • 1(滚动内容)
  • 2(在历史记录中后退/前进)
  • 3(默认,放大/缩小)

如果我能找到更清晰、更好的解决方案,我会更新答案。

答案2

角落滑行有帮助!虽然不是真正的解决办法,但我发现使用 Synaptics 驱动程序CornerCoasting模式而不是普通的(手指离开)惯性滚动模式会有所帮助。原因:当手指保持在角落时,角落滑行模式处于活动状态,释放时立即停止。虽然Ctrl在角落滑行期间按下按钮仍然会产生您描述的“Firefox 缩放疯狂”问题,但我发现当我积极参与某项操作时(即手指放在触摸板上而不是手指离开滑行),我不太可能这样做。

尝试转弯滑行。以下命令将设置转弯滑行模式:

synclient VertEdgeScroll=1 CornerCoasting=1 CoastingSpeed=1 CoastingFriction=0

VertEdgeScroll=1是因为角部滑行仅适用于边缘滚动,而不适用于双指滚动。如果您喜欢在右边缘和下边缘进行角部滑行,请HorizEdgeScroll=1在上面一行中添加。CornerCoasting=1启用角部滑行模式。CoastingSpeed是滑行期间滚动的最小速度,但这似乎也是触发该模式的最小光标速度。因此,我将其设置为最小值,以便最容易触发该模式,否则可能会很棘手(并且对于类似 这样的模式则不可能CoastingSpeed=100)。CoastingFriction是让惯性滚动淡出的值。我们在这里禁用它以使其一直持续到您抬起手指,这与通常在手指离开传统滑行中所需的不同。有关这些选项的更多详细信息,请参阅Synaptics 手册页

手册页中没有提到的一点:角落滑行似乎是通过从非角落边缘区域滑动到角落区域来实现的,然后把手指放在那里。因此,如果您不小心抬起手指,即使时间很短,碰到/越过触摸板边缘,角落滑行运动也会停止。“移动到角落区域”触发模式还意味着,如果您的TopEdgeBottomEdge参数在边缘留下很少或没有非角落区域,角落滑行将不起作用或难以触发。这些在这里很重要,因为角落区域由边缘区域的交叉点定义。此外,如果没有可访问大小的右边缘区域,触发角落滑行也将很困难甚至不可能。对于我的硬件(ThinkPad X201),我发现这些值运行良好(您的可能不同,需要进行一些实验):

synclient RightEdge=4800 TopEdge=2000 BottomEdge=4000

使角落滑行保持粘性。虽然synclient这对于测试设置并立即生效非常有用,但它们会在重新启动 X 时丢失。为了使它们保留下来,请创建一个/etc/X11/xorg.conf.d/51-synaptics-cornercoasting.conf或类似名称的配置文件如这里所述(它也适用于 Ubuntu!)。对于上述情况,内容将是:

Section "InputClass"
    Identifier "Touchpad tweaks"
    Driver "synaptics"
    MatchIsTouchpad "on"
        Option "VertEdgeScroll" "on"
      # Option "HorizEdgeScroll" "on" # Enable if you want this.
        Option "CornerCoasting" "on"
        Option "CoastingSpeed" "1"
        Option "CoastingFriction" "0"

        Option "RightEdge" "4800"
        Option "TopEdge" "2000"
        Option "BottomEdge" "4000"
EndSection

然后重新启动X就可以看见效果了。

答案3

可能的替代品。如果您因为这个错误太烦人而想要完全禁用惯性滚动,那么有一些可能的替代方案(不完全是惯性滚动,但可以使用类似的轻松滚动模式来代替):

全系统:

  • 灵敏的 Trackpoint 按钮滚动。这使用 ThinkPad 轨迹点(但可以修改为其他轨迹点)在按下鼠标中键时进行滚动。这称为“按钮滚动“在libinput驱动程序中,以及旧版evdev驱动程序中的“鼠标滚轮模拟”。

    这里的理念是,您可以将其设置为非常敏感,这样只要稍微施加一点持续的压力就可以快速滚动长页面。要配置此功能,请参阅这个问题,尤其是@htorque 的回答与驱动程序配合最佳libinput(自 Ubuntu 17.10 起为默认设置)。

特别是对于 Firefox:

  • 抓取和拖动扩展这提供了一种惯性抛出/惯性拖动模式,与双指惯性滚动非常相似。将其配置为使用鼠标左键,这是与触摸板上的双指惯性滚动最相似的模式。只需用一根手指点击并按住,然后“抛出网页”。这当然会干扰选择文本,但他们有一个按钮可以暂时禁用扩展。

    文本选择干扰很烦人,但将其配置为触摸板上的任何其他鼠标按钮会使使用变得非常棘手。(例如,使用中键单击,这可以配置就像用两根手指点击触摸板一样,它将是:用两根手指点击,用两根手指点击并按住,抬起一根手指,然后像上面一样抛出动作:D)。

  • 自动滚动。这个答案了解如何设置。此外,设置双指点击创建中键单击 – 实际上只是synclient TapButton2=2。现在,双指单击将调出 Firefox 中的自动滚动元素,将鼠标指针移开将永久滚动到该方向,直到单击。遗憾的是,移动指针必须用一根手指完成。(即使禁用了两根手指滚动,它也无法用两根手指工作。)我无法找到如何将此功能的滚动方向反转为“自然”。

相关内容