【问题标题】:How to disable key repeat in SDL2 text input如何在 SDL2 文本输入中禁用键重复
【发布时间】:2018-06-01 01:14:02
【问题描述】:

我想接管程序中键的重复方式,这意味着禁用 SDL2 自动执行的方式。

可以忽略SDL_KEYDOWN 重复事件,因为Event 联合成员key 有一个repeat 可以过滤的布尔值(这个问题探讨了该解决方案:How to disable key repeat in SDL2?)。但是SDL_TEXTINPUT 事件中没有相同的可用信息,因此无法过滤掉重复的字符。

有没有办法彻底禁用按键重复?

【问题讨论】:

  • 在研究了库的代码并在 irc 上聊天之后,没有一种(简单的)方法可以禁用键重复。所以我要做的就是接受它,并确保像退格键和箭头键这样的文本编辑按钮不会忽略重复标志,所以它们“感觉”一样。

标签: c++ sdl sdl-2


【解决方案1】:

目前似乎没有简单的方法可以做到这一点,因为我也需要这个,所以我做了一张票:https://bugzilla.libsdl.org/show_bug.cgi?id=4598

如果您有其他需要此功能的用例,请随时在错误单上添加评论,以便开发人员了解此功能的重要用途。 (我正在为那些希望在没有重大事故的情况下仍然能够输入文本的人提供紧急禁用选项)

【讨论】:

    【解决方案2】:

    在 SDL lib 中可能是一个解决方案,但您也可以添加一些简单的 c++ 代码来解决您的问题。例如,如果您不想使用 SDL_KEYUP,您可以这样做:

    //before loop 
    int keypress_control = 0;
    //much Code, loop etc.
    //
    swich(event.type)
    case SDL_KEYDOWN :
    /*if or switch again as you want */if (keypress_control == 
    2)
    {
    /*Code here*/ 
    keypress_control = 0;
    }
    else 
    {
    keypress_control = 0;
    } 
    }
    //after switch but Still in program loop
    Keypress_control++;
    //
    //
    

    【讨论】:

      猜你喜欢
      • 2014-04-05
      • 2011-11-24
      • 2016-04-25
      • 2015-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-11
      • 2021-10-24
      相关资源
      最近更新 更多