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 的同时重新映射所有键似乎相当痛苦。
有没有其他人找到解决这个问题的方法?
编辑:
查看 key 函数内部的值表明无论是否保持 shift 键都是相同的,并且它不特定于分号/冒号。所有键都相同(对于字母键有意义,没有 SLDK_A 只有 SDLK_a,但对于括号、引号、大于/小于、美元符号等,它们不会仅显示基本键)