2011-02-21 13 views
0

テキストエディタでキーを押したままにすると、文字が表示され、文字ストリームが表示される前に一時停止します。これは、思考中に他のものよりも長くキーを押さえている人や、思考中に一時停止している人を補うシステムです。SlimDX Raw入力キーボード "ジャダリング"を停止する

私の問題は、SlimDX Direct3D11アプリケーションで移動キーを押したときに起こります。カメラを動かすのではなく、1単位移動して一時停止し、次に動きます。

Iキーボードデータをキャプチャするために、次のコードを使用

private void InitializeKeyboard() 
{ 
    INPUT.Device.RegisterDevice(SlimDX.Multimedia.UsagePage.Generic, SlimDX.Multimedia.UsageId.Keyboard, INPUT.DeviceFlags.None); 
    INPUT.Device.KeyboardInput += new EventHandler<KeyboardInputEventArgs>(KeyboardInput); 
} 

void KeyboardInput(object sender, KeyboardInputEventArgs e) 
{ 
    if (e.Key == Keys.W) camera.MoveForward(0.3f); 
    if (e.Key == Keys.S) camera.MoveForward(-0.3f); 
} 

Iマウスをキャプチャするための同様のシステムを使用し、マウスの動きが滑らかにし、それに応答して動作するので、問題は、この自動補正キーボードでなければなりませんダブルタップを防止するために行っています。ハードウェアを止める方法を知っている人はいますか?または、DirectX 11で入力を別にトラップする必要がある場合

答えて

2

これは仕様です。SystemInformation.KeyboardDelayとKeyboardSpeedがあります。遅延は、キーが繰り返されるのを待つ250ミリ秒の数です。これは、通常、繰り返しキーストロークの間の遅延、速度よりも長くなります。

keydownとkeyupメッセージだけを使用してください。タイマーやゲームループが動作する自然な方法から繰り返しを取得します。これはまた、複数のキーが押されていることをサポートしています。あなたの現在の方法では動作しないものがあります。

関連する問題