これまで調べたPS/2のスキャンコード、キー番号などに関する資料。

マイクロソフトの資料:
Enhanced Keyboards and Windows
Archive: Key Support, Keyboard Scan Codes, and Windows

キー番号、スキャンコードの組み合わせに関する説明:
Sazanami Online PS/2 インターフェイスの研究

Arduinoでキーボードをエミュレートする方法:
Arduino PS/2 Keyboard Emulator Issues
Arduino Forum › Hardware › Interfacing › Arduino as Keyboard

ArduinoをUSBキーボードにする方法:(Leonardo,Atmega32U4以外を使った方法)
Project Log : Arduino USB
Virtual USB Keyboard
practicalarduino / VirtualUsbKeyboard
Arduino Uno DFU プログラミング

 Arduino Leonardoは keyboard.press()とkeyboard.release()を使えば簡単にUSBキーボードをエミュレートできる。ただしUSキー配列なので変換テーブルなどが必要。
 PS/2のスキャンコードは可変長なのでやや扱いにくい。OADGでPS/2キーボードのキートップに対してキー番号が割り当てられているので、これを使えばすっきりする。
 だが、組み込み用途ではスキャンコード→キー番号→USBと変換すると冗長になる。今まで調べた例だとPS/2のスキャンコードからUSBのコードやASCIIコードに変換テーブルなりswich~case文で変換しているが、特殊キーや日本語配列の対応が考慮されていないため難しそう。そこでPS/2のスキャンコードを2バイトで表現し固定長にして、ASCIIコードやUSBのコードに変換しようと考えている。
例:1バイト目のbit7…make/break、bit0…拡張コードかどうか、2バイト目…スキャンコード
これだとスキャンコードの変換はほぼ流用できる。バッファは倍になるが、PS/2キーのバッファは16バイトなのでこれが32バイトになるだけ。

できるだけ再利用しやすい方向で考えたい。