В моем SDL 2.0 на основе приложения, я хотел бы обрабатывать как Control +
, так и Control =
.Как правильно обрабатывать комбинации клавиш управления в SDL2
Я понимаю, что я мог бы обработать событие SDL_KEYDOWN
и найти код ключа SDLK_EQUALS
в сочетании с KEYMODE_CTRL
. И даже проверьте на KEYMOD_SHIFT' to distinguish between
+ and
= `. Однако это не переносимо и ломается на клавиатурах, где эти символы сопоставляются с разными ключами.
Еще одна вещь, которую я пробовал, - включить SDL_StartTextInput()
, а затем послушать SDL_TEXTINPUT
событий. Однако это работает только для печатных символов. Он полностью игнорирует контрольные последовательности.
Каков правильный способ сделать это? Я вижу SDL 1.2 фактически имел unicode
поле в SDL_Keysym
структура. Это определенно сделает это намного легче для меня. Кто-нибудь знает, почему это было удалено и что эквивалент в SDL 2.0 будет?
Я думаю, что он был заменен событиями ввода текста, взгляните на https://wiki.libsdl.org/Tutorials/TextInput – keltar
@keltar. Проблема заключается в том, что TextInput проглатывает контрольные клавиши. Он работает только для печатных символов , Я могу прочитать код, чтобы увидеть, как он работает внутри, и, возможно, создать что-то подобное, но я бы предпочел не делать этого. –
Но у вас все еще есть события keydown для ctrl, если он не является частью последовательности ввода, поэтому вы можете комбинировать оба. – keltar