将笔记本电脑触控板用作绘图板

Bar*_*den 17 trackpad

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

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

ger*_*ijk 9

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

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

  • 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
Run Code Online (Sandbox Code Playgroud)

实际上把Synaptics的设备在Xorg的绝对模式的能力已被最近删除了该提交xf86-input-synaptics驱动程序:

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.
Run Code Online (Sandbox Code Playgroud)

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

我认为目前在 Linux 中实现这一点的唯一方法是使用evdevXorg 中的驱动程序。它被讨论早在2010年Xorg的邮件列表(以下摘录)上:

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

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

Section "InputClass"
    Identifier "evdev touchpad"
    MatchIsTouchpad "on"
    Driver "evdev"
    Option "Mode" "absolute"
EndSection
Run Code Online (Sandbox Code Playgroud)

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

底线:创建功能请求

在上游 bugtracker上看到了针对突触驱动程序(可能还有其他)的功能请求的空间。在 Xorg 中有一个界面能够读取触摸板的绝对位置值将非常有用。我看到的主要障碍是这可能是非常特定于硬件的,因此很难实现。

我认为与 Joe Shaw 和 Peter Hutterer 交谈也很有价值,可以了解这其中的历史究竟是什么,如何使其成为一个很好的功能请求以及对它的期望。

  • 以防万一有人仍然对此感兴趣,我提交了一个错误:https://bugs.freedesktop.org/show_bug.cgi?id=75322 (2认同)
  • 更新:我的功能请求被拒绝,维护者表示他“后悔一开始就合并它”。我会研究代码,可能会分叉它。如果我这样做了,我会在这里发布最后一条评论,以便任何对它感兴趣的人都可以看到它。抱歉发送垃圾邮件。 (2认同)