读取 PS/2 键盘的 /dev/input/

读取 PS/2 键盘的 /dev/input/

我目前正在开发一个项目,我想通过模拟 PS/2 键盘使用 AVR 控制我的 PC。因此,我目前拥有所有必需的硬件和一些软件库,例如https://github.com/ndusart/ps2-keyboard对于 AVR 和http://python-evdev.readthedocs.io/en/latest/index.html对于PC部分。
我还阅读了有关 PS/2 协议的信息http://www.pcbheaven.com/wikipages/The_PS2_protocol/,http://www.computer-engineering.org/ps2protocol/http://retired.beyondlogic.org/keyboard/keybrd.htm

然后我运行了命令sudo cat /dev/input/by-path/platform-i8042-serio-0-event-kbd > ./kbrd.hex并连接了键盘,然后按下并释放了退格键。
我会排除类似的东西AA 66 F0 66,也许FA中间有一些(ACK),但我得到的是非常不同的:

在此输入图像描述

所以我的问题是:
这是否是由于我对 /dev/input/ 的工作行为的误解造成的,或者问题出在我设置的其他部分?我期望从 /dev/input/ 的缓冲区获取原始输入,但这不是我认为原始应该的。

编辑
插入键盘后的另一个十六进制转储: 在此输入图像描述

答案1

按照您描述该过程的方式,您:开始捕获输出,插入键盘,按下某个键,然后停止捕获。如果是这种情况,我建议插入键盘,开始捕获,按键,停止捕获?

编辑:添加附加信息

到目前为止,我自己的快速研究还没有得到任何与你的转储完全一致的东西,但是:

kernel.org 文档源代码,/dev/input 接口的输出格式为:

struct input_event {
    struct timeval time;
    unsigned short type;
    unsigned short code;
    unsigned int value;
};

这相当于:

  • timeval:16字节(8字节表示秒,8字节表示微秒)
  • 类型:2字节
  • 代码:2字节
  • 值:4 个字节01用于按键、00释放、02自动重复

相关内容