次はPICのソフトウェアを設計します。
「Linux ZaurusにPS/2キーボードを繋ぐ その2」の通り、PS/2キーボードのスキャンコードはscan code set3を使用することにします。
プログラムの流れは以下のようになります。
テンキーの処理は、NumLockがOFFの時にカーソル等のキーコードに変更することで実現しました。
フローチャートを書くとこんな感じになります。かなり適当ですし、実際に出来上がったソフトと若干違ってます。大まかな流れを見るため…ということで。(汗)
処理に興味ある方、データの流れも合わせて参照してください。

Zaurus側ではトラップさん作のser_code_ksimを動作させます。
トラップさんのページでは、
「Zaurus のキーコードについては、カーネルソースの sharp_keycode.h を読んでみると良いでしょう。」
と書かれているので、SHARPのページからダウンロードして参照してみました。
…あれ?使われていないキーが定義されてる?
例えば、SLKEY_PLUS のようなC7x0のキーボードではFnキーを併用して入力するものや、
SLKEY_QUOTEDBLのようなパソコンのキーボードでもシフトを使わないと入力できないものが定義されています。
とろろが、これをser_code_ksim.iniに書いても入力できません。
SLKEY_PLUSは「+」が入力されても良さそうですが、実際には「*」が入力されます。
また、SLKEY_QUOTEDBLは「"」が入力されても良さそうですが、実際には「^」が入力されます。
よく調べてみると、一部の定義はsharp_keycode.hに書かれている名称とはあまり関係なく、Fnキーを使って入力するキーを定義していることがわかりました。
そこで、キーコードの一覧をまとめてみました。
で、実際に作ってみました。
回路図に無い部品も付いてますが…
信号のやり取りがあるとLEDを点けたくなるじゃないですか。

NumLockLED点灯中!(笑)
特にもたつくこともなく入力できます。
これで、HHKなり何なり付けることが出来るようになりました。
でも、最初に書いた通りPS/2キーボードは風前の灯火なんですよね。
やはりこれからはUSBの時代なんですね。(´・ω・`)
一応ソフトを公開します。
ZauKeyboard_V100.zip
ご利用は計画的に自己責任で。