190510 AXエミュ製作 [10]変換キー他の固有キー入力を実装
素晴らしいものを作っている方がいらっしゃるのです。
→ DOSVAXJ3
氏のsexeにはお世話になったけれども、これもまた日本語対応やフォントファイル用意不要など、使いやすくなっていて、良い!私には残念ながらその成果物を取り込めるだけの技術力が無いので、こちらを使わせていただこうと思っていたのだけど、私のものと比べていて、ふと重大なことに気づいた。
変換キーが効かんっ。
そういえば、SDLの制約に悩まされて実装を投げたような。あるいは、動作を確認する方法がなくて、中途半端に放置したままうやむやになったのかもしれない。readmeにキー割り当てを書いておきながら、実際はちゃんと動かないというのに、今まで一度も指摘がなかったあたり、AXというのはそのくらいの利用率なんだろうなとも思える。
keyboard.cpp (スキャンコードを生成)とbios_keyboard.cpp (スキャンコードをキャラクタコードに変換してバッファに入れる)という役割は理解できたので、プログラムを修正した。
/* System Scan Code for AX keys
JP mode Make Break US mode Make Break
無変換 5Ah DAh Space 39h(57) B9h
変換 5Bh DBh Space 39h(57) B9h
漢字 E0h-38h E0h-B8h RAlt (status flag)
AX 5Ch DCh (unused)
*/
/* Character code in JP mode
Key Ch Sh Ct Al
5A 無変換 - AB AC AD AE
5B 変換 - A7 A8 A9 AA
38 漢字 - 3A 3A
5c AX - D2 D3 D4 D5
*/
カナロック時のキャラクタコードについては残念ながら確かな資料がなかった。
ダウンロード
更新したソースはこちら。
- radioc.dat内Filesを参照
- https://radioc.web.fc2.com
参考文献
- Key Layout and Scancodes
- 「キー配列と走査コード・文字コード」『OADGテクニカル・リファレンス DOS/V プログラミング概説編』、PCオープン・アーキテクチャー推進協議会、1994年12月。