TRAIN CREW の車掌乗務のための NumLock 対策
列車運転ゲーム TRAIN CREW の車掌乗務では、(デフォルトの操作設定では) 視点の移動にテンキーの数字キーを、列車の扉の操作に PageUp キーや PageDown キーなどを用いる。
一方、自分が使っているパソコンでは、テンキーの数字キーと PageUp キーや PageDown キーなどは物理的に同じキーに割り当てられており、NumLock により切り替えて使う方式である。
その上、不親切なことに、NumLock の状態を示す表示は見当たらない。
普段 (TRAIN CREW をしていないとき) は基本的に NumLock はオフにしておき、Home キーや End キーなどが使える状態にしている。
しかし、ゲーム中に NumLock を切り替えると、(自分の頭が悪いからか) NumLock の状態がわからなくなってしまい、操作が遅れる原因になってしまう。
そこで、操作の安定性を上げるため、環境を改善することにした。
試した方法
△:PageUp キーなどと数字キーからなる外部キーボードを使う
車掌乗務の操作に使うキー、すなわち PageUp などのキーとテンキーの数字キーの部分だけのキーボードを外付けすれば、操作が快適になるのではないかと考えた。
そこで、以下の製品 (Red Switch) を購入した。
実際に使ってみると、キーを押したときに「カッ」という感覚があり、気持ちよく車掌乗務を行うことができた。
しかし、NumLock をオンにしておかないと、数字キーが数字キーとして認識されないようだった。
ゲーム中は問題ないが、他の作業に切り替えた際に NumLock をオフにし忘れ、カーソルを移動しようとして意図しない数字を入力してしまう事故が多発してしまった。
これでは不便である。
×:NumLock 問題を解決したと主張する外部テンキーを使う
世の中には、「NumLock非連動」「NumLock問題をハードウェアで解決」などと主張しているUSB接続のテンキーが存在する。
たとえば以下の製品である。
USBテンキーボード - TK-TCM011BK (ELECOM)
NT-16UBKN【USBテンキー(ブラック)】エクセルに便利なTABキー付き薄型テンキー。ブラック。|サンワサプライ株式会社
シンプルUSB有線テンキーボード/ブラック | 有線 | キーボード<BR>テンキー | パソコン周辺機器 | 製品紹介 | ナカバヤシ株式会社:アルバム・製本・シュレッダー・情報整理の総合サポーター
こう聞くと、本体の NumLock とは関係なく外部テンキーの NumLock を設定できるかのような印象がある。
これらの製品の購入も検討したが、たまたま以前リサイクルショップで購入していた TK-TCM011BK があったため、今回はこれを接続して試してみた。
すると、「本体の NumLock がオン、外部テンキーの NumLock がオフ」の状態で外部テンキーを操作すると NumLock オフとしての操作になったものの、「本体の NumLock がオフ、外部テンキーの NumLock がオン」の状態で外部テンキーを操作しても NumLock オフとしての操作になってしまった。
「両方の NumLock がオン」「両方の NumLock がオフ」の組み合わせもある中で、よりによって使いたい組み合わせだけ上手く動かない。誠に遺憾である。
Wireshark の USBPcap 機能で調べたところ、たとえば外部テンキーの 4 を押したとき
外部テンキーの NumLock がオンのとき、キーコード 0x5C (Keypad 4) を送信する
外部テンキーの NumLock がオフのとき、キーコード 0x50 (←) を送信する
という仕組みのようであった。(参考:USBキーボードのキーコード)
ということは、「本体の NumLock がオフのとき、テンキーの数字キーのキーコードが送信されてきても、数字キーでないキーとして扱う」処理が働いていると推測できる。
そうなると、他の「NumLock非連動」の製品も、期待通り動作してくれることは期待できなそうだ。
特殊なドライバを用いるタイプの製品ならばもしかしたら期待通りの動作ができるワンチャンあるかもしれないが、少なくとも上に挙げた製品については、専用のドライバは見当たらず、期待できなそうだ。
よって、この環境ではこの方法は使えないだろう。
○:NumLock の状態を表示できるソフトウェアを使う
そもそも、ゲーム上 NumLock を高速で何度も切り替えるような激しい操作は要求されない。
やりにくかったのは、「NumLock の切り替えが求められる」ためではなく、「油断すると NumLock の状態がわからなくなる」からであった。
ということは、NumLock の状態がわかりやすいようにしてやればよい。
具体的には、ソフトウェアを用いて、NumLock の状態が画面に表示されるようにしてやればよい。
これは、たとえば NumLockLock を用いることで実現できる。
このソフトウェアは、もともと NumLock の状態を固定化することが目的だが、固定化せずに状態を表示することもできる。
以下の設定を行うことで、NumLock がオンになっているときに「NumLock:ON」の表示を出し、NumLock がオフになっているときは表示を出さないことができる。
NumLockキーの状態監視:「常に監視し、キーの状態を固定する」「OFFにする」
キーを固定化するのではなく、通知のみ行う:オン
これにより、NumLock の状態が (キーを押さなくても) 画面を見るだけで確認できるようになり、快適な車掌乗務を行うことができるようになった。
△:Fn キーを用いて操作する
よく見ると、このパソコンのキーボードでは、PageUp などの機能が割り当てられているキーが、テンキーの数字キーのほかにもう1個ある。
Insert・Delete はそのまま操作でき、PageUp・PageDown・Home・End は Fn キーを押しながら押すことで操作する。
これらのキーを用いることで、NumLock をわざわざ切り替えなくてもこのパソコンのキーボードで操作できるはずである。
実際にやってみると、(慣れの問題もあるかもしれないが) テンキーの数字キーよりも小さいキーを操作することになるので、操作がしづらいと感じた。
また、ゲーム中 NumLock を常時オンにしておくことになるため、「PageUp キーなどと数字キーからなる外部キーボードを使う」のときと同様に事故の原因になる。
よって、悪くはないがあまり良くもない方法だと考えられる。
試していない方法
キーコンフィグを変える
操作に用いるキーの設定を変えることで、テンキーの数字キーを使わずに操作できるようにすれば、NumLock を気にせずに操作できるようになりそうである。
しかし、具体的にどのようなキー配置にするかを考えるのも、考えたキー配置を覚えるのも面倒そうだったので、この方法はとらない (デフォルトの設定を用いる) ことにした。
PageUp キーなどのみを外部のキーボードで操作する
テンキーの数字キーは本体のものを用い、PageUp などのキーのみを外部のキーボードで操作する方法。
このときの「外部のキーボード」としては、キーの使い方が固定されているものだけでなく、キーの割り当てを設定可能なものを使うこともできるはずである。
しかし、これを行う場合、ゲーム中は NumLock をオンで運用することになり、「PageUp キーなどと数字キーからなる外部キーボードを使う」のときと同様に事故の原因になると思われる。
専用ハードウェア・APIで操作する
キーボードで操作するのではなく、操作用のハードウェアと、そこから情報を受け取って TRAIN CREW を API 経由で操作するソフトウェアを開発し、それを用いて操作を行う方法。
キーボードではなくAPIで操作を行うため、NumLock は関係なくなる。
当然、ハードウェアやソフトウェアの製作が求められ、コストがかかる。
NumLock の状態を表示できるハードウェアを使う
自分は、TRAIN CREW をウィンドウ表示にしているため、ディスプレイの残りの部分に NumLock の状態を表示できる。
しかし、フルスクリーン表示にしている場合、ディスプレイへの表示は難しかったり邪魔になったりするかもしれない。
そこで、かわりに NumLock の状態を外付けのハードウェア (マイコンボードなど) に表示させることで、NumLock の状態をわかりやすくするという戦略も考えられる。
まとめ
最初は「NumLock を切り替えずに操作できるキーを用意する」ことで、NumLock の状態がわからない問題の解決を試みた。
しかし、結局 NumLock がオンでないと数字キーの操作が効かないようだったため、操作できなかったり、ゲーム以外の作業を行う際の事故に繋がったりといった問題が発生した。
ゲーム上、数字キーと PageUp などのキーを高頻度で交互に使うような操作は要求されない。
そのため、「NumLock を切り替えないと一方の操作ができない」ことが問題なのではなく、「NumLock の状態がわからなくなって操作しづらくなる」ことが問題であった。
だから、「NumLock を切り替えずに操作できるキーを用意する」のではなく、NumLockLock を用いて「NumLock の状態をわかりやすくする」ことで解決できた。
よく考えたら、そもそもキーボードではなくゲームコントローラで操作すればいいんじゃね?でもゲームコントローラを出してくるのが面倒なこともあるし……


コメント