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

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

?? ps2kbd.c

?? uboot for at91rm9200dk
?? C
?? 第 1 頁 / 共 2 頁
字號:
			return;	}	/* special cntrl keys */	switch(scancode)	{	case 0x48:	    kbd_put_queue(27);	    kbd_put_queue(91);	    kbd_put_queue('A');	    return;	case 0x50:	    kbd_put_queue(27);	    kbd_put_queue(91);	    kbd_put_queue('B');	    return;	case 0x4b:	    kbd_put_queue(27);	    kbd_put_queue(91);	    kbd_put_queue('D');	    return;	case 0x4D:	    kbd_put_queue(27);	    kbd_put_queue(91);	    kbd_put_queue('C');	    return;	case 0x58: /* F12 key */	    if (ctrl == 1)	    {		extern int console_changed;		setenv("stdin", DEVNAME);		setenv("stdout", "vga");		console_changed = 1;	    }	    return;	case 0x2A:		case 0x36: /* shift pressed */			shift=1;			return; /* do nothing else */		case 0xAA:		case 0xB6: /* shift released */			shift=0;			return; /* do nothing else */		case 0x38: /* alt pressed */			alt=1;			return; /* do nothing else */		case 0xB8: /* alt released */			alt=0;			return; /* do nothing else */		case 0x1d: /* ctrl pressed */			ctrl=1;			return; /* do nothing else */		case 0x9d: /* ctrl released */			ctrl=0;			return; /* do nothing else */		case 0x46: /* scrollock pressed */			scroll_lock=~scroll_lock;			kbd_set_leds();			return; /* do nothing else */		case 0x3A: /* capslock pressed */			caps_lock=~caps_lock;			kbd_set_leds();			return;		case 0x45: /* numlock pressed */			num_lock=~num_lock;			kbd_set_leds();			return;		case 0xC6: /* scroll lock released */		case 0xC5: /* num lock released */		case 0xBA: /* caps lock released */			return; /* just swallow */	}	if((scancode&0x80)==0x80) /* key released */		return;	/* now, decide which table we need */	if(scancode > (sizeof(kbd_plain_xlate)/sizeof(kbd_plain_xlate[0]))) { /* scancode not in list */		PRINTF("unkown scancode %X\n",scancode);		return; /* swallow it */	}	/* setup plain code first */	keycode=kbd_plain_xlate[scancode];	if(caps_lock==1) { /* caps_lock is pressed, overwrite plain code */		if(scancode > (sizeof(kbd_shift_xlate)/sizeof(kbd_shift_xlate[0]))) { /* scancode not in list */			PRINTF("unkown caps-locked scancode %X\n",scancode);			return; /* swallow it */		}		keycode=kbd_shift_xlate[scancode];		if(keycode<'A') { /* we only want the alphas capital */			keycode=kbd_plain_xlate[scancode];		}	}	if(shift==1) { /* shift overwrites caps_lock */		if(scancode > (sizeof(kbd_shift_xlate)/sizeof(kbd_shift_xlate[0]))) { /* scancode not in list */			PRINTF("unkown shifted scancode %X\n",scancode);			return; /* swallow it */		}		keycode=kbd_shift_xlate[scancode];	}	if(ctrl==1) { /* ctrl overwrites caps_lock and shift */		if(scancode > (sizeof(kbd_ctrl_xlate)/sizeof(kbd_ctrl_xlate[0]))) { /* scancode not in list */			PRINTF("unkown ctrl scancode %X\n",scancode);			return; /* swallow it */		}		keycode=kbd_ctrl_xlate[scancode];	}	/* check if valid keycode */	if(keycode==0xff) {		PRINTF("unkown scancode %X\n",scancode);		return; /* swallow unknown codes */	}	kbd_put_queue(keycode);	PRINTF("%x\n",keycode);}/* * This reads the keyboard status port, and does the * appropriate action. * */unsigned char handle_kbd_event(void){	unsigned char status = kbd_read_status();	unsigned int work = 10000;	while ((--work > 0) && (status & KBD_STAT_OBF)) {		unsigned char scancode;		scancode = kbd_read_input();		/* Error bytes must be ignored to make the		   Synaptics touchpads compaq use work */		/* Ignore error bytes */		if (!(status & (KBD_STAT_GTO | KBD_STAT_PERR)))		{			if (status & KBD_STAT_MOUSE_OBF)				; /* not supported: handle_mouse_event(scancode); */			else				handle_keyboard_event(scancode);		}		status = kbd_read_status();	}	if (!work)		PRINTF("pc_keyb: controller jammed (0x%02X).\n", status);	return status;}/****************************************************************************** * Lowlevel Part of keyboard section */unsigned char kbd_read_status(void){	return(in8(CFG_ISA_IO_BASE_ADDRESS + KDB_COMMAND_PORT));}unsigned char kbd_read_input(void){	return(in8(CFG_ISA_IO_BASE_ADDRESS + KDB_DATA_PORT));}void kbd_write_command(unsigned char cmd){	out8(CFG_ISA_IO_BASE_ADDRESS + KDB_COMMAND_PORT,cmd);}void kbd_write_output(unsigned char data){	out8(CFG_ISA_IO_BASE_ADDRESS + KDB_DATA_PORT, data);}int kbd_read_data(void){	int val;	unsigned char status;	val=-1;	status = kbd_read_status();	if (status & KBD_STAT_OBF) {		val = kbd_read_input();		if (status & (KBD_STAT_GTO | KBD_STAT_PERR))			val = -2;	}	return val;}int kbd_wait_for_input(void){	unsigned long timeout;	int val;	timeout = KBD_TIMEOUT;	val=kbd_read_data();	while(val < 0)	{		if(timeout--==0)			return -1;		udelay(1000);		val=kbd_read_data();	}	return val;}int kb_wait(void){	unsigned long timeout = KBC_TIMEOUT * 10;	do {		unsigned char status = handle_kbd_event();		if (!(status & KBD_STAT_IBF))			return 0; /* ok */		udelay(1000);		timeout--;	} while (timeout);	return 1;}void kbd_write_command_w(int data){	if(kb_wait())		PRINTF("timeout in kbd_write_command_w\n");	kbd_write_command(data);}void kbd_write_output_w(int data){	if(kb_wait())		PRINTF("timeout in kbd_write_output_w\n");	kbd_write_output(data);}void kbd_send_data(unsigned char data){	unsigned char status;	i8259_mask_irq(KBD_INTERRUPT); /* disable interrupt */	kbd_write_output_w(data);	status = kbd_wait_for_input();	if (status == KBD_REPLY_ACK)		i8259_unmask_irq(KBD_INTERRUPT); /* enable interrupt */}char * kbd_initialize(void){	int status;	in_pointer = 0; /* delete in Buffer */	out_pointer = 0;	/*	 * Test the keyboard interface.	 * This seems to be the only way to get it going.	 * If the test is successful a x55 is placed in the input buffer.	 */	kbd_write_command_w(KBD_CCMD_SELF_TEST);	if (kbd_wait_for_input() != 0x55)		return "Kbd:   failed self test";	/*	 * Perform a keyboard interface test.  This causes the controller	 * to test the keyboard clock and data lines.  The results of the	 * test are placed in the input buffer.	 */	kbd_write_command_w(KBD_CCMD_KBD_TEST);	if (kbd_wait_for_input() != 0x00)		return "Kbd:   interface failed self test";	/*	 * Enable the keyboard by allowing the keyboard clock to run.	 */	kbd_write_command_w(KBD_CCMD_KBD_ENABLE);	status = kbd_wait_for_input();	/*	 * Reset keyboard. If the read times out	 * then the assumption is that no keyboard is	 * plugged into the machine.	 * This defaults the keyboard to scan-code set 2.	 *	 * Set up to try again if the keyboard asks for RESEND.	 */	do {		kbd_write_output_w(KBD_CMD_RESET);		status = kbd_wait_for_input();		if (status == KBD_REPLY_ACK)			break;		if (status != KBD_REPLY_RESEND)		{			PRINTF("status: %X\n",status);			return "Kbd:   reset failed, no ACK";		}	} while (1);	if (kbd_wait_for_input() != KBD_REPLY_POR)		return "Kbd:   reset failed, no POR";	/*	 * Set keyboard controller mode. During this, the keyboard should be	 * in the disabled state.	 *	 * Set up to try again if the keyboard asks for RESEND.	 */	do {		kbd_write_output_w(KBD_CMD_DISABLE);		status = kbd_wait_for_input();		if (status == KBD_REPLY_ACK)			break;		if (status != KBD_REPLY_RESEND)			return "Kbd:   disable keyboard: no ACK";	} while (1);	kbd_write_command_w(KBD_CCMD_WRITE_MODE);	kbd_write_output_w(KBD_MODE_KBD_INT			      | KBD_MODE_SYS			      | KBD_MODE_DISABLE_MOUSE			      | KBD_MODE_KCC);	/* ibm powerpc portables need this to use scan-code set 1 -- Cort */	kbd_write_command_w(KBD_CCMD_READ_MODE);	if (!(kbd_wait_for_input() & KBD_MODE_KCC)) {		/*		 * If the controller does not support conversion,		 * Set the keyboard to scan-code set 1.		 */		kbd_write_output_w(0xF0);		kbd_wait_for_input();		kbd_write_output_w(0x01);		kbd_wait_for_input();	}	kbd_write_output_w(KBD_CMD_ENABLE);	if (kbd_wait_for_input() != KBD_REPLY_ACK)		return "Kbd:   enable keyboard: no ACK";	/*	 * Finally, set the typematic rate to maximum.	 */	kbd_write_output_w(KBD_CMD_SET_RATE);	if (kbd_wait_for_input() != KBD_REPLY_ACK)		return "Kbd:   Set rate: no ACK";	kbd_write_output_w(0x00);	if (kbd_wait_for_input() != KBD_REPLY_ACK)		return "Kbd:   Set rate: no ACK";	return NULL;}void kbd_interrupt(void){	handle_kbd_event();}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美中文字幕一区二区三区亚洲| 国产不卡视频在线观看| 欧美日韩成人高清| 亚洲444eee在线观看| 欧美美女喷水视频| 奇米精品一区二区三区四区| 日韩精品一区二| 寂寞少妇一区二区三区| 国产午夜精品一区二区三区嫩草 | 亚洲自拍偷拍网站| 欧美三区免费完整视频在线观看| 五月天欧美精品| 337p日本欧洲亚洲大胆精品| 成人国产精品免费观看动漫| 亚洲欧美偷拍卡通变态| 色播五月激情综合网| 亚洲一二三四区| 日韩欧美卡一卡二| 懂色av一区二区在线播放| 亚洲欧美偷拍卡通变态| 91精品国产色综合久久ai换脸 | 国产精品麻豆网站| 在线影院国内精品| 日本不卡123| 国产精品久久久久一区| 欧美视频一区在线| 狠狠狠色丁香婷婷综合激情 | 成人午夜又粗又硬又大| 亚洲已满18点击进入久久| 精品国内片67194| 91亚洲精华国产精华精华液| 亚洲一区二区三区中文字幕在线| 欧美变态tickle挠乳网站| av在线播放不卡| 麻豆一区二区三| 亚洲男帅同性gay1069| 欧美成人激情免费网| 在线视频亚洲一区| 日本午夜一本久久久综合| 国产精品久久久久久久久图文区| 51精品秘密在线观看| www.欧美色图| 精品一区二区三区免费毛片爱| 亚洲欧洲国产日韩| 精品久久五月天| 欧美色精品在线视频| 99精品视频在线免费观看| 紧缚奴在线一区二区三区| 亚洲成人在线免费| 中文字幕一区二区三区在线不卡 | 在线视频亚洲一区| 国产成人综合在线| 日韩和的一区二区| 亚洲精品免费在线| 国产精品免费网站在线观看| 欧美一区二区黄色| 555夜色666亚洲国产免| av在线播放一区二区三区| 精品午夜一区二区三区在线观看| 亚洲综合色网站| 国产精品视频观看| 久久久影视传媒| 欧美日韩在线三级| 91国产成人在线| 成人动漫精品一区二区| 国产黄色精品网站| 韩日欧美一区二区三区| 日本少妇一区二区| 日韩va亚洲va欧美va久久| 亚洲v精品v日韩v欧美v专区| 亚洲品质自拍视频| 亚洲乱码国产乱码精品精可以看 | 国产精品日产欧美久久久久| 欧美不卡视频一区| 日韩美女天天操| 日韩欧美中文一区| 日韩写真欧美这视频| 91精品国产全国免费观看| 欧美日韩视频在线一区二区| 91猫先生在线| 欧洲在线/亚洲| 欧洲av一区二区嗯嗯嗯啊| 91免费视频观看| 91国产福利在线| 欧美欧美欧美欧美| 7777精品伊人久久久大香线蕉最新版| 欧美综合欧美视频| 欧美巨大另类极品videosbest| 欧美乱妇23p| 欧美一级二级在线观看| 精品国产网站在线观看| 久久一日本道色综合| 国产欧美一区二区精品久导航| 久久午夜电影网| 国产精品久久久久影院亚瑟| 一区在线中文字幕| 亚洲午夜日本在线观看| 午夜成人免费电影| 国产一区中文字幕| 不卡电影免费在线播放一区| 91丝袜高跟美女视频| 欧美午夜视频网站| 日韩欧美国产麻豆| 国产精品日韩精品欧美在线| 亚洲日本青草视频在线怡红院| 亚洲一区二区偷拍精品| 麻豆免费精品视频| 国产成人精品亚洲777人妖| 99久久婷婷国产| 欧美日韩免费一区二区三区| 日韩午夜在线播放| 国产精品全国免费观看高清 | 91麻豆精品国产91| 2021久久国产精品不只是精品| 国产精品久久久久一区二区三区共 | 欧美精品一区二| 亚洲私人黄色宅男| 青草国产精品久久久久久| 丁香婷婷综合色啪| 欧美日韩在线播放一区| 欧美tickling挠脚心丨vk| 国产亲近乱来精品视频| 亚洲高清不卡在线观看| 国产精品影视天天线| 欧美影院一区二区| 久久久久久久久久久久久夜| 亚洲精品伦理在线| 国产夫妻精品视频| 欧美日韩在线综合| 国产精品久久久久久久久免费相片 | 成人免费看黄yyy456| 在线不卡免费av| 中文字幕一区二区三| 久久 天天综合| 欧美mv日韩mv国产网站| 亚洲欧美偷拍卡通变态| 国产精品一区二区在线观看不卡 | 成人福利视频在线看| 日韩欧美久久久| 一区二区三区精品在线| 国产一区不卡视频| 91精品国产综合久久久久久久久久 | 久久99精品久久久久婷婷| 色先锋aa成人| 国产欧美一区二区在线| 久久国产尿小便嘘嘘| 精品视频色一区| 日韩美女视频19| 成人激情视频网站| 2023国产精品自拍| 免费在线一区观看| 欧美二区三区的天堂| 亚洲一区精品在线| 91免费看片在线观看| 国产欧美视频在线观看| 美腿丝袜亚洲综合| 欧美电影一区二区| 无码av免费一区二区三区试看| 日本精品一区二区三区高清 | 91麻豆免费观看| 国产精品三级电影| 国产白丝网站精品污在线入口| 久久婷婷综合激情| 国产一区二区福利| 久久久不卡网国产精品一区| 精品夜夜嗨av一区二区三区| 日韩欧美成人激情| 精品在线观看视频| 亚洲精品在线免费观看视频| 久久丁香综合五月国产三级网站| 欧美一卡二卡三卡| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美一区二区三区四区五区| 天天色天天爱天天射综合| 精品视频全国免费看| 日韩av中文字幕一区二区三区| 欧美日韩一区二区在线观看| 日韩在线观看一区二区| 日韩午夜在线影院| 国内成+人亚洲+欧美+综合在线| 日韩欧美亚洲一区二区| 国产一区二区电影| 中文字幕电影一区| 99视频一区二区| 亚洲综合免费观看高清完整版在线| 欧美午夜片在线看| 日韩高清在线不卡| 久久久久久久av麻豆果冻| 粉嫩av一区二区三区粉嫩| 成人免费在线观看入口| 色婷婷激情综合| 日韩电影一区二区三区| 欧美精品一区二区三区蜜桃| 成人丝袜视频网| 亚洲激情校园春色| 538prom精品视频线放| 国产一区三区三区| 一区二区激情视频| 欧美r级在线观看| 色综合天天狠狠|