为什么我从getch()得到相同的“向上右下”按键

时间:2013-08-30 14:06:38

标签: curses getch

我写了一个关于B-Trix的小程序。我想用getch()来获取玩家的输入。 我试着通过使用getch()得到up,down,right,left key-press的值,这是我的测试代码:

#include <stdio.h>
#include <curses.h>
int main(void)
{
int ch;
initscr();
printw("Input a character:");
ch = getch();
printw("\nYou input a '%c'\n%d", ch, ch);
refresh();
sleep(3);
endwin();
return 0;
}

左上角的输出是27,为什么这些值相同? 有人能帮助我吗?

1 个答案:

答案 0 :(得分:0)

箭头键在Ubuntu中由三个字符编码。 所以我改变了我的代码来检查箭头键。

if(kbhit()){
            switch(getch()){
            case 0x1b:          //For case arrow pressed
                if(getch() == 0x5b){
                    switch(getch()){
                    case 0x41:
                        turn();
                        break;
                    case 0x44:
                        mv_left();
                        break;
                    case 0x43:
                        mv_right();
                        break;
                    case 0x42:
                        mv_down();
                        break;
                    }
                }
                break;
            }
}