USB ジョイパットプログラムに関する Tips

[戻る]

VC++ でジョイパットの状態を入力する必要があり調べてみました.

キーワードは joyGetPos です.

#include <MMSystem.h>
#pragma comment(lib,"winmm.lib")

と頭に書いて, 後は適当な所で

  JOYINFO j;
  joyGetPos(JOYSTICKID1, &j);

と書くだけです.

すると j.wXpos, j.wYpos に十字ボタン, j.wButtons にボタンの状態が入ります.

数値の意味は使っているジョイスティック/ジョイパットによって 変わるのかもしれませんが, 手持ちのジョイパットでは

となっていました.

ちなみに analog と書かれたボタンがあって, それを押すと 十字キーの代わりにアナログスティックが有効になります. これを有効にすると, 左側のアナログスティックの左右角に 応じて wXpos が, 前後角に応じて wYpos が, 右側のアナログスティックの左右角に応じて wZpos が 変化しますが, どうも角度と数値が一対一対応でなく, かつリニアで無いため適当なビット演算が必要な気がします. 上位 4bit くらいしかアテにならないのかな?


2007.8