- 論壇徽章:
- 0
|
各位大蝦,請(qǐng)指教:
我使用C開(kāi)發(fā)一個(gè)系統(tǒng),需要得到鍵盤(pán)的功能鍵,如F1,方向鍵等等.
不要使用curses庫(kù),怎么實(shí)現(xiàn)啊,
我是這么寫(xiě)的:
int ch;
ch = getchar();
printf("%d\n",ch);
如果我按方向鍵,同時(shí)打印出三個(gè)值,比如:RIGHT鍵,打印的結(jié)果是:
27 91 68 我知道最后的68是對(duì)的,但是我只想要最后面的值,
怎么處理,只是使用C和標(biāo)準(zhǔn)C庫(kù),怎么實(shí)現(xiàn)啊
下面是我完成的代碼: mygetch()類(lèi)似與DOS下TC中的getch()直接返回.
#include <stdio.h>;
#include <stdlib.h>;
#include <string.h>;
#include <termios.h>;
static struct termios originalTermPara;
static void set_keypress(void)
{
struct termios currentTermPara;
tcgetattr(0,¤tTermPara);
memcpy(&originalTermPara,¤tTermPara,sizeof(struct termios));
currentTermPara.c_lflag &= ~(ICANON | ECHO | ISIG);
currentTermPara.c_cc[VTIME]=0;
currentTermPara.c_cc[VMIN]=1;
tcsetattr(0,TCSANOW,¤tTermPara);
return;
}
void reset_keypress(void)
{
tcsetattr(0,TCSANOW,&originalTermPara);
return;
}
int mygetch()
{
int ch;
set_keypress();
ch = getchar();
reset_keypress();
return ch;
}
int main()
{
int ch;
while (1)
{
ch = mygetch();
if (ch=='q') break;
printf("%c\n",ch);
}
return 0;
} |
|