gpt4 book ai didi

linux - 创建一个类似 Wacom 的 Linux uinput 设备,用于使用触摸屏和笔

转载 作者:太空狗 更新时间:2023-10-29 11:09:08 24 4
gpt4 key购买 nike

这是一个相当宽泛的问题,所以我会尽量集中注意力。

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

遗憾的是,这款笔仅支持 iOS 手机和平板电脑的特定应用程序。
因此,经过大量研究,我设法与笔连接并为其创建了一个 uinput 设备,这样我就可以在笔上记录按钮点击和压力变化,甚至可以看到它们被路由到 GIMP 时通过输入 Controller 菜单配置设备。

到目前为止,我为该接口(interface)编写的代码是 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 没有实现它们并且可以正常工作。

关于linux - 创建一个类似 Wacom 的 Linux uinput 设备,用于使用触摸屏和笔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23149093/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com