【问题标题】:Create a Wacom-like Linux uinput device for work with touchscreen and pen创建一个类似 Wacom 的 Linux uinput 设备,用于使用触摸屏和笔
【发布时间】:2023-03-11 19:42:02
【问题描述】:

这是一个相当广泛的问题,所以我会尽量保持重点。

我目前拥有一台安装了 Ubuntu 并具有触摸屏功能的联想笔记本电脑,并拥有一台 pressure-sensitive Bluetooth pen,并试图让这两者一起工作,成为一款廉价的类似 Cintiq 的平板电脑。

遗憾的是,该笔仅支持适用于 iOS 手机和平板电脑的特定应用。
因此,经过大量研究,我设法与笔进行交互并为其创建了一个uinput 设备,因此我可以在笔上记录按钮点击和压力变化,甚至在通过输入控制器菜单。

到目前为止,该接口的代码是available here

尝试使用 GIMP 进行测试时,麻烦就开始了。
据我所知,这是因为 GIMP 假设 Wacom 设备报告自己的位置,将触摸屏触摸视为鼠标移动,并且一次只允许来自单个设备的输入。

我的问题是,我该如何解决这个问题?

更具体地说,我如何创建一个uinput 设备,该设备将充当 Wacom 数位板并取代/阻止我描述的行为?
或者,如果有其他解决方案,例如修补 GIMP 或为其编写插件。

更新 (2014-06-07)

上面提到的代码现在可以工作了。

我已经写了一篇关于让它工作的过程的博客文章:http://gerev.github.io/laptop-cintiq

【问题讨论】:

  • 我真的不知道正确答案。但是谷歌“linux开源触控笔驱动”把我带到了→linuxwacom sourceforge project←。好像解决了你的问题,有source code可以下载分析(今年更新了)还有人要问:)

标签: linux gimp input-devices


【解决方案1】:

正如您所说,Gimp 希望您在驱动程序中提供 ABS_X 和 ABS_Y 以及 ABS_PRESSURE - 这并不奇怪,因为您使用虚拟设备作为输入,因此选择 ABS_X 和 ABS_Y 没有多大意义来自一个设备的坐标和来自另一个设备的 ABS_PRESSURE(尽管在这种情况下它们总是相同的)。也许您可以只读取鼠标的当前坐标并将它们复制为您自己的设备坐标。

作为示例,GfxTablet 项目与您正在尝试的类似,他们有一个带有笔的平板电脑的 Android 应用程序,并使用 uinput 创建虚拟设备,就像 Linux 上的压敏笔一样工作。我已经使用过它,它在我的笔记本电脑上的 Gimp 和 mypaint 中就像一个魅力,我没有问题让鼠标(或触摸板)与 uinput 设备同时处于活动状态(我认为 Krita 添加了对通用的支持最近的压敏设备)。你可以看一下驱动程序的源代码here(很简单,说句公道话)。

请注意,这不是 Gimp 的错误行为,因为这是平板电脑设备所期望的。看看event codes kernel documentation page,在最后一节(指南)中,据说平板电脑必须报告ABS_X和ABS_Y。此外,他们应该使用 BTN_STYLUS 和 BTN_STYLUS2 来报告工具按钮和一些 BTN_TOOL_*(例如 BTN_TOOL_PEN)来报告活动(您可以在 input.h 中找到所有可用代码);但是,最后这些似乎并不那么重要,因为 GfxTablet 没有实现它们并且工作没有问题。

【讨论】:

    猜你喜欢
    • 2014-09-02
    • 1970-01-01
    • 2016-04-27
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 2011-04-27
    • 1970-01-01
    • 2018-09-05
    相关资源
    最近更新 更多