
私は現在、AVRを使用してPS / 2キーボードをシミュレートしてPCを制御するプロジェクトを進めています。だから私は現在必要なすべてのハードウェアと次のソフトウェアライブラリをいくつか持っています。https://github.com/ndusart/ps2-keyboardAVRとhttp://python-evdev.readthedocs.io/en/latest/index.htmlPC部分の場合。
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バイト
01
EV_KEY
(キー)について。バラよりイベントコードを入力してくださいh
- コード:2バイト
0E
のためのKEY_BACKSPACE
。バラよりイベントコードを入力してくださいh
- 値:
01
キーを押す、00
離す、02
自動繰り返しのための4バイト