我正在使用搭载 Ubuntu 20.04 的 Intel NUC。它主要用作 HTPC 和浏览网页。我想使用内置触摸板的无线键盘。我试过两个,每个都有类似的问题。当我使用两指滚动时,Logitech K400+ 喜欢自动缩放。它通常工作正常,但会定期放大。1byOne 的类似键盘在不缩放方面做得更好,但它喜欢将鼠标光标移动输入为滑动......这会将我带到另一个应用程序或桌面。
我已经阅读了几天有关 xinput 和 libinput 的内容。设备列表属性没有显示任何明显是缩放、捏合或滑动功能的内容。
我想找到 Linux 中处理触摸板输入的位置并让它忽略这些功能(我使用 ctrl-shift-+ 和 - 来放大和缩小...不想让触摸板这样做)。
我已阅读过有关更改为 synaptics 的信息,但在其文档中找不到任何可以回答我的问题的内容。
答案1
问题出在键盘本身。有关更多信息,请参阅 libinput 的回答。基本上,键盘没有适当的错误检测功能,并向系统发送用户不希望的信号。目前没有简单的方法来关闭手势。
答案2
在写这些话的时候,通过 libinput 代码 grepping 显示只有一个赋值给gesture.enabled
,在功能上tp_init_gesture
,其基本含义是“如果我们能够可靠地使用该触摸板执行手势,那么我们就执行它们”。因此 libinput 不允许禁用它们。
理论上,在 gnome-shell 进入应用程序之前拦截事件是可能的,但似乎没有任何“官方”方法可以做到这一点,因此如果评论中列出的扩展对您没有帮助,那么您似乎运气不佳。您可以为 gnome-shell 创建 RFE 以支持该功能
解决方法
作为一种黑客解决方法,您可以自己构建 libinput,并替换我引用的行
tp->gesture.enabled = !tp->semi_mt && tp->num_slots > 1;
和
tp->gesture.enabled = false;
这应该可以为你禁用手势。
我在#gnome:gnome.org Matrix 频道上提问,值得引用Alexander Mikhaylenko
当我使用两指滚动时,Logitech K400+ 会自动缩放。它通常工作正常,但会定期放大。1byOne 的类似键盘在不缩放方面做得更好,但它喜欢将鼠标光标移动输入为滑动。这会将我带到另一个应用程序或桌面
它们由 libinput 生成
我知道,因为我做了几个手势
硬件的工作是报告触摸位置
经常会出错
然后 libinput 尝试针对该特定设备进行修复
每次看到类似的错误,你都会将其报告给 libinput
因为它的工作是规范硬件发送的任何垃圾信息,以便 libinput 用户能够获得正确的事件
如果不可能的话,libinput 也是可以禁用该设备手势的组件
例如,它对所谓的半多点触控触摸板执行此操作
基本上,它发送的是手指数量和边界框,而不是旧的位置,如果你有一台<2013年的笔记本电脑,它可能有一个,除非它是一台MacBook
所以你可能想要向 libinput 报告问题。