linux终端特殊键ESC序列读取方法
2011-09-12 07:01
162 查看
9月11日晚上,采用getchar获取终端输入,发现特殊键会有多个字符,以ESC开头,但字符数不固定。
如:向上键是27,91,65三个字符,F5:27,91,49,53,126是5个字符。
本来打算用取系统时间的方式来判断这些字符是不是一起的,但不同CPU、调度情况下,可能很不稳定,所以还是得用别的办法。
用普通的read试试看,先把终端设置成不等待读入时间,如下:
输出结果如下:
Key 10 index 0 《回车
Key 27 index 0 《向上键,3个字符
Key 91 index 1
Key 65 index 2
Key 27 index 0 《F12,5个字符
Key 91 index 1
Key 50 index 2
Key 52 index 3
Key 126 index 4
Key 27 index 0 《F5,5个字符
Key 91 index 1
Key 49 index 2
Key 53 index 3
Key 126 index 4
Key 113 index 0 《q
Yeah,搞定了!
如:向上键是27,91,65三个字符,F5:27,91,49,53,126是5个字符。
本来打算用取系统时间的方式来判断这些字符是不是一起的,但不同CPU、调度情况下,可能很不稳定,所以还是得用别的办法。
用普通的read试试看,先把终端设置成不等待读入时间,如下:
term.c_lflag &= ~ICANON; term.c_lflag &= (~ECHO); term.c_cc[VTIME] = 0; tcsetattr(STDIN_FILENO, TCSANOW, &term); for(;;) { nRead=read(STDIN_FILENO, szCmdStr, 16); if (nRead != 0) { for (tmp = 0; tmp < nRead; tmp ++) { printf("Key %d index%d\r\n", szCmdStr[tmp], tmp); if (szCmdStr[tmp] == 'q') break; } if (szCmdStr[tmp] == 'q') break; } }
输出结果如下:
Key 10 index 0 《回车
Key 27 index 0 《向上键,3个字符
Key 91 index 1
Key 65 index 2
Key 27 index 0 《F12,5个字符
Key 91 index 1
Key 50 index 2
Key 52 index 3
Key 126 index 4
Key 27 index 0 《F5,5个字符
Key 91 index 1
Key 49 index 2
Key 53 index 3
Key 126 index 4
Key 113 index 0 《q
Yeah,搞定了!
相关文章推荐
- linux 不回车直接读取一个字符的方法(termios结构的描述了终端的模式,在这段代码中我们改变了它,使得终端能够接收到键盘输入马上返回。)
- Linux创建文件命令的方法与特殊目录简介
- linux超级终端minicom的使用方法
- Linux系统下串口接收数据,部分特殊字符丢失的解决方法 .
- linux读取自定义的配置文件方法
- LINUX终端服务客户端进退全屏方法
- linux下终端分屏使用的两种方法(screen和tmux)
- 在linux中如何用C语言实现读取“上下左右、ESC”键
- 在Linux终端中查看公有IP的方法详解
- 关于linux下QIODevice类进行读取的几个方法的理解
- Linux下终端字体颜色设置方法
- linux下通过脚本与终端交互的方法
- 在Linux命令行终端中使用python的简单方法
- windows 和 linux 上 循环读取文件名称的区别和方法
- linux读取ISO文件或是光驱的方法--挂载
- 转Linux 终端中文乱码解决方法
- Linux终端命令行路径缩短方法
- linux超级终端minicom的使用方法
- linux 命令终端提示符显示-bash-4.1#解决方法
- linux 下打开多个终端的方法