Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法从/dev/input/event获取Wacom事件*_Python_Linux_Pygtk_Wacom - Fatal编程技术网

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

Python 无法从/dev/input/event获取Wacom事件*,python,linux,pygtk,wacom,Python,Linux,Pygtk,Wacom,我已经创建了一个pygtk程序来监控任何应用程序(即,不仅仅是我的应用程序)的键盘状态和鼠标点击。这使用Micah Dowty的evdev,它基本上监视/dev/input/event*的输出,并以一种我可以向用户显示信息的方式对信息进行解码 该程序适用于USB键盘和鼠标,但不适用于USB Wacom(或串行Wacom),即使以root用户身份运行。在使用Wacom时,我不会从Wacom的任何/dev/input/*节点中获取任何事件。这不仅仅是我的Wacom,而且播客“遇见Gimp”(Rolf

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

该程序适用于USB键盘和鼠标,但不适用于USB Wacom(或串行Wacom),即使以root用户身份运行。在使用Wacom时,我不会从Wacom的任何/dev/input/*节点中获取任何事件。这不仅仅是我的Wacom,而且播客“遇见Gimp”(Rolf和Philippe)中的人也没有得到任何东西

代码位于

要进行测试,可以运行以下操作:

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

例如,当您移动鼠标或单击键盘时,您应该会看到任何连接到event0的事件出现。

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

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

    Stantum MTP USB控制器:应用InputClass“evdev触摸屏catchall”

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

  • 也许您可以加入Wacom部分,因此编辑
    /usr/share/X11/xorg.conf.d/50 Wacom.conf
    ,并删除与您的设备匹配的适当部分


  • 当然,这两个问题都没有以干净的方式得到解决,并且不能让X和内核事件同时工作。(我从未找到Wacom的解决方案,如果有人找到了,请分享!)

    可能是最初的evdev代码不是用来捕获Wacom设备的吗?它们不是也直接在/Dev/oder/Dev/wacom/下注册自己的节点吗?(对不起,没有Linux操作系统可以检查)不,它应该像Scott尝试的那样工作。
    wacdump
    工作吗?有可能是由于Wacom,X驱动程序正在抓取输入设备以供专用(使用
    EVIOCGRAB
    ioctl)。我也怀疑这一点。当我自己尝试EVIOCGRAB时,它失败了。因为这个程序通常用于一个程序(例如Gimp或Inkscape)的屏幕广播。是否有可能从我的键盘监视器程序中运行该程序,并通过pyGTK以某种方式获取事件?