无法从 /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 事件的主要内容,如果未能解决你的问题,请参考以下文章