11

设置:一个简约的 Linux(华硕路由器上的 OpenWRT),一个 USB 键盘(假设我知道设备名称,如 /dev/hiddev0)

目标:编写一个python(或shell,在这种情况下我可以像python的代理一样使用它)脚本,它将监听这个设备并根据用户输入执行一些操作

作为一个开始 - 足以将用户输入的字符回显到给定名称的文本文件。

PyUSB 看起来真的很混乱。我对 PySerial 没问题,虽然我不确定它是否适合任务 - 当尝试打开设备时,它说“serial.serialutil.SerialException:无法配置端口:(22,'无效参数')”

UPD:好吧,简单的答案是“cat /dev/input/event1”

但是输出真的很神秘 - 任何解释它的提示(作为字符 int 代码)?

UPD UPD:hexdump /dev/input/event1 要好得多!它为每次按键提供 6 个 9 元组(我想,3 个按键,3 个按键)解密它可能并不

但更文明的方式仍然受到高度赞赏

http://svn.navi.cx/misc/trunk/python/evdev/evdev.py看起来很有趣...

4

2 回答 2

6

http://svn.navi.cx/misc/trunk/python/evdev/evdev.py是真正的答案 - 输出非常详细,并且有.poll()返回事件的准备方法。

我遇到的唯一问题 - readMetadata() 失败并出现错误 22。然后我评论了它的调用,它就像一个魅力

实际上,我从http://autokey.googlecode.com/svn/trunk/src/lib/evdev.py下载了一些更新的版本

添加:发现实际事件N,

cat /proc/bus/input/devices

并仔细阅读

于 2011-05-15T22:30:25.307 回答
3

对于后来发现这个问题的任何人(就像我发生的那样):Georgi Valkov 为 evdev 提供了一个很棒的库:

https://github.com/gvalkov/python-evdev

http://python-evdev.readthedocs.org/en/latest/index.html

于 2014-05-03T09:22:54.800 回答