Keyboard

讀取 PS/2 鍵盤的 /dev/input/

  • January 26, 2019

我目前正在做一個項目,我想通過模擬 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 &gt; ./kbrd.hex並連接鍵盤,然後按下並釋放退格鍵。

我會排除類似的東西AA 66 F0 66,也許還有一些FA介於兩者之間的(ACK),但我得到的是非常不同的:

在此處輸入圖像描述

所以我的問題是:

這可能是由於我對 /dev/input/ 的工作行為的誤解造成的,還是問題出在我設置的其他部分?我希望從 /dev/input/ 的緩衝區中獲取原始輸入,這不是我認為原始應該是的。

編輯

插入鍵盤後的另一個 hexdump: 在此處輸入圖像描述

您描述該過程的方式是:開始擷取輸出,插入鍵盤,按下一個鍵,然後停止擷取。如果是這種情況,我建議插入鍵盤,開始擷取,按鍵,停止擷取?

**編輯:**添加附加資訊

到目前為止,我自己的快速研究還沒有得到任何東西來完全符合你的轉儲,但是:

根據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自動重複

引用自:https://unix.stackexchange.com/questions/409981