SDL_Event-> key.keysym.sym符号键(冒号,双引号,问号......)

时间:2013-07-22 14:20:03

标签: c++ user-interface keyboard sdl

http://www.libsdl.org/docs/html/sdlkey.html

以下是SDL文档中列出的主要枚举。 特别针对这个问题,我们只需要一个子集。

SDLK_COLON      //value is 58 (ascii)
SDLK_SEMICOLON  //value is 59 (ascii)

//Code Example illustrating question
void KText::OnKeyDown(SDLKey key, SDLMod mod, Uint16 unicode) {
    if(key == SDLK_COLON) exit(1);
}

当我按分号时,显然它不会退出。当我按住shift并按分号(键入冒号)时,它仍然不会退出。我已经测试过,无论我是否按住shift,都会抛出默认密钥。这可能是设计或可能是一个错误。我可以简单地说好,如果我按住shift和键分号,那么我应该使用冒号代替。然而,在保持换档时重新映射所有键似乎相当痛苦。

还有其他人为此找到了解决方法吗?

编辑:

查看key函数内部的值表示无论是否保持shift,键都是相同的,并且它不是特定于分号/冒号。对于所有键都是一样的(对于字母键有意义,没有SLDK_A只有SDLK_a,但是对于括号,引号,大于/小于,美元符号等,它们不会仅显示基本键)

1 个答案:

答案 0 :(得分:1)

所以,经过多次来回评论:要正确读取键值,应使用unicode值,这意味着SDL_EnableUNICODE(1);在程序初始化的某个地方(以便unicode得到填充 - 它确实添加了一点点[在大多数情况下,它的函数调用一个函数来执行某种类型的表中的查找,但它可能比这更多]的额外处理,所以如果它不是需要,浪费时试图将每个按键转换为他们尊重的实际unicode值。