DXライブラリにいつもお世話になっております。
GetJoypadInputStateを利用したテンキーによる方向キー操作で、
特定の入力を行うとキーが入りっぱなしになる現象を確認いたしましたので
ご報告させていただきます。
再現方法は、
1.例えば if(GetJoypadInputState(DX_INPUT_KEY_PAD1) & PAD_INPUT_UP)
によるキー入力を受け付け処理を行っている状態で
2.Shiftキーとテンキーの上キー(8)を同時にちょんと押す。
(両方押しっぱなしの状態から同時に離す、の方が正確かもしれません)
3.するとまれに、キーボードを触っていなくても、以降ずっと1.の条件文でtrueが返ってくるようになる
というものです。この現象は上下左右(8,2,4,6)、どのテンキーでも確認することができました。
Shiftと矢印キーの組み合わせでは発生しません、テンキーのみのようです。
使用したライブラリはVer2.25です。
再現に使用したソースコードは以下の通りです。
タイミングよくテンキー+Shiftを押すと入力が1になったままになります。
if( DxLib_Init() == -1 ){return -1;}
SetDrawScreen(DX_SCREEN_BACK);
int KeyUp,KeyDown,KeyLeft,KeyRight;
while(ProcessMessage()==0){
KeyUp = KeyDown = KeyLeft = KeyRight = 0;
// 4方向キーの入力状態を取得する
if((GetJoypadInputState(DX_INPUT_KEY_PAD1) & PAD_INPUT_UP)){ KeyUp = 1;}
if((GetJoypadInputState(DX_INPUT_KEY_PAD1) & PAD_INPUT_DOWN)){ KeyDown = 1;}
if((GetJoypadInputState(DX_INPUT_KEY_PAD1) & PAD_INPUT_LEFT)){ KeyLeft = 1; }
if((GetJoypadInputState(DX_INPUT_KEY_PAD1) & PAD_INPUT_RIGHT)){ KeyRight = 1;}
// Zキーが押されたら終了する
if((GetJoypadInputState(DX_INPUT_KEY_PAD1) & PAD_INPUT_A)){ break;}
ClearDrawScreen();
DrawFormatString(0,0,GetColor(255,255,255),"Up %d Down %d Left %d Right%d",KeyUp,KeyDown,KeyLeft,KeyRight);
ScreenFlip();
WaitTimer(16);
}
DxLib_End() ;