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

📄 keyboard_pc.c

📁 lgui_0.3.0.rar
💻 C
字号:
/*	Copyright (C) 2004-2005 Li Yudong*//*** This program is free software; you can redistribute it and/or modify** it under the terms of the GNU General Public License as published by** the Free Software Foundation; either version 2 of the License, or** (at your option) any later version.**** This program is distributed in the hope that it will be useful,** but WITHOUT ANY WARRANTY; without even the implied warranty of** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the** GNU General Public License for more details.**** You should have received a copy of the GNU General Public License** along with this program; if not, write to the Free Software** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA*/#include "../include/common.h"#include "../include/keyboard_pro.h"#include "../include/keyboard_ial.h"#include "../include/keyboard_pc.h"static int kb_fd;//a table map keyboard return string to a scancodetypedef struct tagKBMapTable{	char buffer[10];	char shift[10];	int iScanCode;} KBMapTable;typedef struct KBMapTable* PKBMapTable;KBMapTable kbMapTable[NR_KEYNUM];static voidInitKBMapTable();static intGetScanCode(	char* buffer, 	int iLen);KBDEVICE kbdev_PC = {        PCKB_Open,        PCKB_Close,        PCKB_Read};int PCKB_Open(void){	struct termios old_flags,new_flags;		kb_fd =fileno(stdin);		if ( kb_fd<0 ){		printf("Open device kdc error!!!\n\n\n");		return -1;	}		tcgetattr(kb_fd,&old_flags);	new_flags = old_flags;	new_flags.c_lflag &= ~(ICANON | ECHO | ECHOE );	tcsetattr(kb_fd,TCSAFLUSH, &new_flags);		InitKBMapTable();	return 0;	}void PCKB_Close(void){	close(kb_fd);}int PCKB_Read(	BYTE* btScanCode,	BYTE* btPressed){	char buffer[10];	int readByte;	memset(buffer, 0, 10);	readByte = read(kb_fd,buffer,10);	//printf("%s\n",buffer+1);	*btScanCode = (BYTE)GetScanCode(buffer, readByte);	*btPressed = 1;	return 1;}static intGetScanCode(	char* buffer, 	int iLen){	int i;	for(i=0; i<NR_KEYNUM; i++){		if(strncmp(kbMapTable[i].buffer, buffer, iLen)==0)			return kbMapTable[i].iScanCode;		if(strncmp(kbMapTable[i].shift, buffer, iLen)==0)			return kbMapTable[i].iScanCode;	}	return -1;	}	static voidInitKBMapTable(){	memset(&kbMapTable,0,sizeof(KBMapTable)*NR_KEYNUM);		kbMapTable[0].buffer[0] = 27;	kbMapTable[0].shift[0] = 27;	kbMapTable[0].iScanCode = SCANCODE_ESCAPE;		kbMapTable[1].buffer[0] = 96;	kbMapTable[1].shift[0] = 126;	kbMapTable[1].iScanCode = SCANCODE_WAVE;		kbMapTable[2].buffer[0] = 49;	kbMapTable[2].shift[0] = 33;		kbMapTable[2].iScanCode = SCANCODE_1;		kbMapTable[3].buffer[0] = 50;	kbMapTable[3].shift[0] = 64;	kbMapTable[3].iScanCode = SCANCODE_2;		kbMapTable[4].buffer[0] = 51;	kbMapTable[4].shift[0] = 35;	kbMapTable[4].iScanCode = SCANCODE_3;		kbMapTable[5].buffer[0] = 52;	kbMapTable[5].shift[0] = 36;	kbMapTable[5].iScanCode = SCANCODE_4;		kbMapTable[6].buffer[0] = 53;	kbMapTable[6].shift[0] = 37;	kbMapTable[6].iScanCode = SCANCODE_5;		kbMapTable[7].buffer[0] = 54;	kbMapTable[7].shift[0] = 94;	kbMapTable[7].iScanCode = SCANCODE_6;		kbMapTable[8].buffer[0] = 55;	kbMapTable[8].shift[0] = 38;	kbMapTable[8].iScanCode = SCANCODE_7;		kbMapTable[9].buffer[0] = 56;	kbMapTable[9].shift[0] = 42;	kbMapTable[9].iScanCode = SCANCODE_8;		kbMapTable[10].buffer[0] = 57;	kbMapTable[10].shift[0] = 40;	kbMapTable[10].iScanCode = SCANCODE_9;		kbMapTable[11].buffer[0] = 48;	kbMapTable[11].shift[0] = 41;	kbMapTable[11].iScanCode = SCANCODE_0;		kbMapTable[12].buffer[0] = 45;	kbMapTable[12].shift[0] = 95;	kbMapTable[12].iScanCode = SCANCODE_MINUS;		kbMapTable[13].buffer[0] = 61;	kbMapTable[13].shift[0] = 43;	kbMapTable[13].iScanCode = SCANCODE_EQUAL;		kbMapTable[14].buffer[0] = 127;	kbMapTable[14].shift[0] = 127;	kbMapTable[14].iScanCode = SCANCODE_BACKSPACE;			kbMapTable[15].buffer[0] = 9;	kbMapTable[15].shift[0] = 9;	kbMapTable[15].iScanCode = SCANCODE_TAB;		kbMapTable[16].buffer[0] = 113;	kbMapTable[16].shift[0] = 81;	kbMapTable[16].iScanCode = SCANCODE_Q;		kbMapTable[17].buffer[0] = 119;;	kbMapTable[17].shift[0] = 87;	kbMapTable[17].iScanCode = SCANCODE_W;		kbMapTable[18].buffer[0] = 101;	kbMapTable[18].shift[0] = 69;	kbMapTable[18].iScanCode = SCANCODE_E;		kbMapTable[19].buffer[0] = 114;	kbMapTable[19].shift[0] = 82;	kbMapTable[19].iScanCode = SCANCODE_R;		kbMapTable[20].buffer[0] = 116;	kbMapTable[20].shift[0] = 84;	kbMapTable[20].iScanCode = SCANCODE_T;		kbMapTable[21].buffer[0] = 121;	kbMapTable[21].shift[0] = 89;	kbMapTable[21].iScanCode = SCANCODE_Y;		kbMapTable[22].buffer[0] = 117;	kbMapTable[22].shift[0] = 85;	kbMapTable[22].iScanCode = SCANCODE_U;		kbMapTable[23].buffer[0] = 105;	kbMapTable[23].shift[0] = 73;	kbMapTable[23].iScanCode = SCANCODE_I;		kbMapTable[24].buffer[0] = 111;	kbMapTable[24].shift[0] = 79;	kbMapTable[24].iScanCode = SCANCODE_O;		kbMapTable[25].buffer[0] = 112;	kbMapTable[25].shift[0] = 80;	kbMapTable[25].iScanCode = SCANCODE_P;		kbMapTable[26].buffer[0] = 91;	kbMapTable[26].shift[0] = 123;	kbMapTable[26].iScanCode = SCANCODE_BRACKET_LEFT;		kbMapTable[27].buffer[0] = 93;	kbMapTable[27].shift[0] = 125;	kbMapTable[27].iScanCode = SCANCODE_BRACKET_RIGHT;		kbMapTable[28].buffer[0] = 92;	kbMapTable[28].shift[0] = 124;	kbMapTable[28].iScanCode = SCANCODE_BACKSLASH;			//	kbMapTable[29].buffer[0] = 27;//	kbMapTable[29].shift[0] = 27;//	kbMapTable[29].iScanCode = SCANCODE_CAPSLOCK;		kbMapTable[30].buffer[0] = 97;	kbMapTable[30].shift[0] = 65;	kbMapTable[30].iScanCode = SCANCODE_A;		kbMapTable[31].buffer[0] = 115;	kbMapTable[31].shift[0] = 83;	kbMapTable[31].iScanCode = SCANCODE_S;		kbMapTable[32].buffer[0] = 100;	kbMapTable[32].shift[0] = 68;	kbMapTable[32].iScanCode = SCANCODE_D;		kbMapTable[33].buffer[0] = 102;	kbMapTable[33].buffer[0] = 70;	kbMapTable[33].iScanCode = SCANCODE_F;		kbMapTable[34].buffer[0] = 103;	kbMapTable[34].shift[0] = 71;	kbMapTable[34].iScanCode = SCANCODE_G;		kbMapTable[35].buffer[0] = 104;	kbMapTable[35].shift[0] = 72;	kbMapTable[35].iScanCode = SCANCODE_H;		kbMapTable[36].buffer[0] = 106;	kbMapTable[36].shift[0] = 74;	kbMapTable[36].iScanCode = SCANCODE_J;		kbMapTable[37].buffer[0] = 107;	kbMapTable[37].shift[0] = 75;	kbMapTable[37].iScanCode = SCANCODE_K;		kbMapTable[38].buffer[0] = 108;	kbMapTable[38].shift[0] = 76;	kbMapTable[38].iScanCode = SCANCODE_L;		kbMapTable[39].buffer[0] = 59;	kbMapTable[39].shift[0] = 58;	kbMapTable[39].iScanCode = SCANCODE_SEMICOLON;		kbMapTable[40].buffer[0] = 39;	kbMapTable[40].shift[0] = 34;	kbMapTable[40].iScanCode = SCANCODE_APOSTROPHE;		kbMapTable[41].buffer[0] = 10;	kbMapTable[41].shift[0] = 10;	kbMapTable[41].iScanCode = SCANCODE_ENTER;				//	kbMapTable[42].buffer[0] = 27;//	kbMapTable[42].shift[0] = 27;//	kbMapTable[42].iScanCode = SCANCODE_LEFTSHIFT;		kbMapTable[43].buffer[0] = 122;	kbMapTable[43].shift[0] = 90;	kbMapTable[43].iScanCode = SCANCODE_Z;		kbMapTable[44].buffer[0] = 120;	kbMapTable[44].shift[0] = 88;	kbMapTable[44].iScanCode = SCANCODE_X;		kbMapTable[45].buffer[0] = 99;	kbMapTable[45].shift[0] = 67;	kbMapTable[45].iScanCode = SCANCODE_C;		kbMapTable[46].buffer[0] = 118;	kbMapTable[46].shift[0] = 86;	kbMapTable[46].iScanCode = SCANCODE_V;		kbMapTable[47].buffer[0] = 98;	kbMapTable[47].shift[0] = 66;	kbMapTable[47].iScanCode = SCANCODE_B;		kbMapTable[48].buffer[0] = 110;	kbMapTable[48].shift[0] = 78;	kbMapTable[48].iScanCode = SCANCODE_N;		kbMapTable[49].buffer[0] = 109;	kbMapTable[49].shift[0] = 77;	kbMapTable[49].iScanCode = SCANCODE_M;		kbMapTable[50].buffer[0] = 44;	kbMapTable[50].shift[0] = 60;	kbMapTable[50].iScanCode = SCANCODE_COMMA;		kbMapTable[51].buffer[0] = 46;	kbMapTable[51].shift[0] = 62;	kbMapTable[51].iScanCode = SCANCODE_PERIOD;		kbMapTable[52].buffer[0] = 47;	kbMapTable[52].shift[0] = 63;	kbMapTable[52].iScanCode = SCANCODE_SLASH;	//	kbMapTable[53].buffer[0] = 27;//	kbMapTable[53].shift[0] = 27;//	kbMapTable[53].iScanCode = SCANCODE_RIGHTSHIFT;		//	kbMapTable[54].buffer[0] = 27;//	kbMapTable[54].shift[0] = 27;//	kbMapTable[54].iScanCode = SCANCODE_LEFTCONTROL;	//	kbMapTable[55].buffer[0] = 27;//	kbMapTable[55].shift[0] = 27;//	kbMapTable[55].iScanCode = SCANCODE_LEFTALT;		kbMapTable[56].buffer[0] = 32;	kbMapTable[56].shift[0] = 32;	kbMapTable[56].iScanCode = SCANCODE_SPACE;	//	kbMapTable[57].buffer[0] = 27;//	kbMapTable[57].shift[0] = 27;//	kbMapTable[57].iScanCode = SCANCODE_RIGHTALT;	//	kbMapTable[58].buffer[0] = 27;//	kbMapTable[58].shift[0] = 27;//	kbMapTable[58].iScanCode = SCANCODE_RIGHTCONTROL;				kbMapTable[59].buffer[0] = 27;	strcpy(&(kbMapTable[59].buffer[1]),"[1~");	kbMapTable[59].iScanCode = SCANCODE_HOME;		kbMapTable[60].buffer[0] = 27;	strcpy(&(kbMapTable[60].buffer[1]),"[4~");	kbMapTable[60].iScanCode = SCANCODE_END;		kbMapTable[61].buffer[0] = 27;	strcpy(&(kbMapTable[61].buffer[1]),"[2~");	kbMapTable[61].iScanCode = SCANCODE_INS;		kbMapTable[62].buffer[0] = 27;	strcpy(&(kbMapTable[62].buffer[1]),"[3~");	kbMapTable[62].iScanCode = SCANCODE_DEL;		kbMapTable[63].buffer[0] = 27;	strcpy(&(kbMapTable[63].buffer[1]),"[5~");	kbMapTable[63].iScanCode = SCANCODE_PAGEUP;		kbMapTable[64].buffer[0] = 27;	strcpy(&(kbMapTable[64].buffer[1]),"[6~");	kbMapTable[64].iScanCode = SCANCODE_PAGEDOWN;		kbMapTable[65].buffer[0] = 27;	strcpy(&(kbMapTable[65].buffer[1]),"[D");	kbMapTable[65].iScanCode = SCANCODE_LEFT;		kbMapTable[66].buffer[0] = 27;	strcpy(&(kbMapTable[66].buffer[1]),"[C");	kbMapTable[66].iScanCode = SCANCODE_RIGHT;		kbMapTable[67].buffer[0] = 27;	strcpy(&(kbMapTable[67].buffer[1]),"[A");		kbMapTable[67].iScanCode = SCANCODE_UP;		kbMapTable[68].buffer[0] = 27;	strcpy(&(kbMapTable[68].buffer[1]),"[B");		kbMapTable[68].iScanCode = SCANCODE_DOWN;			}

⌨️ 快捷键说明

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