亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ps2kbd.c

?? u-boot1.3.0的原碼,從配了網絡驅動和FLASH的驅動,并該用ESC竟如
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * (C) Copyright 2002 * John W. Linville, linville@tuxdriver.com * * Modified from code for support of MIP405 and PIP405 boards.  Previous * copyright follows. * * (C) Copyright 2001 * Denis Peter, MPL AG Switzerland, d.peter@mpl.ch * * See file CREDITS for list of people who contributed to this * project. * * 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 * * * Source partly derived from: * linux/drivers/char/pc_keyb.c * * */#include <common.h>#include <asm/processor.h>#include <devices.h>#include "ps2kbd.h"unsigned char kbd_read_status(void);unsigned char kbd_read_input(void);void kbd_send_data(unsigned char data);void i8259_mask_irq(unsigned int irq);void i8259_unmask_irq(unsigned int irq);/* used only by send_data - set by keyboard_interrupt */#undef KBG_DEBUG#ifdef KBG_DEBUG#define	PRINTF(fmt,args...)	printf (fmt ,##args)#else#define PRINTF(fmt,args...)#endif#define KBD_STAT_KOBF		0x01#define KBD_STAT_IBF		0x02#define KBD_STAT_SYS		0x04#define KBD_STAT_CD			0x08#define KBD_STAT_LOCK		0x10#define KBD_STAT_MOBF		0x20#define KBD_STAT_TI_OUT	0x40#define KBD_STAT_PARERR	0x80#define KBD_INIT_TIMEOUT 2000		/* Timeout in ms for initializing the keyboard */#define KBC_TIMEOUT 250			/* Timeout in ms for sending to keyboard controller */#define KBD_TIMEOUT 2000		/* Timeout in ms for keyboard command acknowledge *//* *	Keyboard Controller Commands */#define KBD_CCMD_READ_MODE			0x20	/* Read mode bits */#define KBD_CCMD_WRITE_MODE			0x60	/* Write mode bits */#define KBD_CCMD_GET_VERSION		0xA1	/* Get controller version */#define KBD_CCMD_MOUSE_DISABLE	0xA7	/* Disable mouse interface */#define KBD_CCMD_MOUSE_ENABLE		0xA8	/* Enable mouse interface */#define KBD_CCMD_TEST_MOUSE			0xA9	/* Mouse interface test */#define KBD_CCMD_SELF_TEST			0xAA	/* Controller self test */#define KBD_CCMD_KBD_TEST				0xAB	/* Keyboard interface test */#define KBD_CCMD_KBD_DISABLE		0xAD	/* Keyboard interface disable */#define KBD_CCMD_KBD_ENABLE			0xAE	/* Keyboard interface enable */#define KBD_CCMD_WRITE_AUX_OBUF	0xD3    /* Write to output buffer as if					   initiated by the auxiliary device */#define KBD_CCMD_WRITE_MOUSE		0xD4	/* Write the following byte to the mouse *//* *	Keyboard Commands */#define KBD_CMD_SET_LEDS				0xED	/* Set keyboard leds */#define KBD_CMD_SET_RATE				0xF3	/* Set typematic rate */#define KBD_CMD_ENABLE					0xF4	/* Enable scanning */#define KBD_CMD_DISABLE					0xF5	/* Disable scanning */#define KBD_CMD_RESET						0xFF	/* Reset *//* *	Keyboard Replies */#define KBD_REPLY_POR						0xAA	/* Power on reset */#define KBD_REPLY_ACK						0xFA	/* Command ACK */#define KBD_REPLY_RESEND				0xFE	/* Command NACK, send the cmd again *//* *	Status Register Bits */#define KBD_STAT_OBF 						0x01	/* Keyboard output buffer full */#define KBD_STAT_IBF 						0x02	/* Keyboard input buffer full */#define KBD_STAT_SELFTEST				0x04	/* Self test successful */#define KBD_STAT_CMD						0x08	/* Last write was a command write (0=data) */#define KBD_STAT_UNLOCKED				0x10	/* Zero if keyboard locked */#define KBD_STAT_MOUSE_OBF			0x20	/* Mouse output buffer full */#define KBD_STAT_GTO 						0x40	/* General receive/xmit timeout */#define KBD_STAT_PERR 					0x80	/* Parity error */#define AUX_STAT_OBF (KBD_STAT_OBF | KBD_STAT_MOUSE_OBF)/* *	Controller Mode Register Bits */#define KBD_MODE_KBD_INT				0x01	/* Keyboard data generate IRQ1 */#define KBD_MODE_MOUSE_INT			0x02	/* Mouse data generate IRQ12 */#define KBD_MODE_SYS 						0x04	/* The system flag (?) */#define KBD_MODE_NO_KEYLOCK			0x08	/* The keylock doesn't affect the keyboard if set */#define KBD_MODE_DISABLE_KBD		0x10	/* Disable keyboard interface */#define KBD_MODE_DISABLE_MOUSE	0x20	/* Disable mouse interface */#define KBD_MODE_KCC 						0x40	/* Scan code conversion to PC format */#define KBD_MODE_RFU						0x80#define KDB_DATA_PORT			0x60#define KDB_COMMAND_PORT	0x64#define 	LED_SCR		0x01	/* scroll lock led */#define 	LED_CAP		0x04	/* caps lock led */#define 	LED_NUM		0x02	/* num lock led */#define 	KBD_BUFFER_LEN 0x20  /* size of the keyboardbuffer */static volatile char kbd_buffer[KBD_BUFFER_LEN];static volatile int in_pointer = 0;static volatile int out_pointer = 0;static unsigned char num_lock = 0;static unsigned char caps_lock = 0;static unsigned char scroll_lock = 0;static unsigned char shift = 0;static unsigned char ctrl = 0;static unsigned char alt = 0;static unsigned char e0 = 0;static unsigned char leds = 0;#define DEVNAME "ps2kbd"/* Simple translation table for the keys */static unsigned char kbd_plain_xlate[] = {	0xff,0x1b, '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=','\b','\t',	/* 0x00 - 0x0f */	 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']','\r',0xff, 'a', 's',	/* 0x10 - 0x1f */	 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';','\'', '`',0xff,'\\', 'z', 'x', 'c', 'v',	/* 0x20 - 0x2f */	 'b', 'n', 'm', ',', '.', '/',0xff,0xff,0xff, ' ',0xff,0xff,0xff,0xff,0xff,0xff,	/* 0x30 - 0x3f */	0xff,0xff,0xff,0xff,0xff,0xff,0xff, '7', '8', '9', '-', '4', '5', '6', '+', '1',	/* 0x40 - 0x4f */	 '2', '3', '0', '.',0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,  /* 0x50 - 0x5F */	'\r',0xff,0xff	};static unsigned char kbd_shift_xlate[] = {	0xff,0x1b, '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+','\b','\t',	/* 0x00 - 0x0f */	 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', '{', '}','\r',0xff, 'A', 'S',	/* 0x10 - 0x1f */	 'D', 'F', 'G', 'H', 'J', 'K', 'L', ':', '"', '~',0xff, '|', 'Z', 'X', 'C', 'V',	/* 0x20 - 0x2f */	 'B', 'N', 'M', '<', '>', '?',0xff,0xff,0xff, ' ',0xff,0xff,0xff,0xff,0xff,0xff,	/* 0x30 - 0x3f */	0xff,0xff,0xff,0xff,0xff,0xff,0xff, '7', '8', '9', '-', '4', '5', '6', '+', '1',	/* 0x40 - 0x4f */	 '2', '3', '0', '.',0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,  /* 0x50 - 0x5F */	'\r',0xff,0xff	};static unsigned char kbd_ctrl_xlate[] = {	0xff,0x1b, '1',0x00, '3', '4', '5',0x1E, '7', '8', '9', '0',0x1F, '=','\b','\t',	/* 0x00 - 0x0f */	0x11,0x17,0x05,0x12,0x14,0x18,0x15,0x09,0x0f,0x10,0x1b,0x1d,'\n',0xff,0x01,0x13,	/* 0x10 - 0x1f */	0x04,0x06,0x08,0x09,0x0a,0x0b,0x0c, ';','\'', '~',0x00,0x1c,0x1a,0x18,0x03,0x16,	/* 0x20 - 0x2f */	0x02,0x0e,0x0d, '<', '>', '?',0xff,0xff,0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,	/* 0x30 - 0x3f */	0xff,0xff,0xff,0xff,0xff,0xff,0xff, '7', '8', '9', '-', '4', '5', '6', '+', '1',	/* 0x40 - 0x4f */	 '2', '3', '0', '.',0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,  /* 0x50 - 0x5F */	'\r',0xff,0xff	};/****************************************************************** * Init ******************************************************************/int isa_kbd_init(void){	char* result;	result=kbd_initialize();	if (result != NULL)	{	    result = kbd_initialize();	}	if(result==NULL) {		printf("AT Keyboard initialized\n");		irq_install_handler(KBD_INTERRUPT, (interrupt_handler_t *)kbd_interrupt, NULL);		return (1);	}	else {		printf("%s\n",result);		return (-1);	}}#ifdef CFG_CONSOLE_OVERWRITE_ROUTINEextern int overwrite_console (void);#elseint overwrite_console (void){	return (0);}#endifint drv_isa_kbd_init (void){	int error;  	device_t kbddev ;	char *stdinname  = getenv ("stdin");	if(isa_kbd_init()==-1)		return -1;  	memset (&kbddev, 0, sizeof(kbddev));  	strcpy(kbddev.name, DEVNAME);  	kbddev.flags =  DEV_FLAGS_INPUT | DEV_FLAGS_SYSTEM;  	kbddev.putc = NULL ;	kbddev.puts = NULL ;	kbddev.getc = kbd_getc ;	kbddev.tstc = kbd_testc ; 	error = device_register (&kbddev);	if(error==0) {		/* check if this is the standard input device */		if(strcmp(stdinname,DEVNAME)==0) {			/* reassign the console */			if(overwrite_console()) {				return 1;			}			error=console_assign(stdin,DEVNAME);			if(error==0)				return 1;			else				return error;		}		return 1;	}	return error;}/****************************************************************** * Queue handling ******************************************************************//* puts character in the queue and sets up the in and out pointer */void kbd_put_queue(char data){	if((in_pointer+1)==KBD_BUFFER_LEN) {		if(out_pointer==0) {			return; /* buffer full */		} else{			in_pointer=0;		}	} else {		if((in_pointer+1)==out_pointer)			return; /* buffer full */		in_pointer++;	}	kbd_buffer[in_pointer]=data;	return;}/* test if a character is in the queue */int kbd_testc(void){	if(in_pointer==out_pointer)		return(0); /* no data */	else		return(1);}/* gets the character from the queue */int kbd_getc(void){	char c;	while(in_pointer==out_pointer);	if((out_pointer+1)==KBD_BUFFER_LEN)		out_pointer=0;	else		out_pointer++;	c=kbd_buffer[out_pointer];	return (int)c;}/* set LEDs */void kbd_set_leds(void){	if(caps_lock==0)		leds&=~LED_CAP; /* switch caps_lock off */	else		leds|=LED_CAP; /* switch on LED */	if(num_lock==0)		leds&=~LED_NUM; /* switch LED off */	else		leds|=LED_NUM;  /* switch on LED */	if(scroll_lock==0)		leds&=~LED_SCR; /* switch LED off */	else		leds|=LED_SCR; /* switch on LED */	kbd_send_data(KBD_CMD_SET_LEDS);	kbd_send_data(leds);}void handle_keyboard_event(unsigned char scancode){	unsigned char keycode;	/*  Convert scancode to keycode */	PRINTF("scancode %x\n",scancode);	if(scancode==0xe0) {		e0=1; /* special charakters */		return;	}	if(e0==1) {		e0=0; /* delete flag */		if(!(	((scancode&0x7F)==0x38)|| /* the right ctrl key */			((scancode&0x7F)==0x1D)|| /* the right alt key */			((scancode&0x7F)==0x35)||	/* the right '/' key */			((scancode&0x7F)==0x1C)||  /* the right enter key */			((scancode)==0x48)|| /* arrow up */			((scancode)==0x50)|| /* arrow down */			((scancode)==0x4b)|| /* arrow left */			((scancode)==0x4d)))  /* arrow right */			/* we swallow unknown e0 codes */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产乱妇无码大片在线观看| 国产成人在线视频播放| 亚洲第一激情av| 久久99国内精品| 成人综合婷婷国产精品久久蜜臀| 色欧美88888久久久久久影院| 欧美精品久久一区| 国产性做久久久久久| 亚洲一二三四在线| 国产精品一区二区不卡| 在线看国产一区二区| 久久嫩草精品久久久精品| 亚洲精品视频观看| 精品一区二区在线免费观看| 日本国产一区二区| 欧美本精品男人aⅴ天堂| 亚洲成人激情自拍| 国产在线一区二区| 在线观看av一区| 国产日韩欧美高清在线| 日韩国产精品久久| 色综合天天综合狠狠| 久久综合久久久久88| 亚洲综合色自拍一区| 顶级嫩模精品视频在线看| 欧美日韩精品一区视频| 中文字幕一区日韩精品欧美| 精品亚洲aⅴ乱码一区二区三区| 欧美性猛交一区二区三区精品| 国产欧美日韩一区二区三区在线观看| 一区二区在线免费观看| 国产成人激情av| 宅男噜噜噜66一区二区66| 一区二区免费看| 成人黄色在线看| 国产欧美日韩精品a在线观看| 精品综合免费视频观看| 欧美偷拍一区二区| 亚洲人成网站影音先锋播放| 成人教育av在线| 国产午夜精品一区二区| 国产丶欧美丶日本不卡视频| 精品国产3级a| 精品一区二区影视| 精品99一区二区| 精品一区二区三区影院在线午夜| 欧美精品一二三区| 日韩精品一级中文字幕精品视频免费观看| 91麻豆自制传媒国产之光| 日韩一区欧美一区| 97精品国产97久久久久久久久久久久 | 成人在线视频一区| 欧美国产欧美亚州国产日韩mv天天看完整 | 激情久久久久久久久久久久久久久久| 欧美美女黄视频| 婷婷六月综合亚洲| 欧美精品v国产精品v日韩精品| 亚洲成精国产精品女| 欧美绝品在线观看成人午夜影视| 亚洲一区在线播放| 4438x成人网最大色成网站| 久久精品国产一区二区| 精品国产乱码久久久久久久久| 日产国产欧美视频一区精品| 精品国产一区a| 懂色av噜噜一区二区三区av| 亚洲视频你懂的| 欧美日本一道本在线视频| 午夜一区二区三区在线观看| 91精品国产高清一区二区三区蜜臀 | 欧美色爱综合网| 日本不卡视频一二三区| 久久久久久久精| 99久久精品免费看国产免费软件| 亚洲一区二区三区四区中文字幕| 欧美精品一级二级| 蜜臀91精品一区二区三区| 久久精品在线免费观看| 91一区一区三区| 婷婷开心久久网| 国产精品你懂的| 精品国产电影一区二区| 在线日韩av片| 岛国一区二区三区| 日韩在线卡一卡二| 亚洲一区二区欧美日韩| 中文字幕一区二区三区不卡 | 久久久午夜电影| 欧美日韩高清一区二区| 99久久免费国产| 东方欧美亚洲色图在线| 国内精品国产成人| 日本三级韩国三级欧美三级| 亚洲欧美国产三级| 国产精品素人视频| 久久婷婷综合激情| 日韩三级av在线播放| 在线观看欧美黄色| 91在线视频免费观看| 国产黄人亚洲片| 九九久久精品视频| 麻豆国产91在线播放| 亚洲国产欧美一区二区三区丁香婷| 国产精品欧美一区二区三区| 久久视频一区二区| 欧美大黄免费观看| 91精品国产91久久久久久最新毛片| 91免费版在线| 色婷婷久久久亚洲一区二区三区| jlzzjlzz国产精品久久| 成人一区二区三区视频| 国产精品综合av一区二区国产馆| 美日韩一级片在线观看| 日韩成人精品在线观看| 喷白浆一区二区| 日本一道高清亚洲日美韩| 午夜精品久久久久久久| 亚洲成人精品在线观看| 丝瓜av网站精品一区二区| 性久久久久久久久久久久| 日韩精品亚洲一区| 久久国产精品99久久久久久老狼| 裸体健美xxxx欧美裸体表演| 久久国产尿小便嘘嘘| 国产风韵犹存在线视精品| 国产91丝袜在线播放九色| av午夜一区麻豆| 色婷婷亚洲一区二区三区| 欧美三级日韩三级国产三级| 欧美精品日韩精品| 日韩午夜精品视频| 久久影院电视剧免费观看| 中文字幕av一区二区三区| 中文字幕日本不卡| 亚洲一区av在线| 韩国毛片一区二区三区| 国产不卡视频在线播放| 色狠狠色噜噜噜综合网| 欧美喷潮久久久xxxxx| 精品国产乱码久久久久久浪潮| 欧美国产在线观看| 五月婷婷色综合| 国产精品一级片| 欧美亚洲免费在线一区| 精品美女在线播放| 中文字幕一区二区三区色视频| 午夜精品福利久久久| 国产麻豆精品一区二区| 一本一道久久a久久精品综合蜜臀| 在线电影欧美成精品| 欧美精品一区视频| 亚洲图片一区二区| 国产福利一区二区三区| 欧美日韩国产在线观看| 国产色一区二区| 亚瑟在线精品视频| 成人综合婷婷国产精品久久| 欧美卡1卡2卡| 综合久久综合久久| 精品无人码麻豆乱码1区2区| 在线亚洲一区观看| 久久精品一区二区三区不卡| 亚洲国产日韩精品| 暴力调教一区二区三区| 制服丝袜一区二区三区| 椎名由奈av一区二区三区| 久久精品久久99精品久久| 在线观看日韩高清av| 国产精品毛片无遮挡高清| 麻豆成人av在线| 欧美日韩免费一区二区三区| 国产精品高潮呻吟| 国产精品一区免费在线观看| 欧美精品成人一区二区三区四区| 亚洲私人黄色宅男| 高清不卡在线观看av| 欧美va亚洲va| 麻豆精品蜜桃视频网站| 欧美三片在线视频观看| 成人免费在线视频| 国产精品一区2区| 日韩免费电影网站| 天堂在线亚洲视频| 欧美日韩在线精品一区二区三区激情 | 一区二区中文视频| 成人午夜精品一区二区三区| 久久综合久久久久88| 久久精品国内一区二区三区| 在线观看av一区二区| 中文字幕日本不卡| 91在线视频官网| 1000部国产精品成人观看| 国产a区久久久| 国产日韩欧美综合一区| 国产精一区二区三区| 久久午夜老司机| 高清国产一区二区| 日韩成人午夜电影| 欧美放荡的少妇| 国产传媒欧美日韩成人|