SDL2得到键映射/"煮熟"按键事件的代码?

时间:2016-04-13 19:17:04

标签: sdl-2

好的,似乎这个问题在SDL论坛和这里多年来不断涌现,但我还没有看到一个好的解决方案。也许有一种解决方法,或者我错过了一些东西..

我正在努力做饭#34;从SDL_KEYDOWN事件接收的修饰符+键代码,组合在当前OS键映射中表示的内容。

在SDL1中,这在keysym.unicode字段中可用,但在SDL2中已经消失了。

相反,您应该为此听取SDL_TEXTINPUT事件,这确实有效,但问题是它们相应的SDL_KEYDOWN事件之后,所以如果您有例如热键你使用并想要做出反应,这可能需要成为复合键的一部分,你就会遇到麻烦。

更具体地说,我试图对' /'做出反应。按,在当前键映射中,打开游戏中的管理命令框。但是在我的键盘映射上,使用Shift + 7达到/,我已经使用7作为其他东西的热键,并且不想在Shift + 7情况下触发其他内容(但我可以& #39;从游戏中知道它是特定的Shift + 7代表' /'!)

在SDL2中,我按此顺序获取这些事件:

  • L_SHIFT的SDL_KEYDOWN
  • SDL_KEYDOWN for 7
  • SDL_TEXTINPUT用于' /'

我要问的一个解决方法是,是否有办法去做饭#34; " L_SHIFT +' 7'"组合成' /'我自己,这样我就可以在等待SDL_TEXTINPUT事件之前立即在SDL_KEYDOWN上查看7。

另一方面,在SDL1中,我会得到:

  • L_SHIFT的SDL_KEYDOWN
  • SDL_KEYDOWN' 7'将keysym.unicode字段设置为' /'

工作正常(并且还适用于在专用密钥上具有' /'的键盘映射)。

0 个答案:

没有答案