键盘输入的问题(curses) Esc 和 PgUp返回的值相同,如何区别?"/>
关于Unix上读取键盘输入的问题(curses) Esc 和 PgUp返回的值相同,如何区别?
关于Unix上读取键盘输入的问题(curses) Esc 和 PgUp返回的值相同,如何区别? |
---|
-
- 加为好友
- 发送私信
- 在线聊天
- jiantiantian
-
- 等级:
- 可用分等级:
- 总技术分:
- 总技术分排名:
- 结帖率:
| |
-
- 加为好友
- 发送私信
- 在线聊天
- jiantiantian
-
- 等级:
- 可用分等级:
- 总技术分:
- 总技术分排名:
| |
-
- 加为好友
- 发送私信
- 在线聊天
- jiantiantian
-
- 等级:
- 可用分等级:
- 总技术分:
- 总技术分排名:
| 发表于:2009-01-09 13:48:582楼 得分:0 | 自己回答吧
使用curses库是没有办法区别的。
可是使用stty命令对终端进行设置,可以及时响应。 也可以对ESC键和PgUp等进行判断。 代码如下:
#include <stdio.h> #include <stdlib.h> #include <termios.h> #include <unistd.h> #include <sys/ioctl.h> #include <sys/fcntl.h>
//sttyコマンドは標準出力で使用される端末の設定と確認を行うことができます。 //コマンドリファレンスはこちらを参考に。 //.1.html
int keyInput1(char ab_Chr[]) {
int gi_Tty; /* 端末を入力モードでオープン */ if((gi_Tty = open("/dev/tty",O_RDONLY)) == -1)/* 異常時 */{ /* 異常で復帰 */ return -1; } system("stty raw -echo"); read(gi_Tty, ab_Chr, 5); close(gi_Tty); system("stty -raw echo");
return 0; }
int main() { char t_ReadBuf[250]; char ab_Chr[250];
int c ; memset(ab_Chr, 0x00, sizeof(ab_Chr)); printf("+++++ Call keyInput1 +++++++/n"); printf("Please Input Key:/n"); keyInput1(ab_Chr); printf("/n input key:0x%x/n",ab_Chr[0]);
for(int i=0; i < 5; i++) { printf("---input key ab_Chr[%d] :0x%x/n",i, ab_Chr[i]); } }
$ ./a.out (esc的执行结果) +++++ Call keyInput1 +++++++ Please Input Key:
input key:0x1b ---input key ab_Chr[0] :0x1b ---input key ab_Chr[1] :0x0 ---input key ab_Chr[2] :0x0 ---input key ab_Chr[3] :0x0 ---input key ab_Chr[4] :0x0 $ ./a.out (PgUP的执行结果) +++++ Call keyInput1 +++++++ Please Input Key:
input key:0x1b ---input key ab_Chr[0] :0x1b ---input key ab_Chr[1] :0x5b ---input key ab_Chr[2] :0x33 ---input key ab_Chr[3] :0x7e ---input key ab_Chr[4] :0x0
但是不能与curses进行配合使用。
|
|
更多推荐
关于Unix上读取键盘输入的问题(curses) Esc 和 PgUp返回的值相同,如何区别?
发布评论