【发布时间】:2017-01-10 14:06:12
【问题描述】:
在我的基于 SDL 2.0 的应用程序中,我想同时处理 Control + 和 Control =。
我知道我可以处理SDL_KEYDOWN 事件并结合KEYMODE_CTRL 查找SDLK_EQUALS 键码。甚至检查KEYMOD_SHIFT' to distinguish between+and=`。但是,这不是便携式的,并且在这些符号映射到不同键的键盘上会中断。
我尝试过的另一件事是启用SDL_StartTextInput(),然后监听SDL_TEXTINPUT 事件。但是,这只适用于可打印的字符。它完全忽略控制序列。
这样做的正确方法是什么?我看到SDL 1.2 实际上在SDL_Keysym 结构中有一个unicode 字段。这对我来说肯定会容易得多。有谁知道为什么要删除它以及 SDL 2.0 中的等价物是什么?
【问题讨论】:
-
我觉得是换成文本输入事件了,看看wiki.libsdl.org/Tutorials/TextInput
-
@keltar 问题是 TextInput 吞下了控制键。它仅适用于可打印字符。我可以阅读代码以了解它在内部是如何工作的,并且可能会构建类似的东西,但我不想这样做。
-
但是如果 ctrl 不是输入序列的一部分,你仍然有 keydown 事件,所以你可以将两者结合起来。
-
@keltar 我没有收到
SDL_TEXTINPUT不可打印控制字符的事件。喜欢C-+。 -
但是你有一个用于
+和SDL_KEYDOWN用于ctrl,对吧? (至少我会)
标签: keyboard-events sdl-2