ソフトな忘却力(57) FreeDOS、WSL2上のUbuntuでのキー入力あれこれ

Joseph Halfmoon

前回、Raspberry Pi OS上でQEMUを実行しているのと同じ方法でWSL2上のUbuntu上のQEMUでもFreeDOS動くだろ~と甘い見通しで作業開始。FreeDOS、動きはするけれどもいろいろビミョ~。その後、あれこれ設定を確かめていって、まあ、こんなもんかいという線に近付きつつある?ので中間報告?

※「 ソフトな忘却力」投稿順 Index はこちら

※実機動作確認には以下を使用しております。

    •  Windows 11 PC (i5-1235U)
    •  Ubuntu 24.04 LTS on WSL2
    •  QEMU 8.2.2
    •  FreeDOS 1.3
keyb jp の件

X(昔のツイッターね、もうこういう注釈は不要か?)で『sava』さまから FreeDOSの keyb は日本語キーボードに対応しているということをお教えいただきました。ありがとうございます。

当方でも動作を確かめております。DOS互換のお名前(内部は以下のとおりGPLの品だけど)の keyb は日本語キーボード対応。「より軽い」らしいmkeyb は日本語非対応みたいです。keybFreeDOS

keyb  を使えば、FreeDOSウインドウで「記号が入力しずらい(USキーボードのつもりでキーを押さんといけない)」問題は解決、と思いきや部分的でした。

    1. QEMUのGUIウインドウの内部で keyb jpすれば、日本語キーボードの配列通りで入力できる。やったね。
    2. しかし、QEMUのGUIを開かず、cursesモードでUbuntuのウインドウ(WSL2上で動いているので、実体はWindows Terminalの一つのタブです)内で動作しているFreeDOS上で keyb jp してしまうと「不明なキーボード配列」になってしまう。日本語キーボードの記号位置とは違うし、USとも違う気がする。。。

つまり、GUIを使うのであれば、keyb jp するのが良いし、GUIを使わずに作業するなら keyb jp しない方が良い、という結論です。ううむ、QEMU上で動作しているFreeDOSのバッチファイルから、今自分がGUI内で走っているのかどうか判断する方法ってどしたら良いの?

FDAUTO.BAT内で keyb jp してしまうとcursesモード使えなくなるので、とりあえずGUI使うときだけ、忘れず手動で keyb jpだな。

nographicsオプションは壊滅的だった

なぜにGUIでなくテキスト主体のcursesモードの方がお惚け老人に良いかと言えば、VGAグラフィクスなどは当面使用せず、テキスト主体の作業であり、コピペなど普通のテキスト操作が行えるからであります。それにWindows Terminalの「美麗な」フォントで動いているし(なお余談ですが、Windows TerminalにはレトロなCRTディスプレイに見せかけるモードもあり、それを使えば限りなく昔風の見た目にできます。懐かしいけど、やらんよ。昔はよくこんな画面を日がな一日みていたもんだ。)

そういえば、-display curses でなく -nographics というオプションもQEMUにはあるみたい。そのオプションでFreeDOSを実行してみました。これはシリアル端末に接続されているようなイメージかと。知らんけど。

    • 記号キーは日本語キーボード配列で「だいたい」使える、やったね。
    • BSキーが効かない、文字が消せないのよ。
    • 矢印キーもダメ。カーソルが動かせないのよ。
    • ESCキーも効かない。エディタから抜けられないのよ。

という感じです。結構、重大なところでおっととビックリする挙動を示します。FreeDOSとは相性が悪いの?

‐display curses と -k jp 併用は呪い?

じゃ、-display curses と、キーボード指定 -k jp をQEMUに併用したらどうよ。なんかよさげでないの? やってみました。結果が以下に。ERROR_k_curses

QEMUが大量のエラーを吐いているみたいです。Ubuntuのプロンプトに戻った感じはあるのですが、入力に反応がありません。ハング?エラーメッセージを見る値、問題は IBMの拡張グラフィックキャラクタからUTF-8への変換あたりにあるみたい。例の罫線キャラクタ化け問題で困っているところと被るのか? なかなか思ったようにいかないものじゃのう。

ソフトな忘却力(56) FreeDOS、WSL2上のUbuntu24.04 LTSで実行 へ戻る

ソフトな忘却力(58) FreeDOS、MSYS2、MINGW64のQEMUで実行 へ進む