在Unix/Linux下,并没有提供int kbhit(void)这个函数。在linux下开发控制台程序时,需要自己编写kbhit()实现的程序了。下面是kbhit在Unix/Linux下的一个实现。用到了一种终端 *** 作库termios。下面是头文件kbhit.h:QUOTE:#ifndef KBHITh#define KBHIThvoid init_keyboard(void)void close_keyboard(void)int kbhit(void)int readch(void)#endif下面式源程序kbhit.c:QUOTE:#include "kbhit.h"#include <stdio.h>#include <termios.h>static struct termios initial_settings, new_settingsstatic int peek_character = -1void init_keyboard(){tcgetattr(0,&initial_settings)new_settings = initial_settingsnew_settings.c_lflag &= ~ICANONnew_settings.c_lflag &= ~ECHOnew_settings.c_lflag &= ~ISIGnew_settings.c_cc[VMIN] = 1new_settings.c_cc[VTIME] = 0tcsetattr(0, TCSANOW, &new_settings)}void close_keyboard(){tcsetattr(0, TCSANOW, &initial_settings)}int kbhit(){unsigned char chint nreadif (peek_character != -1) return 1new_settings.c_cc[VMIN]=0tcsetattr(0, TCSANOW, &new_settings)nread = read(0,&ch,1)new_settings.c_cc[VMIN]=1tcsetattr(0, TCSANOW, &new_settings)if(nread == 1) {peek_character = chreturn 1}return 0}int readch(){char chif(peek_character != -1) {ch = peek_characterpeek_character = -1return ch}read(0,&ch,1)return ch} 故障现象:
USB键盘无法使用,插入键盘后电脑检测不到,也不出现叹号设备,替换电脑测试USB盘正常。
原因分析:
仔细观察人体学输入设备中有两个设备,通过硬件id确认其中USB 输入设备是鼠标,上面的英文设备实际上是键盘。也就是windows系统错误的把键盘识别为了别的设备。
解决方案:
右键选择更新驱动程序--浏览计算机以查找驱动程序软件--从计算机的设备驱动程序列表中选择--选择USB输入设备--下一步问题解决。
1. 右键选择HID-compliant device---更新驱动程序
2. 浏览计算机以查找驱动程序软件
3. 从计算机的设备驱动程序列表中选择
4. 选择USB输入设备
5. 下一步
最终设备管理器重新检测到键盘。
评论列表(0条)