2012-10-03 31 views
1

我知道如何使用事件来测试某个键是否被按下,但在C中我从来没有找到如何做到这一点。在C中读取按键。输入密钥

我真正想要的是一个Keylistener,可以听上,下,左,右键。我需要它在Linux中工作,所以没有Windows库。如果可能的话,使用第三方库是我的最佳选择。

INT主要(){

//按键侦听器{

//如果(键==高达){//做一些事情}

//如果(键==下){//做一些事情}

//如果(键==左){//做一些事情}

//如果(键==右){//做一些事情}

//}

}

+1

做你想做的)终端接收按键,B),在窗口中,C)中的X窗口系统的背景是什么? –

+0

我正在使用SDL库以可视方式显示程序,但我只是希望能够阅读按键 – Firre

+0

好吧,只需一个普通键盘,无论它是什么。在C#中,您只需使用KeyValue() – Firre

回答

5

如何使用SDL读取键盘了。

SDL_Event event; 
    . 
    . 
    /* Poll for events. SDL_PollEvent() returns 0 when there are no */ 
    /* more events on the event queue, our while loop will exit when */ 
    /* that occurs.             */ 
    while(SDL_PollEvent(&event)){ 
    /* We are only worried about SDL_KEYDOWN and SDL_KEYUP events */ 
    switch(event.type){ 
     case SDL_KEYDOWN: 
     printf("Key press detected\n"); 

     if (event.key.keysym.sym==SDLK_UP) 
      printf("It was the UP key\n"); 

     break; 
     case SDL_KEYUP: 
     printf("Key release detected\n"); 
     break; 

     default: 
     break; 
    } 
    } 
    . 
    . 

来源:http://www.libsdl.org/docs/html/guideinputkeyboard.html

+0

不错,我如何捕获SDL_KEYDOWN中的向上键? – Firre

+0

咦?向上键是SDL_KEYUP。 – zwol

+0

@Zack你错了,SDL_KEYUP意思是释放 –