Image: 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を参照
http://radioc.web.fc2.com

参考文献

  • Key Layout and Scancodes
  • 「キー配列と走査コード・文字コード」『OADGテクニカル・リファレンス DOS/V プログラミング概説編』、PCオープン・アーキテクチャー推進協議会、1994年12月。

comments powered by Disqus

※コメント欄が表示されない場合はdisqusについてJavascriptが有効であることを確認して下さい.

(C) 2008-2019 akm. Generated with sakmug-dp.