テキストエディタでキーを押したままにすると、文字が表示され、文字のストリームが表示される前に少し休止します。これは、キーを他の人より長く押し続けたり、思考を一時停止したりする人を補うシステムです。
私の問題は、SlimDXDirect3D11アプリケーションで移動キーを押したときにこれが発生することです。カメラを動かす代わりに、1ユニット移動し、一時停止してから、滑らかに移動します。
次のコードを使用して、キーボードデータをキャプチャします。
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);
}
私はマウスをキャプチャするために同様のシステムを使用していますが、マウスの動きはスムーズかつ応答性が高いため、問題はキーボードがダブルタップを防ぐために行っているこの自動修正にあるはずです。ハードウェアがそれを行うのを止める方法を知っている人はいますか?または、DirectX 11で入力を別の方法でトラップすることになっている場合はどうなりますか?