我目前正在开发一个项目,我想通过模拟 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;
};
这相当于: