私の好きなインドネシアPC・IT関係

DOSBoxのキーボード問題

ここでの説明は、Windows 7 Home Premium 64bit版及びLuvPad AD701(Android 4.0.3)を使った際に発生している現象に基づきます。他の環境(特にAndroid端末)では異なる点があるかもしれません。

DOSBoxでは日本語キーボードがサポートされない

DOSBox内ではキーボードの配列が英語(アスキー)式となります。日本語キーボード(JIS配列)でも基本的な文字(アルファベット、数字)の入力は問題ありませんが、記号などの入力はキートップの刻印と異なるケースが多く、入力は面倒なものとなります。更に、一部の文字は入力が困難な場合もあります。

私が思いつく対策としては、次の2つくらいでしょうか。

1.英語キーボードを使う

身も蓋も無いご提案ですが、DOSBoxを使う上でこれが一番シンプルです。筆者はiBUFFALOの英語キーボードBSKBUM02ENBK(実売価1,000円しない低価格品)を使っています。特に大きな問題はありません。ただし、私が体験した範囲で、次のような欠点があります。

(1) 日本語版Windows Xp/7/8で英語キーボードを使う場合、デバイスマネージャでキーボードを101キーボードへ変更しただけでは上手く作動しれくれず、レジストリを書き換える必要がありました。(Vistaは未検証) 少々危険な操作です。ここでは自信を持って操作方法をご紹介できませんので、もし実施される場合はWebを「Windows 英語キーボード レジストリ」といったキーワードで検索して情報を入手し、各自でご対応ください。

(2) 英語キーボードなので、50音入力はできません。例えば「ろ」や「む」に対応するキーがありません。日本語入力はローマ字変換となります。

(3) DOSBoxを使って、非常に古い日本語アプリ(例えばIBM DOS J/4.0VやWindows 3.0などの英語キーボード非対応アプリ)を使う場合、英語キーボードでは逆に記号入力やカナ漢字変換のオンオフなどで苦労することになります。

(4) Android版DOSBoxのAnDOSBoxで、右Shiftキーの作動がおかしくなるケースあり。これは日本語キーボードでも発生。詳細は下記を参照ください。

なお、Android端末もBluetoothやUSBのキーボードを接続すると、英語配列と化してしまうわけで、英語キーボードを使う利点はDOSBox以外にもありそうです。

2.日本語キーボードをなんとかして使う

日本語キーボードを使う場合、いくつかのキーではキートップの刻印と異なる記号がタイプされるわけで、出来ればキートップへ実際に打刻される記号をシールでも貼って示すと良いでしょう。非常にベタな方法ですが。。。下のイメージは、私がAndroid端末に接続している日本語キーボードの写真です。

50音入力はしないので、「かな」(及び50音入力時に利用する記号)がプリントされている部分へシールを張り付けています。

しかし、日本語キーボードだと基本的に入力の難しい文字がいくつか出てきます。更に問題なことに、Android版DOSBoxとWindows版DOSBoxとでは、入力困難な文字が異ななります。

(1) Windows版DOSBox

DOSBoxに標準で装備されているMapperCtrl + F1 で起動)というキーボード上のキー割り当てを変更するツールで調べたところ、日本語キーボードの次のキーが使えない状態です。( )内は一般的な日本語キーボードでのレイアウト位置です。

半角/全角」(キーボード左上。「Ecs」キーの下)
¥/|」(Back spaceの左横)
@/`」(Pの右横)
^/~」(「¥/|」キーの左横)
右Shiftキー」

(a) 対策

¥/|」はDOSBox内だと「ろ/|」キーで入力が可能です。

」(アットマーク)はDOSBox内だと「Shift+2」で入力可能です。Shiftを押して入力する「」は英語キーボードだと「~」(チルダ)とセットになってます。チルダと一緒にMapperを使ったキー割り当てを下記でご紹介します。

(~ チルダ)」は、英語キーボードだと(日本語キーボードでの)「半角/全角」キーの位置にあるはずなんですが、日本語キーボードでは別の場所となってしまい、その場所は英語キーボード配列だと無視されている場所です(^_^;)。Mapperを使って他のキーへ割り当てる方法を下記でご紹介します。相棒の「」はDOSBox内だと「Shift+6」で入力可能です。

右Shiftキー;残念ながらこのキーを作動させることはできませんでした。DOSBox内で全く認識されていないキーです。複数の日本語キーボードで試しましたが、押しても「Shift」の役割を果たしていません。

▼▼▼ 2012年11月24日追加 ▼▼▼

環境変数「set sdl_videodriver=windib」を使う

DOSBox関係の掲示板で、環境変数「set sdl_videodriver=windib」を使うと右Shiftキーが使えるようになるという情報が寄せられていました。(というか、キーボードトラブル全般に効くという感じの紹介です)

Right-Shift / Backslash Keyboard Problems外部サイトのページへリンクしています

Keyboard not working at all外部サイトのページへリンクしています

やり方は、DOSBoxを起動するためのバッチファイルを作成し、「DOSBox.exe」の行の前に「set sdl_videodriver=windib」を記述するというもの。実際に試してみたところ、右Shiftキーが使えるようになり、更に「半角/全角」キーで「`/~」の入力も出来るようになりました。

しかしながら、副作用もあります。同掲示板で紹介されていました。

If you've had to use WINDIB with DosBox. POST HERE外部サイトのページへリンクしています

副作用として、dosbox.confで「output」をデフォルトの「surface」から他の値に変えても無視されるみたいです。いくつかあるオプションのうち確認したのは「ddraw」で、無効でした。

標準状態ではdosbox.confで「output=ddraw」(デフォルトはsurface)とすると「windowresolution」で「800x600」「1024x768」等(※)、DOSBoxのWindows画面の大きさを変えることが可能ですが、「set sdl_videodriver=windib」をセットすると、無効(不可能)となります。

※320x240といった具合に縮小も可能です。

▲▲▲ 2012年11月24日追加 ▲▲▲

(2) Android版DOSBox

無償版のaDosBoxと有償版のAnDOSBoxで、状況が異なります。

(a) aDosBox

アルファベット、数字、記号の入力に問題ありません。左右のShiftキーも正常に作動します。「`/~」(チルダ)も「半角/全角」キーで入力できます。
しかし、制御系のキー(下記)がほとんど全滅です。

左右のCtrl
Esc」(これについては、Android OS側の「戻る」ボタンで代用可)
F1~F12全て」
Page Up」と「Page Down
Home」と「End
Delete」「Insert
(他にも駄目なキーあるかも。Scroll LockやPause Breakなどは未確認です)

Back space、Enter、左右のALTキーは作動しますが、これだけキーが使えないとなるとアプリを操作するのはかなり難しいでしょう。そしてAndroid版DOSBoxではMapperが使えないのです。無理やり起動させることは可能なのですが、マウスポインタが表示されないため画面上で設定作業ができません。Mapperファイルを直接編集することになります。以下でMapperファイルを編集し「Ctrl」キーを「Tab」キーへ割り当てる作業をご紹介します。

(b) AnDOSBox

キーボードの作動は概ねOKですが、次の2点が問題。日本語キーボードと英語キーボードの両方で発生します。

(i) アプリの操作で「Esc」(エスケープキー)を押すと「AnDOSBoxを終了しますか?」というダイアログが表示されてしまう。ダイアログで「Cancel」をタップするか、Escキーをもう一度押せば、アプリの操作に戻れますが、少々怖い。うっかり「OK」をタップしてデータを保存する前にDOSBox自体をクローズしてしまいそう。

(ii) 右Shiftキーを押していると、時々「常にShiftキー押し下げ状態」に陥ります。「Caps Lock」状態でななく、Shiftキーを押し下げている状態がキープされる。この状態に陥るとShiftキーを押していないくても、例えば数字の「1」を押すと「!」が入力されてしまいます。この障害は「左Shiftキー」を何度か押し下げると解除されます。今のところ、有効な対策はまだ見つけていません。

▲このページの先頭へ

Mapperファイルを編集する

1.標準ツール「Mapper」を利用する

以下の解説はWindows版DOSBox(0.74)の操作に基づきます。
`/~」(チルダ)キーを「Tab」キーへ割り当てます。

作業前にMapperファイルのバックアップを取ってください。
Mapperファイル「mapper-0.74.map」はフォルダ「C:\Users\xxxxxx\AppData\Local\DOSBox」(Windows 7の場合。xxxxxxの箇所はログオンしているユーザ名となります)にあります。もしファイルがない場合は、DOSBoxを起動し、Mapperを起動させて何も操作せずSaveすると作成されるはずです。(次の説明を参照ください)

(1) DOSBoxを起動したら、「Ctrl + F1」キーを押すと、Mapperが起動します。(下のイメージを御覧ください) 初めてMapperを起動したのならば、何も操作を行わず、まず「Save」をクリックしてください。これでフォルダ「C:\Users\xxxxxx\AppData\Local\DOSBox」(Windows 7の場合。xxxxxxの箇所はログオンしているユーザ名となります)に「mapper-0.74.map」というファイルが保存されます。標準状態のキー割り当てを記録しているファイルです。このファイルは別の場所に保管する等、バックアップを取って置いてください。

(2) TABをクリックします。下の方に「Key_tab」というイベントがtab keyに結び付けられている旨の記述が現れます。(下のイメージを御覧ください)

(3) Tab キーはCTRL キーの代用として使いますので、まず「BIND:Key tab」を削除します。真ん中下の「Del」をクリックします。これで「BIND:Key tab」が消えます。この状態で「Exit」し、DOSBoxの操作画面へ戻ると、Tab キーは無効な状態(押しても反応なし)となります。(下のイメージを御覧ください)

(4) Event「'/~」(チルダ)を、Tabキーへ割り当てます。まず、「'/~」をクリックします。(下のイメージを御覧ください)

(5) 次に「Del」をクリックして、BINDを消去します。(下のイメージを御覧ください)

(6) 「Add」をクリックします。キーかジョイスティックを操作しろと赤文字(英文)が点滅(ブリンク)します。(下のイメージを御覧ください)

(7) ここで、キーボードの「Tab」キーを押します。

(8) 「BIND:Key tab」が表示されたのを確認したら、Saveをクリックしてください。そしてExitをクリックし、Mapperを終了させます。

Tabキーを押すと「`/~」が入力できるか(「~」はシフトキー+Tabキー)確認してみてください。

▲このページの先頭へ

2.Mapperファイルを直接編集する

以下の解説はAndroid版DOSBox「aDosBox」(0.74)の操作に基づきます。
aDosBoxのMapperファイルはdosbox.confファイルと同じフォルダーに保存されています。通常の方法では閲覧・編集は不可能ですが、DOSBox内でそのフォルダーをドライブDへマウントし、ファイルの複写・編集・ファイルの書き戻しを行います。

(1) Mapperファイルを取り出す

aDosBoxを起動したら、コマンドプロンプトで次のように入力して「Enterキー」を押します。

mount d: /data/data/org.hystudio.android.dosbox/files/.dosbox/

これで、Mapperファイルが保管されているフォルダがドライブDとしてマウントされました。

dir d:\と入力してファイルの一覧を取ってみましょう。MAPPER~1.MAP というファイルがMapperファイルです。

この「MAPPER~1.MAP」をドライブCへ複写します。次のように入力して「Enterキー」を押します。

copy d:\mapper~1.map c:\mapper.map

以上の操作については、下のイメージも参照してください。
バックスラッシュ「\」はaDosBox内では「バックスラッシュ」と表示されます。「~」(チルダ)は「Shift+半角/全角」キーで入力出来ると思います。

ここでいったんaDosBoxを終了します。

(2) Mapperファイルを編集する

テキスト・エディタを使って先ほどドライブC(つまり /sdcard/)へ複写したMapperファイル「mapper.map」を編集します。テキスト・エディタは適当なものをご用意ください。下のイメージはJOTA Text Editorを使ってmapper.mapを開いているところです。
※重要:mapper.mapを開いたら、まず別の名前で保存してください。これがMapperファイルのバックアップとなります。
下のイメージでは、カーソル行(44行)にTabキーについての設定が記述されています。行の最初「key_tab」が上のMapperで言うEVENTです。次の”key_9”がBIND(EVENTに結び付けられるキー位置)です。この結び付きを変更します。

Tabキーは他の用途(Ctrlの機能)へ使いますので、定義「"key 9"」を削除します。(下のイメージをご覧ください。)

key_lctrl(左Ctrlキー)の行へ移動します。BINDは「"key 306"」となってます。(下のイメージをご覧ください。)

これを「"key 9"」(Tabキーの位置)へ変更します。(下のイメージをご覧ください。)

変更を加えたら、Mapperファイル「mapper.map」を保存し、テキスト・エディタを終了させます。

(3) Mapperファイルを書き戻す

aDosBoxを起動します。再び次のように入力し「Enterキー」を押します。

mount d: /data/data/org.hystudio.android.dosbox/files/.dosbox/

ドライブC(/sdcard/)に保存された変更後のMapperファイル「mapper.map」をドライブDへ複写します。次のように入力して「Enterキー」を押します。

copy c:\mapper.map d:\mapper~1.map

以上の操作については、下のイメージも参照してください。
バックスラッシュ「\」はaDosBox内では「バックスラッシュ」と表示されます。「~」(チルダ)は「Shift+半角/全角」キーで入力出来ると思います。

これで、Tabキーへ「Ctrlキーの機能」を割り当てたMapperファイルがaDosBoxのシステムフォルダへ保存されました。

いったんaDosBoxを終了させ、再度aDosBoxを起動してください。
Tabキーへ「Ctrlキー」の機能が割り当てられているか確認を。

▲このページの先頭へ

編集に失敗した場合

Windows用DOSBox、aDosBox共にMapperファイルの編集に失敗した場合は、バックアップとして保存したオリジナルの(変更が加えられる前の)Mapperファイルを使って復旧させてください。

それでも上手く復元出来ない場合は、DOSBoxをアンインストールし、もういちどインストールしてください。この場合、MapperファイルだけでなくDOSBoxの全ての設定が初期化されます。

▲このページの先頭へ

Copyright © 1997-2024 Dien