キー設定ファイルの謎
エクスプローラ等で Falcon 4.0 をインストールしたフォルダを開き、\config フォルダを開いてみて欲しい。そこには幾つかのファイルが存在する。
"keystrokes.key" というファイルがそこにあると思う。ここには Falcon 4.0 において使用できる、デフォルトの全てのキー設定が書いてある。
「メモ帳」等のテキストエディタでこのファイルを開けば、中を見ることが出来る。しかし十分に注意して欲しい。このファイルの内容を下手に壊してしまったら、Falcon 4.0 が起動できなくなったり、キー設定がメチャメチャに破壊されてしまう可能性があるのだ。(そうなっても、コントロールパネルの「アプリケーションの追加と削除」にて一度「Falcon 4.0」 をアンインストールし、先のフォルダを開いて、アンインストール後も残留した全てのファイルを削除したあと、再度インストールし直せば元に戻る。勿論、今までの戦歴やキーカスタマイズ等、全て無に帰するが。再インストールしたら、パッチを当て直すこともお忘れなく。)
ここは一つ慎重に慎重を期し、この "keystrokes.key" をどこか安全な場所にバックアップを取ってから、以下の話を読んで欲しい。このファイルさえ残っていれば、このオリジナルキー設定ファイルを壊してしまっても Falcon4.0 の起動は可能になる。
ところで、あなたはキーコマンドに関する不思議な現象に遭遇したことは無いだろうか?
例えば、Falcon4.0 を起動し、setup の Controllers にて、デフォルトの "keystrokes" セットを LOAD した後、同ファイルを "mykey" と名付けて、SAVE する。内容には手を加えない。このキーでフライト画面に入り、画面にフレームレート〜1秒間に描きかえられる画面の枚数〜を表示しようと試してみる。
…… 話忘れたが、Falcon 4.0 では、フライト中、画面にフレームレートを表示することが出来る。デフォルトのキー設定 "keystrokes" にて、飛行中に CTRL+"z" を押し、一旦キーボードから手を離してから、再度 "r" キーを押下するのだ。これで画面左上に、常に小さく、リアルタイムに画面のフレームレートが表示されるようになる。フレームレートの値が大きいほど、見た目に画面がスムーズに描画されるように見える。人間の目には、25FPS〜30FPS以上のフレームレートが常にキープされていれば、「画面のカクツキ」を感じることなく飛ぶことが出来る。よってこの数値は、Falcon 4.0 が自分のマシンでどれだけ快適に動いているかを調べる目安になるのだ。
さて、もちろんデフォルトの "keystrikes" ファイルで飛んだ場合、フレームレートを表示することは可能だ。しかし、先程セーブした "mykey" ファイルでも表示することは出来るだろうか? −答えは「否」。何故か、内容を変えずにセーブした筈のこのファイルでは、フレームレート表示キーが無効になってしまっている。
こんな謎は、Falcon 4.0 キー設定のごく一部に過ぎない。酷い現象になると、何かの弾みで本来キーアサインの変更が不可能なキーが設定変更されてしまい、再び元に戻すことが出来なくなってしまうこともある。
ハッキリ言って、これらの問題のうちの数割は、Falcon 4.0 の「バグ」である。
ここでちょっと、エクスプローラ等で "keystrokes.key" があるのと同じフォルダ内に、このファイルのコピーを作って欲しい。ファイル名は "test.key" としよう。
改めてメモ帳で "test.key" を開き、中を眺めてみよう。
OTWSelectOrbitMode -1 0 0x0B 0 0 0 1 "Orbit view"
OTWSelectHUDMode -1 0 0x02 0 0 0 1 "HUD Only view"
OTWSelect2DCockpitMode -1 0 0x03 0 0 0 1 "2-D Cockpit"
OTWSelect3DCockpitMode -1 0 0x04 0 0 0 1 "Virtual cockpit"
OTWToggleSidebar -1 0 0x04 1 0 0 1 "Toggle SA bar"
OTWSelectF3PadlockMode -1 0 0x05 0 0 0 1 "Padlock view"
OTWSelectEFOVPadlockMode -1 0 0x06 0 0 0 1 "Extended FOV"
OTWSelectTargetMode -1 0 0x07 0 0 0 1 "Target View"
OTWTrackExternal -1 0 0x07 1 0 0 1 "Target view"
OTWSelectIncomingMode -1 0 0x08 0 0 0 1 "Incoming View"
………
この内容を理解することが出来れば、先程の問題も解決することが出来るであろう。
あなたには理解できただろうか? なんとなく、分かるような気もする。特に "" で囲まれた文字列の部分は。なかには、Falcon4.0 内の setup 中では見たこともないキーも用意されているようだ。しかし、"" で囲まれた部分以外の意味は、HUQ には皆目見当もつかなかった。(爆)
しかし、このファイルの謎を解き明かした人物がいる。NIFTY Server FPCUGH MES11 会議室にて、U氏とFeLix氏の手によって解明されたのだ!
ここではお二人の許可を頂き、その解析結果をまとめて報告する。しかし、このレポートを読み、自分のキー設定を改造した結果如何なる不具合が生じても、U氏、FeLix氏、および私 HUQ はなんら責任を負わないことを宣言する。U氏、FeLix氏に対して、内容に関する如何なる質問もお断りさせて頂く。このレポートの利用は、あくまで自己責任であることを忘れないで欲しい。また、この解析内容は、12/22 付けリリースの Version 1.03 パッチを当てた状態の Falcon4.0 におけるものである。今後のバージョンアップによって、内容が変わる可能性は多分にある。
では、key ファイルの一番最初の行をサンプルに、各フィールドの解説をする。(ジョイスティックのボタンに関する設定は、キーボードのキー設定とはフィールドの意味が異なるように思われる(下記1)と2)の間に、ボタン番号1〜8を示す 0〜7 の値がある)ため、除外。)
OTWSelectOrbitMode -1 0 0x0B 0 0 0 1 "Orbit view"
これは、日本語106キーボードでは「半角/全角」キーに相当する、「サテライト・ビュー」のキーである。
半角スペースが「区切り文字」となっている。各フィールドに、頭から順に
1),2),…と番号を振る。それぞれの意味は以下の通り。
1) OTWSelectOrbitMode
内部コマンドラベル(仮称)。Falcon4.0 のプログラムが、設定されたキーを押されたときに内部的に使用するラベル名。変更・追加不可。この文字列から意味を想像し、Falcon 4.0 の隠しコマンドを探してみよう。「αブレンディング」や、「バイリニア・フィルタリング」等の画面効果オフションの設定もあるぞ!
2) -1
入力インターフェースID(仮称)。
-1:キーボードからのみ、入力可能。
1000以上:画面上でマウスクリックにより操作可能なボタンに対応。
3) 0
キーボードの設定の場合、0。
4) 0x0B
キースキャンコード(注:キャラクターコードではない)。
下8bitを16進表記、未定義の場合は"0XFFFFFFFF"。
スキャンコードと、押下するキーの対応は下記。
5) 0
4)キーの押下時キーコンビネーション状態。
0:単独押下
1:[Shift]
2:[Ctrl]
3:[Shift]+[Ctrl]
4:[Alt]
5:[Shift]+[Alt]
6:[Ctrl]+[Alt]
7:[Shift]+[Ctrl]+[Alt]
6) 0
2ストロークキーである場合の、1stキーのスキャンコード(注:キャラクタコードではない)。
1ストロークキーの場合は、0。
2ストロークキーの場合は、スキャンコードは 4)キーと同じ。
ex. Ctrl+z;r なら、1st目で押下する "z" のスキャンコード(0x2C)がここに入る。
7) 0
2ストロークキーである場合の、1stキー押下時キーコンビネーション状態。
1ストロークキーの場合は、0。
2ストロークキーの場合は、値は 5)と同じ。
ex. Ctrl+z;r なら、1st押下で必要な Ctrl 同時押下に相当する 2 がここに入る。
8) 1
Setup メニューでのキーアサイン変更 可/不可 フラグ。
-1:キーアサイン変更不可(通信メニューキー等)
1:キーアサイン変更可
-2:Setup メニュー中の Controllers 画面に表示されないSetup メニュー中でキーファイルを変更または SAVE した時、ここが -2 になっている行はバグのため保存されず、キー入力が無効になってしまう。
Setup メニューでキー割当を変更する前に -1 に変更しておいた方が無難である。
9) "Orbit view"
Setup − Controllers 画面表示用コメント
例として、最初の例に挙げたフレームレート表示トグルを、自分のキー設定ファイル("mykey" という名前とする)中でAlt+"f" キーに割り当てる方法を紹介する。
≪キースキャンコード 一覧(ただし、英語101キーボードの場合≫
0x01 => "Esc" 0x10 => "q" 0x1E => "a"
0x02 => "1" 0x11 => "w" 0x1F => "s"
0x03 => "2" 0x12 => "e" 0x20 => "d"
0x04 => "3" 0x13 => "r" 0x21 => "f"
0x05 => "4" 0x14 => "t" 0x22 => "g"
0x06 => "5" 0x15 => "y" 0x23 => "h"
0x07 => "6" 0x16 => "u" 0x24 => "j"
0x08 => "7" 0x17 => "i" 0x25 => "k"
0x09 => "8" 0x18 => "o" 0x26 => "l"
0x0A => "9" 0x19 => "p" 0x27 => ";"
0x0B => "0" 0x1A => "[" 0x28 => "'"
0x0C => "-" 0x1B => "]" 0x29 => "`"
0x0D => "=" 0x1C => "Enter" 0x2B => "\"
0x0E => "BackSpace"
0x0F => "Tab"
0x2C => "z" 0x3A => "CAPS"
0x2D => "x" 0x3B => "F1"
0x2E => "c" 0x3C => "F2"
0x2F => "v" 0x3D => "F3"
0x30 => "b" 0x3E => "F4"
0x31 => "n" 0x3F => "F5"
0x32 => "m" 0x40 => "F6"
0x33 => "\" 0x41 => "F7"
0x34 => "." 0x42 => "F8"
0x35 => "/" 0x43 => "F9"
0x39 => "Space" 0x44 => "F10"
0x57 => "F11"
0x58 => "F12"
0xB5 => "Num/" 0xB7 => "Print_Screen"
0x37 => "Num*" 0x46 => "Scroll_Lock"
0x4A => "Num-" 0xC8 => "Up Arrow"
0x4E => "Num+" 0xCB => "Left Arrow"
0x47 => "Num7" 0xCD => "Right Arrow"
0x48 => "Num8" 0xD0 => "Down Arrow"
0x49 => "Num9" 0xD2 => "INS"
0x4B => "Num4" 0xC7 => "HOME"
0x4C => "Num5" 0xC9 => "PGUP"
0x4D => "Num6" 0xD3 => "DEL"
0x4F => "Num1" 0xCF => "END"
0x50 => "Num2" 0xD1 => "PGDN"
0x51 => "Num3"
0x52 => "Num0"
0x53 => "Num."
0x9C => "NumEnter"
0xffffffff" => "Unassigned"
≪英語104 or 日本語109キーボードにのみ存在するキースキャンコード≫
0XDB = "LWin" (左Windowsキー)
0XDC = "RWin" (右Windowsキー)
0XDD = "Apps" (アプリケーションキー)※ただし、以上のキーがフライト中に実際に使えるかどうかは、不明。
≪日本語106/109キーボードにのみ存在するキースキャンコード≫
0X29 = "半/全角"("`"と同じコードです。お馴染み)
0X2B = "]" ("@"の右隣のもの。101英語KBの"\"と同じコード)
0X7D = "Yen" ([BackSpace]の左隣の"\")
0X92 = ":" ("l"の2つ右隣のもの)
0X73 = "UnderLine" (カナの"ろ"が印刷されているもの)
0X7B = "JP No Convert" (無変換)
0X79 = "JP Convert" (変換,変換)
0X70 = "Kana" (ひら,カタカナ)
※ただし、以上のキーの中にはフライト中に使えないものや、Setup−Controllers 画面で押すと Falcon4.0 が異常終了する可能性のあるもの、動作の不可思議なものもある。