关于写my_uboot for smdk6410时关于删除键和方向键到问题
2013-12-08 18:13
417 查看
自己在学习之后,写uboot时遇到到方向键,删除键问题,现已经解决,直接上代码,希望帮助在学习嵌入式到同学。
(删除键可以使用,但是禁用了方向键。根据ASCII码值backpace的键值是8,而方向键时组合键由 esc 和‘[’ 和 A(up)/B(down)/C(right)/D(left)着三个键值组成到,所以按下一次读取三次键值,127是delete的ASCII码表。下面时uart再读取一个字符时,对读取到每个字符进行判断。
(删除键可以使用,但是禁用了方向键。根据ASCII码值backpace的键值是8,而方向键时组合键由 esc 和‘[’ 和 A(up)/B(down)/C(right)/D(left)着三个键值组成到,所以按下一次读取三次键值,127是delete的ASCII码表。下面时uart再读取一个字符时,对读取到每个字符进行判断。
char* uart_gets(char *str) { int i = 0; char c; do { c = uart_getchar(); if(c == 8) { i--; if(i < 0) { i == 0; continue; } uart_putchar(c);//向前退一格 uart_putchar(' ');//以空格掩盖,此时光标又下移一格 uart_putchar(c);//让光标回到空格掩盖到地方 rev_buf[i] = 0; continue; } if(c == 27)//'esc' key { c = uart_getchar();//‘[’ key c = uart_getchar();// A/B/C/D continue; } if(c == 126)//delete key continue; uart_putchar(c); rev_buf[i] = c; if(c == '\r') { uart_putchar('\n'); } i++; }while(c != '\r'); rev_buf[i - 1] = '\0'; return rev_buf; })
相关文章推荐
- 关于swift for 循环 遍历数组删除元素的bug问题
- 关于testlink重启后出现“1045 - Access denied for user 'my_db '@'localhost' (using password: YES)”的问题解决办法
- 关于MYSQL通过子查询删除重复数据的for update报错问题解决
- 关于Python multiprocessing.Array创建的共享内存无法删除的问题
- 关于FCKeditor for java上传图片中文名乱码问题
- 关于在DELPHI中FOR循环语句的使用问题
- C++Builder中关于INDY库的使用 以及一些问题的解决(E2238 Multiple declaration for 'fd_set')
- 关于realarm S5P4418的u-boot显示内存大小问题解决方法
- 关于自动布局的问题 for storyboard问题 and aotulayout问题
- OK6410-A编译u-boot时遇到的问题及解决
- 关于iview表单验证select标签在使用v-for的时候验证一直不通过的问题
- 今天又学习了,关于windows和Linux双系统删除Linux遇到的问题。
- 关于mysql添加用户和删除用户遇到的一些问题
- 关于NSDateFormatter的线程安全问题
- 分享困扰了我很久的问题关于boot.ini的修改
- 【基于EDK的嵌入式系统】 关于Xilinx EDK添加自定义IP核到PLB总线后linux无法boot的问题
- 关于ubuntu无法开机问题,显示安装错误 ubuntu install problem the configuration defaults for gnome power manager have
- 关于删除字符串中重复字符问题?解析
- 关于spring boot 中App类位置不同导致出错的问题的解决方法
- Qt中关于undefined reference to `vtable for classname`的问题