2011年07月22日
川俣晶の縁側ソフトウェア画廊亭2011開発日誌 total 2854 count

XNA 4.0+Win7+x86環境下で何もしていないのに押されているキー数が変化する

Written By: 川俣 晶連絡先

 驚愕の事実。

 画廊亭2011 V0.6では、以下のコードで押されているキー数を取得し、変化があったらスクリーンセーバーを終了させます。

Keyboard.GetState().GetPressedKeys().Length

 ところが、このロジックはx64では稼働するのにx86では動きません。

 調査したところ、x64キーでは実行開始から最後までキーに触れない限り押されているキー数は変化しませんが、x86では実行開始後に変化することが分かりました。具体的にはテスト環境ではATTNキー(Caps Lockらしい)とZOOMキー(?)が押されていることに変化していました。

 通常のゲーム開発では関係ないキーが押されていても問題は無いのでしょうが、スクリーンセーバーに使ってはまりました。

 画廊亭2011 V0.6が特定環境で起動しない原因の1つはおそらくこれです。