ジョイパッドを使用するプログラムを組んでいるのですが、
最近のジョイパッドは十字キーがアナログレバーではなく
POV(ハットスイッチ)に割り当てられているものもあります。
上記モジュールではPOVの入力を取得できないため、
POV入力を取得する部分を追加し、アナログ入力による
十字キー判定と合成して、POV、アナログ、どちらでも
十字キーとして使用できるようにしたいと考えています。
jdata(15)=0 :jdata=52,255 _joyGetPosEx p2,jdata if stat!=0 : p1=0 : return ;ボタン情報取り出し res=(jdata(8))<<4 ;スティック情報取り出し(アナログ → 十字キー) if jdata(2)<BORDER_LOW : res|=1 ;左 if jdata(2)>BORDER_HIGH : res|=4 ;右 if jdata(3)<BORDER_LOW : res|=2 ;上 if jdata(3)>BORDER_HIGH : res|=8 ;下 ;スティック情報取り出し(POV → 十字キー) if UsePovFlag { pov = jdata(10) if (pov & 0xFFFF)!0xFFFF { ; なにか押されていた場合の処理 ;povは何も押されていない場合、環境によって-1を帰す場合と、0xFFFFを帰す場合があります。 ;↑方向を 0度とした角度[deg]を返します。 ;値は100倍されたものを返します。右回り正。 ;→方向は 9000 ;↓方向は18000 ;←方向は27000 ;↑+→方向は4500となります。 if (pov=31500)|(pov= 0)|(pov= 4500) : res|=2 ;上 if (pov= 4500)|(pov= 9000)|(pov=13500) : res|=4 ;右 if (pov=13500)|(pov=18000)|(pov=22500) : res|=8 ;下 if (pov=22500)|(pov=27000)|(pov=31500) : res|=1 ;左 } } p1=res;アナログキーとPOVを合成した戻り値
しかし上記の方法だと、そもそもPOVがついていないジョイパッドを
接続した場合、上方向が入りっぱなしになってしまうのです。
ユーザー側に設定させることも選択肢の一つですが、できることなら
プログラム側でハットスイッチの有無を検出し、ついていない
場合はPOV入力を取らないようにしたいのですが、可能でしょうか?