【问题标题】:Listen to USB keyboard with Python用 Python 听 USB 键盘
【发布时间】:2011-08-26 01:21:16
【问题描述】:

设置:一个简约的 Linux(ASUS 路由器上的 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 看起来很有趣...

【问题讨论】:

  • 为什么不直接捕获字符作为用户输入?
  • 你的意思是读取控制台输入?阅读问题 - 它是嵌入式系统(路由器),键盘未连接到脚本“屏幕”
  • 嗯,是的,看起来像一个答案,虽然一些示例代码会很好——Input.py 说“子类这个”,虽然不清楚具体如何

标签: python embedded usb hid


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    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
    

    仔细阅读

    【讨论】:

      猜你喜欢
      • 2016-07-04
      • 2020-05-30
      • 2011-05-12
      • 2018-02-16
      • 2014-03-08
      • 2018-08-14
      • 2013-02-13
      • 2011-04-12
      • 1970-01-01
      相关资源
      最近更新 更多