⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kb_read.c

📁 ARM9200+嵌入式linux下键盘驱动
💻 C
字号:
#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <fcntl.h>#include <unistd.h>#include <errno.h>#include <pthread.h>#include "kb_read.h"#define KEYBOARD "/dev/keyboard/0raw"int fd_kb;/**********************************************************/int kb_open(void){	fd_kb = open(KEYBOARD, O_RDONLY ); //| O_NONBLOCK);	if (fd_kb < 0) {		printf("%s - Can't open keyboard!\n", __FUNCTION__);		return -1;	}	return 0;}/**********************************************************/int kb_close(void){	close(fd_kb);	return 0;}/**********************************************************/static char kb_map(char scancode){	int i,j;	int key_count=16;	char keymap[16]={		'1','2','3','4',		'5','6','7','8',		'9','0','A','B',		'C','D','E','F'	};	char scode[16]={		4,5,6,7,		0x14,0x15,0x16,0x17,		0x24,0x25,0x26,0x27,		0x34,0x35,0x36,0x37	};	for(i=0; i<key_count; i++){		if(scancode==scode[i]){			//printf("i=%d\n",i,keymap[i]);			return keymap[i];		}	}	return -1;}/**********************************************************/char kb_read(void){	int keydown=0,old_keydown;	char  key=0; 	char scancode;	int cc;		while(1){		cc = read(fd_kb, &scancode, 1);		if(cc <0){			printf("read keyboard fail!\n");			return -1;		}		if(scancode &0x80)keydown =1;		if(keydown==1){// 2: key up			key = scancode & 0x70 | (scancode & 0xf -1)>>1;			//printf("key=%x\n",key);			break;		}		//else printf("key up: %x\n",scancode);	}	return kb_map(key);}/**********************************************************/#define ENTER 'F'int kb_get_line(char *cmd){		int i=0;	while(1){		cmd[i]=kb_read();		if(cmd[i] == ENTER){			cmd[i]=0;			break;		}		printf("%c",cmd[i]);		fflush(stdout);		i++;	}	return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -