Когда вы удерживаете клавишу в текстовом редакторе, появляется символ, затем вы получаете небольшую паузу, прежде чем появляется поток символов. Эта система компенсирует некоторых людей, удерживающих клавишу дольше, чем другие / думающих и т. Д.
Моя проблема в том, что это происходит, когда я удерживаю клавишу перемещения в приложении SlimDX Direct3D11. Вместо перемещения камеры она перемещается на 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?