SDL2处理非字符键按下与SDL_TextInputEvent相同的自然延迟率

时间:2016-11-13 15:42:33

标签: c input sdl d sdl-2

在SDL2中有一个事件SDL_TextInputEvent,它以OS配置的自然速率从键盘捕获输入。 当我调查事件时,它是这样的:

SDL_Event event;
while (SDL_PollEvent(&event)) {
    switch (event.type) {
    case SDL_TEXTINPUT:
        Input_Listener.last_key = event.text.text;
        break;
    default: 
        break;
    }
}

event.text.textchar[32],其中包含用户在程序中输入的UTF-8字符。这很好,因为延迟很好,所以如果按住a键,它将不会尽可能快地插入a个字符。

但是,此事件似乎无法捕获非字符输入,例如按Enter键或箭头键。但是,我可以像这样捕获它们:

ubyte* states = SDL_GetKeyboardState(null);
if (states[SDL_SCANCODE_BACKSPACE]) {
    ... do stuff here 
}

但是会导致操作系统延迟,并且会尽快启动。我的程序是一个文本编辑器,但它的编程就像是一个游戏。所以有游戏循环,更新/渲染方法等。这意味着每帧都会不断地进行输入检查。

如何以与配置操作系统相同的延迟速率获取非字符输入?我是否缺少某些功能,或者某种方式可以模拟这个功能?

0 个答案:

没有答案