讀取 PS/2 鍵盤的 /dev/input/
我目前正在做一個項目,我想通過模擬 PS/2 鍵盤來使用 AVR 控制我的 PC。出於這個原因,我目前擁有所有必需的硬體和一些軟體庫,例如AVR的https://github.com/ndusart/ps2-keyboard和http://python-evdev.readthedocs.io/en/latest/ PC 部分的index.html。
我還從http://www.pcbheaven.com/wikipages/The_PS2_protocol/>、<http://www.computer-engineering.org/ps2protocol/和http://retired.beyondlogic.org/了解了 PS/2 協議鍵盤/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/ 的緩衝區中獲取原始輸入,這不是我認為原始應該是的。
編輯
您描述該過程的方式是:開始擷取輸出,插入鍵盤,按下一個鍵,然後停止擷取。如果是這種情況,我建議插入鍵盤,開始擷取,按鍵,停止擷取?
**編輯:**添加附加資訊
到目前為止,我自己的快速研究還沒有得到任何東西來完全符合你的轉儲,但是:
根據kernel.org 文件和原始碼,/dev/input 介面的輸出格式為:
struct input_event { struct timeval time; unsigned short type; unsigned short code; unsigned int value; };
這相當於:
timeval:16 字節(8 字節為秒,8 字節為微秒)
類型:2字節
01
對於EV_KEY
(按鍵)。請參閱input-event-codes.h程式碼:2字節
0E
為KEY_BACKSPACE
. 請參閱input-event-codes.h值:4 個字節
01
用於按鍵、00
釋放、02
自動重複