📄 kb_read.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 + -