デンマーク語キーボードの結果

どうやら、ちゃんと動くようになったようです。
今まで、プログラムの国際化はその国の人がやらないと意味無いと思ってきました。言葉の細かいところなどは、その言葉を習った人でないとわからないと思いますし。たとえば、日本語の入力メソッドを外国の人がチェックするのってとても難しいことだと思います。でも、QEMUの場合、いつまで待っても自分でバグを直してしまおうという人は現れませんでした。それに、各国に一人ずつ、そんな人が出てくると考えるほうがおかしいとも思うようになりました。
幸い、ドイツ語、デンマーク語と対応してみることで、ツールを駆使するとWindows XPで、各国の環境を再現できることがわかりました。手間はかかりますけど、1つ1つ確認した方がいいのかなと思います。

デンマーク語キーボード

デンマークの人から、キーボードが動かないというメールをもらった。-kオプションを使っているってことだったけれど、Windowsホスト上では-kオプションは-vncオプションと一緒で無いとうまく動かないです。
キーボードのレイアウトについては、ここが詳しいそうです。世界にはいろいろなキーボードがあるものですね。
http://en.wikipedia.org/wiki/Keyboard_layout
キーの番号付けには、こちら。
http://www.penticoff.com/nb/kbds/nbkeynumbers.htm
Windows XPのスクリーンキーボードも入力環境を変えると、キーの表示が変わります。イマイチだけど、確認するにはちょうどいいです。
また、-vncオプションを使わないときは-kオプションを無視するバイナリを作って上げておきました。

ドイツ語キーボード

結局、いつも使っているWinXPの設定を変更して確認しました。
いろいろ調べた結果、SDL_VIDEODRIVER=windibとSDL_VIDEODRIVER=directxで挙動が違うことが確認できました。
右Altを押してみると、windibの時はleft ctrlのイベントがright altの前に入るんですよね。どうもAltGrキーというのは、無い場合に左Ctrl+左Altで代用するみたいです。でも、実際に生成されるイベントは左Ctrl+右Altで謎が残りますけど。
調べていく過程で、SDLをSDL_VIDEODRIVER=dirextxにすると、右Altキーを押したときにleft ctrlのスキャンコードが送られてこないことがわかりました。
left ctrlのコードが悪さをしているみたいなので、削除すればよさそうなのですけど、実際に試してもらうしか確認はできないと思います。メーリングリストに聞いてみるしかないけれど、調べてくれる人がいるかどうか。
聞いてみたら、答えてくれました。なんか、フランス語も問題みたいです。left ctrlを消すことで直るかどうか。

キーボードの多言語チェック

ドイツ語キーボードがうまく動かないというメールがたびたびメーリングリストに登場したりして、すこし、チェックできないかなと調べてみました。
Windowsホストの場合、Windows 2000とXPには入力する言語を選択できる機能があります。また、スクリーンキーボードというのがアクセサリにあって、notepadに入力することができます。常用しているWinXPで試してみるのはちょっと怖くてゲスト内でQEMUを動かそうとしたのですが、みごとに動かなかったので、どうしましょう。
Linuxホストの場合、Fedora Coreだとキーボードの言語を変えることによりすぐにドイツ語入力ができるようになります。表示する言語を変えることももちろんできますけど、何言っているのかわからなくなりますのでキーボードだけでいいと思います。
また、Gnome on-screen keyboard(GOK)というのがあって、マウスを使ってスクリーン上で入力できます。xevでイベントを調べてみるとこちらもちゃんと動いているみたい。
これで、日本語環境でドイツ語キーボードのデバッグができるか試せるかな。

QEMUの中のQEMU

WinXPホスト上で、WinXPゲストを立ち上げ、その中でQEMUを使ってLinuxゲストを立ち上げようとすると、なぜかQEMUがフリーズしてしまいます。
WinXPホストで、Win2kゲストの中でQEMUを動かすと動くんですけど。
Linuxホストでも同じ結果でした。
さて、困った。なにが原因だろう。
gdbstubを使って、Linuxカーネルの止まる位置を確認しようとしたりしてみたけど、フリーズする位置が不安定みたい。それに、エミュレーションの速度が遅すぎて非常にストレスがたまった。
ゲストOSの中で作業するには、QEMUがもう少し速いといいですけどね。
これは、すぐには直せないかもと思った。

CygwinでのGLOBALのコンパイル

Cygwinで、GNU GLOBALを作ったのですが、cannot make GPATHとかエラーが出て、うまく動きません。
メーリングリストに、config.hのpreadとpwriteをコメントにするとうまく動くという記事をみつけて、そのようにしたらうまく動きました。
ひげぽんさんの所を参考に、Meadowで使ってみたのですが、
active_timers 703 /cygdrive/c/msys/1.0/home/kazu/qemu/vl.c pt =
active_timers 727 /cygdrive/c/msys/1.0/home/kazu/qemu/vl.c pt =
active_timers 744 /cygdrive/c/msys/1.0/home/kazu/qemu/vl.c for(t =
こんな感じで、探したい単語と、ファイル名は出るのですが、ファイルの内容の右側が切れてしまいます。これは、Meadowを広げれば何とかなりますけど。
ついでに、LinuxのソースコードをHTMLにしてみました。でも、task_structが見つけられなかった。
ソースコードを読むことを考えると、まだM-x grep-findがいいのかなと思います。GLOBALがもう少し洗練されるといいのですけど。たとえば、i386のコードのみが検索されるとかね。
LXRとかだったら大丈夫なのかな。