キーボードの押下状態の取得について…
Posted: 2012年7月10日(火) 22:43
特定の状況下で一部のキーの状態を取得できなくなってしまいます
押下状態の取得にはDXライブラリのGetHitKeyStateAll関数を使用しています
具体的には
A、Z、矢印の↑キーの状態を取得しようとしているのですが
3つをそれぞれ1つだけ押した場合は正常に押下状態を取得できます
3の内いずれか2つを取得しようとした場合にも正常に取得できます
ですが、3つを同時に取得しようとすると、最後に押した1つだけ取得できなくなります(でも→とか↓は正常に取得出来たり)
実際どうなってるのか目で見てみようと、3つのキーそれぞれに変数を割り当てて
それぞれ対応しているキーを押している間だけ値が増えるように設定した上で3つの変数を表示させてみたのですが
やはり2つまではちゃんと数値が増えて行くのに、3つ目を押してもそれに対応した変数だけ数値が増えずに0のままです(当然別々に押すとそれぞれ数値は増えていく)
別々に取得しようとすると正常に動作するのに、ある程度以上の数を同時に取得しようとすると動作がおかしくなる…
これはキーボードが原因でしょうか?
これに問題があるとは思えませんが、一応押下状態を取得している部分を記載します
押下状態の取得にはDXライブラリのGetHitKeyStateAll関数を使用しています
具体的には
A、Z、矢印の↑キーの状態を取得しようとしているのですが
3つをそれぞれ1つだけ押した場合は正常に押下状態を取得できます
3の内いずれか2つを取得しようとした場合にも正常に取得できます
ですが、3つを同時に取得しようとすると、最後に押した1つだけ取得できなくなります(でも→とか↓は正常に取得出来たり)
実際どうなってるのか目で見てみようと、3つのキーそれぞれに変数を割り当てて
それぞれ対応しているキーを押している間だけ値が増えるように設定した上で3つの変数を表示させてみたのですが
やはり2つまではちゃんと数値が増えて行くのに、3つ目を押してもそれに対応した変数だけ数値が増えずに0のままです(当然別々に押すとそれぞれ数値は増えていく)
別々に取得しようとすると正常に動作するのに、ある程度以上の数を同時に取得しようとすると動作がおかしくなる…
これはキーボードが原因でしょうか?
これに問題があるとは思えませんが、一応押下状態を取得している部分を記載します
//キーボードの入力状態を得る
void Keyint_Class::Get_KeyState()
{
char Key_Buf[256];
//パッドが接続されていたら処理しない
if(pad_flag == true) return;
GetHitKeyStateAll(Key_Buf); //キーボードの入力状態を取得
for(int i=0; i<PAD_MAX; i++) //0番から16番まで全てチェックする
{
//入力があればkeyintの値を+1
//keyconfig配列に取得するキーの数値を指定してある
if(Key_Buf[keyconfig[Config_Key][i]]==1) keyint[i]++;
//無ければ0にする
else keyint[i]=0;
}
}