linux终端特殊键ESC序列读取方法
来源:互联网 发布:开源中国 cms 编辑:程序博客网 时间:2024/05/01 00:14
9月11日晚上,采用getchar获取终端输入,发现特殊键会有多个字符,以ESC开头,但字符数不固定。
如:向上键是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终端特殊键ESC序列读取方法
- 在linux中如何用C语言实现读取“上下左右、ESC”键
- ubuntu 9.10 gnome 终端vi 的esc键失效?
- linux 终端 读取每个字符
- linux 终端计时方法
- linux系统下ESC键失效
- linux 下交换 esc与cap的方法。
- 控制终端代码 - Linux 控制终端转义和控制序列
- cmd下读取远程终端端口方法
- shell脚本读取终端输入的方法
- 使用fuser命令kill一个终端(特殊文件)的方法
- linux终端图形编程方法
- 屏蔽Enter键和ESC键的方法
- MFC防止enter和ESC键使程序退出方法
- 终端特殊字符
- Windows XP系统中如何屏蔽 Ctrl+Alt+Del、Alt+Tab以及Ctrl+Esc键序列
- Windows XP系统中如何屏蔽 Ctrl+Alt+Del、Alt+Tab以及Ctrl+Esc键序列
- Windows XP系统中如何屏蔽 Ctrl+Alt+Del、Alt+Tab以及Ctrl+Esc键序列
- 孩子读书
- 夜
- 第一次自己待在家里1个小时
- 上小学1周
- Restful advantages and disadvantages
- linux终端特殊键ESC序列读取方法
- Josephus问题的链表实现
- Joggler的MeeGo系统移植
- 回调机制深入剖析
- 看好MeeGo是匹黑马
- MMORPG Server - 数据存储
- Intel宣称不放弃MeeGo系统 期待新伙伴
- 插件思想及实现
- RMAN简明教程之四——RMAN备份详解