使用原始输入第一次按下后删除暂停

时间:2013-11-19 14:42:57

标签: input raw-input

我正在使用RAWINPUT来处理C ++应用程序中的输入。但是,按下键盘上的一个键并且发送了相应的WM_消息后,键盘消息似乎会暂停半秒钟,然后在后续消息之间没有任何暂停的情况下恢复。

如何更改重复延迟?

以下代码正在使用:

我从我的消息proc转发输入:

case WM_INPUT:
    if (!m_inputHandler.HandleInput(msg, wParam, lParam))
    return 0;



char buffer[sizeof(RAWINPUT)] = {};
UINT size = sizeof(RAWINPUT);

GetRawInputData((HRAWINPUT)lParam, RID_INPUT, buffer, &size, sizeof(RAWINPUTHEADER));
RAWINPUT    *raw = (RAWINPUT*)buffer;

if (raw->header.dwType == RIM_TYPEMOUSE)
{
    //
}
else if (raw->header.dwType == RIM_TYPEKEYBOARD)
{
    RAWKEYBOARD const &rawKB = raw->data.keyboard;
    UINT virtualKey = rawKB.VKey;
    UINT scanCode = rawKB.MakeCode;
    UINT flags = rawKB.Flags;

    // handle keyboard input and dispatch to listeners
}

问题不在于键盘数据的处理,而在于WM_INPUT消息被发送一次,然后暂停,然后在暂停后定期发送。

0 个答案:

没有答案