我正在将程序从GLUT迁移到SDL.在我当前的程序中,按a键会产生不同的响应,然后按A键.这在GLUT中非常简单,因为键盘函数回调在按下的键的ASCII值中传递.
void keyPressedFn(unsigned char key, int x, int y){
switch(key){
case 'a':
// do work for a
break;
case 'A':
// do work for A
break;
}
}
我正在努力在SDL中复制类似的功能,因为按下a键会产生相同的响应,无论是否按下SHIFT或CAPS LOCK.
有没有一种简单的方法在SDL中复制上述功能?
编辑:在上面的例子中我只展示了如何处理一个键,但实际上,我将有一个大约15个键的列表,如果按下shift键,我想要以不同的方式响应.
解决方法:
检查keydown事件时出现的键盘修饰符.例如:
while(SDL_PollEvent(&event))
{
switch(event.type)
{
case SDL_KEYDOWN:
if(event.key.keysym.sym == SDLK_a)
{
if(event.key.keysym.mod & KMOD_SHIFT)
{
// Handle 'A'
}
else
{
// Handle 'a'
}
}
break;
...
}
}