这是一个相当广泛的问题,所以我会尽量保持专注。
我目前拥有安装了Ubuntu和触摸屏功能的联想笔记本电脑并拥有pressure-sensitive Bluetooth pen,并且一直试图将这两款笔记本电脑组合在一起,成为一款廉价的Cintiq平板电脑。
不幸的是,该笔只支持iOS手机和平板电脑的特定应用
因此经过大量研究后,我设法与笔接口并为其创建uinput
设备,因此我可以在笔上注册按钮点击和压力变化,甚至可以在配置时将它们路由到GIMP设备通过输入控制器菜单。
到目前为止,该界面的代码是available here。
当试图用GIMP测试时,麻烦就开始了 根据我的收集,这是因为GIMP假设Wacom设备报告自己的位置,将触摸屏触摸视为鼠标移动,并且一次只允许来自单个设备的输入。
我的问题是,我该如何解决这个问题?
更具体地说,如何创建一个uinput
设备作为Wacom平板电脑并取代/阻止我描述的行为?
或者,如果有不同的解决方案,例如修补GIMP或为其编写插件。
上面提到的代码现在有效。
我写了一篇关于让它发挥作用的博客文章:http://gerev.github.io/laptop-cintiq
答案 0 :(得分:3)
正如你所说,Gimp希望你在你的驱动程序中提供ABS_X和ABS_Y以及ABS_PRESSURE - 这并不奇怪,因为你使用虚拟设备作为输入,所以选择ABS_X和ABS_Y没有多大意义来自一个设备的坐标和来自另一个设备的ABS_PRESSURE(尽管在这种情况下它们将始终相同)。也许你可以只读取鼠标的当前坐标并将它们复制为你自己的设备坐标。
作为一个例子,项目GfxTablet做了类似你正在尝试的事情,他们有一个Android应用程序用于带有笔的平板电脑,并使用uinput创建虚拟设备,就像在Linux上使用压力敏感笔一样。我已经使用它了,它在我的笔记本电脑上就像Gimp和mypaint中的魅力一样,我在使用鼠标(或触摸板)与输入设备同时处于活动状态时没有任何问题(我认为Krita增加了对通用设备的支持)最近的压敏装置)。您可以查看驱动程序here的源代码(简单,简单,公平)。
请注意,这不是Gimp的错误行为,因为这是类似平板电脑的设备所期望的。看一下event codes kernel documentation page,在上一节(指南)中,据说平板电脑必须报告ABS_X和ABS_Y。此外,他们应该使用BTN_STYLUS和BTN_STYLUS2报告工具按钮和一些BTN_TOOL_ *(例如BTN_TOOL_PEN)来报告活动(您可以找到input.h中的所有可用代码);然而,这些最后似乎并不重要,因为GfxTablet没有实现它们并且没有问题地工作。
答案 1 :(得分:0)
我真的不知道正确的答案。
但Google“linux开源触控笔驱动程序”将我带到了linuxwacom sourceforge project←。
它似乎正在解决您遇到的问题,并且source codes需要下载和分析(今年更新)并且有人要问:)