エミュレータ(openMSX)のキーバインド

openMSXというMacOS X対応の素晴らしいMSXエミュレータがある。
懐かしいというか、何というか。

残念なことに「^」「@」「[」「]」「_」「:」等のキーが入力出来ない。
色々ファイルをいじってると、キーバインドの変更が可能なような事が判った。

~/.openMSX/share/settings.xml

<!DOCTYPE settings SYSTEM 'settings.dtd'>
<settings>
<settings>
<setting id="machine">Panasonic_FS-A1ST</setting>
<setting id="accuracy">line</setting><setting id="blur">0</setting>
<setting id="scanline">0</setting>
<setting id="default_machine">Panasonic_FS-A1ST</setting>
<setting id="consolerows"<23</setting>
</settings>
<bindings>
<bind key="joy1 button9 up">keymatrixup 6 0x20</bind>
<bind key="joy1 button10 up">keymatrixup 6 0x40</bind>
<bind key="joy1 button13 up"/>
<bind key="joy1 button14 up"/>
<bind key="joy1 button15 up"/>
<bind key="joy1 button16 up"/>
<bind key="joy1 button9 down">keymatrixdown 6 0x20</bind>
<bind key="joy1 button10 down">keymatrixdown 6 0x40</bind>
<bind key="joy1 button13 down"/>
<bind key="joy1 button14 down"/>
<bind key="joy1 button15 down"/>
<bind key="joy1 button16 down"/>
</bindings>
<KeyMap>keymaps/keymap.jp</KeyMap>

</settings>

これでkeymap.jpにキーバインドが記述できる。

次にキーコードをX11のxevで調べて、修正版のキーマップファイルを作成。

まず規定値のファイルからコピーして複製を作る

$ cd /Applications/openMSX.app/share/keymaps
$ cp keymap.default keymap.jp

次にファイルを編集する

0x002c= 2,0x0004 # ,
0x002d= 1,0x0004 # -
0x002e= 2,0x0008 # .
0x002f= 2,0x0010 # /
0x003a= 2,0x0001 # :
0x003b= 1,0x0080 # ;
0x0040= 1,0x0020 # @
0x005b= 1,0x0040 # [
0x005c= 1,0x0010 # \
0x005d= 2,0x0002 # ]
0x005e= 1,0x0008 # ^
0x005f= 2,0x0020 # _

こんな感じですかね。左がキーコード、右はMSX上のキーマトリクス。ちなみにhttp://www.big.or.jp/~saibara/msx/data/key_matrix.htmlに情報が。MSXテクハンとか持ってますが、今なら本を探すより、Webで検索した方が早いですね。


ジョイスティックを使用するのはコンソールから操作。ちょっと面倒。
アップル+Lでメニューを開いて、コマンド入力。

> plug joyporta joystick1

ちょっと不満な点というか、ジョイパッドを使ったときの挙動。
ボタン1 -> ボタン1
ボタン2 -> ボタン2
ボタン3 -> ボタン1 ん??
ボタン4 -> ボタン2 ん??
・・・・・・・・・
ボタン13(十字キー) -> ボタン1 え??
ボタン14(十字キー) -> ボタン2 え??
ボタン15(十字キー) -> ボタン1 え??
ボタン16(十字キー) -> ボタン2 え??

十字キーを押しても、ボタンが押されてしまう・・・。
ドキュメント見る限りはこの辺のカスタマイズは出来なそう。