使用笔记本电脑触控板作为图形输

我有兴趣使用我的笔记本电脑触控板作为绘图板,即使用绝对坐标而不是相对坐标,类似于Inklet for OSX。

2010年5月在ubuntuforums.org上提出了同样的问题,但问题从未得到解答。 我想知道这是否已在Linux上完成。 我也想弄清楚要使用哪些搜索词。 我搜索了“linux笔记本电脑触摸板绝对模式”,并提出了跟踪板驱动程序的问题,它将触控板置于绝对模式。 但我真的在寻找一个使用绝对位置而不是驱动程序设置的程序。

看看驱动程序,而不是应用程序

您将找不到执行此操作的程序,因为驱动程序尝试将这三种类型的触摸板抽象为应用程序的单个表示:

  • 触摸板报告绝对位置数据正由Xorg驱动程序转换为应用程序的相对移动。 常规应用程序无法直接与触摸板通信(按设计),因此您必须在驱动程序中寻找解决方案。
  • 具有相对和绝对模式的触摸板需要切换模式,这是非常特定于硬件而不是应用程序感知的。
  • 一些更基本的触摸板不具有报告绝对位置的能力。

不幸的是,即使您的触摸板几乎能够报告所有绝对值,大多数触摸板驱动程序也不允许您在Linux应用程序中使用它们。 绝对数据确实存在,因为驱动程序可以检测您是否在边缘触摸它以进行滚动。 在虚拟终端中使用evtest测试(暂停X)。 我的Synaptics触摸板报告绝对位置如下:

 Event type 3 (EV_ABS) Event code 0 (ABS_X) Value 3332 Min 1472 Max 5648 Fuzz 8 Resolution 39 Event code 1 (ABS_Y) Value 2017 Min 1408 Max 4806 Fuzz 8 Resolution 79 

最近在xf86-input-synaptics驱动程序中通过此提交删除了在Xorg中实际将Synaptics设备置于绝对模式的function:

 Remove absolute mode Moving a touchpad in absolute mode is unusual - touchpads are disconnected from the output device, so direct interaction is hard. There appears to be little usage of it (I haven't seen bug reports from people claiming to use it). Joe Shaw, author of the code and only known user doesn't have a use for it anymore, so purge it from the repo. 

系统范围的基本驱动程序:evdev

我现在在Linux中看到这种可能性的唯一方法就是在Xorg中使用evdev驱动程序。 它在2010年的Xorg邮件列表中进行了讨论 (下面的摘录):

我必须在触摸板上获得手指的绝对位置,而不仅仅是相对运动。

synaptics驱动程序不会这样做,但evdev驱动程序会这样做。 因此,您需要将X服务器配置为使用触摸板的evdev驱动程序。 如果您正在运行服务器1.8或更高版本,以下配置代码段将为您执行此操作。

 Section "InputClass" Identifier "evdev touchpad" MatchIsTouchpad "on" Driver "evdev" Option "Mode" "absolute" EndSection 

将其保存为/etc/X11/xorg.conf.d/99-evdev-touchpad.conf并重新启动服务器。 请注意,这只会改变触摸板本身的行为,而不是事件中的数据,但是无论如何数据总是绝对的。 此外,通过使用evdev而不是synaptics,您将失去双指滚动,点击等function。

底线:创建function请求

我在synaptics驱动程序(可能还有其他人) 的上游bugtracker上看到了一个function请求的空间。 在Xorg中使用接口能够读取触摸板的绝对位置值非常有用。 我看到的主要拦截器是这可能是特定于硬件的,因此很难实现。

我认为与Joe Shaw和Peter Hutterer交谈也很有价值,看看这个历史是什么,如何使它成为一个伟大的function要求以及从中得到什么。

这在很大程度上取决于我认为的硬件。你的触控板需要支持放弃触摸的绝对位置。 普通的笔记本电脑触控板更像是鼠标,只提供方向,速度和加速度信息。 因此,无论您在何处触摸,它都只会从光标的当前方向移动。