无法从 /dev/input/event* 获取 Wacom 事件

Posted

技术标签:

【中文标题】无法从 /dev/input/event* 获取 Wacom 事件【英文标题】:Unable to get Wacom events from /dev/input/event* 【发布时间】:2009-12-07 15:24:18 【问题描述】:

我创建了一个 pygtk 程序来监控任何应用程序(即不仅仅是我的应用程序)的键盘状态和鼠标点击。这使用了 Micah Dowty 的 evdev,它基本上监视 /dev/input/event* 的输出并以我可以向用户显示信息的方式解码信息。

该程序非常适用于 USB 键盘和鼠标,但不适用于 USB Wacom(或串行 Wacom),即使以 root 身份运行也是如此。我没有收到任何来自 Wacom 的 /dev/input/* 节点的任何事件,因为它使用它。不仅是我的 Wacom,播客“Meet the Gimp”(Rolf 和 Philippe)中的人也一无所获。

代码位于http://code.google.com/p/key-mon。

要进行测试,您可以运行以下命令:

sudo ./evdev.py /dev/input/event0 

例如,当您移动鼠标或单击键盘时,您应该会看到与 event0 相关联的事件。

【问题讨论】:

会不会是原来的 evdev 代码不是用来捕捉 wacom 设备的?这些不是也直接在 /Dev/ oder /dev/wacom/ 下注册自己的节点吗? (还没有在工作中使用 Linux 来检查它,抱歉) 不,它应该按照 Scott 尝试的方式工作。 wacdump 有效吗? 在 Wacom 中,X 驱动程序可能会抓取输入设备以独占使用(使用 EVIOCGRAB ioctl)。 我也怀疑这一点。当我自己尝试 EVIOCGRAB 时,它失败了。 因为这个程序通常用于一个程序(例如 Gimp 或 Inkscape)的截屏。是否可以从我的键盘监视器程序中运行该程序并通过 pyGTK 以某种方式获取事件? 【参考方案1】:

这是由于 X 完全控制了您的输入设备,您自己无法读取事件。您可能有以下 2 个问题之一:

    “总括”实际上是在获取您的设备。 在您的 /var/log/Xorg.0.log 中,您应该会看到如下一行:

    Stantum MTP USB 控制器:应用 InputClass“evdev touchscreen catchall”

    当然是 wacom。如果是真的,您可以通过编辑/usr/share/X11/xorg.conf.d/10-evdev.conf 来禁用“触摸屏”的全部功能,并删除谈论触摸屏的部分。

    也许您适合 Wacom 部分,因此请编辑 /usr/share/X11/xorg.conf.d/50-wacom.conf,并删除与您的设备匹配的相应部分。

当然,这两个问题都没有以干净的方式解决,您不能让 X 和 Kernel 事件同时工作。 (我从来没有用 Wacom 找到解决方案,如果有人有,请分享!)

【讨论】:

以上是关于无法从 /dev/input/event* 获取 Wacom 事件的主要内容,如果未能解决你的问题,请参考以下文章

linux input event 子系统

press.sh

Android应用通过JNI读写I2C Input触摸屏设备

为啥adb shell命令模拟手机按键操作执行

模拟按键,事件注入

10.5 android输入系统_Reader线程_使用EventHub读取事件和核心类及配置文件_实验_分析