创建类似Wacom的Linux uinput设备以使用触摸屏和笔

问题描述 投票:4回答:1

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

我目前拥有一台安装了Ubuntu和触摸屏功能的Lenovo笔记本电脑,并拥有一个pressure-sensitive Bluetooth pen,并一直试图使两者作为廉价的类似于Cintiq的平板电脑一起工作。

不幸的是,该笔仅支持iOS手机和平板电脑的特定应用程序。因此,经过大量研究,我设法与笔进行了交互并为其创建了一个uinput设备,因此我可以在笔上注册按钮的点击和压力变化,甚至可以看到它们在通过键盘配置设备时被路由到了GIMP。 输入控制器菜单。

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

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

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

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

更新(2014-06-07)

上面提到的代码现在可以使用。

我已经写了一篇博客文章,介绍了如何使其正常工作:http://gerev.github.io/laptop-cintiq

linux gimp input-devices
1个回答
3
投票

如您所说,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并未实现它们并且可以正常工作。


0
投票

我真的不知道正确的答案。

但是Google的“ Linux开源触摸笔驱动程序”将我带到了[linuxwacom sourceforge project←。

似乎正在解决您遇到的问题,并且有source code可供下载和分析(今年更新),并且有人要问:)

© www.soinside.com 2019 - 2024. All rights reserved.