创建类似Wacom的Linux uinput设备,以与触摸屏和笔一起使用
作者:互联网
这是一个相当广泛的问题,所以我将尽力保持它的重点.
我目前拥有一台安装了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
解决方法:
如您所说,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并未实现它们并且可以正常工作.
标签:gimp,input-devices,linux 来源: https://codeday.me/bug/20191121/2054849.html