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

📄 keyboard.s

📁 linux内核
💻 S
📖 第 1 页 / 共 2 页
字号:
	.byte 0,0	.byte 0,0,0,0,0,0,0,0,0,0,0	.byte '~,13,0	.byte 0,0,0,0,0,0,0,0,0,0,0	.byte 0,0	.byte 0,0,0,0,0,0,0,0,0,0,0	.byte 0,0,0,0		/* 36-39 */	.fill 16,1,0		/* 3A-49 */	.byte 0,0,0,0,0		/* 4A-4E */	.byte 0,0,0,0,0,0,0	/* 4F-55 */	.byte '|	.fill 10,1,0#elif defined(KBD_UK)key_map:	.byte 0,27	.ascii "1234567890-="	.byte 127,9	.ascii "qwertyuiop[]"	.byte 13,0	.ascii "asdfghjkl;'"	.byte '`,0	.ascii "#zxcvbnm,./"	.byte 0,'*,0,32		/* 36-39 */	.fill 16,1,0		/* 3A-49 */	.byte '-,0,0,0,'+	/* 4A-4E */	.byte 0,0,0,0,0,0,0	/* 4F-55 */	.ascii "\\"	.fill 10,1,0shift_map:	.byte 0,27	.ascii "!\"#$%%&*()_+"	.byte 127,9	.ascii "QWERTYUIOP{}"	.byte 13,0	.ascii "ASDFGHJKL:@"	.byte '~,0	.ascii "~ZXCVBNM<>?"	.byte 0,'*,0,32		/* 36-39 */	.fill 16,1,0		/* 3A-49 */	.byte '-,0,0,0,'+	/* 4A-4E */	.byte 0,0,0,0,0,0,0	/* 4F-55 */	.byte '|	.fill 10,1,0alt_map:	.byte 0,0	.ascii "\0@\0$\0\0{[]}\\\0"	.byte 0,0	.byte 0,0,0,0,0,0,0,0,0,0,0	.byte '~,13,0	.byte 0,0,0,0,0,0,0,0,0,0,0	.byte 0,0	.byte 0,0,0,0,0,0,0,0,0,0,0	.byte 0,0,0,0		/* 36-39 */	.fill 16,1,0		/* 3A-49 */	.byte 0,0,0,0,0		/* 4A-4E */	.byte 0,0,0,0,0,0,0	/* 4F-55 */	.byte '|	.fill 10,1,0#elif defined(KBD_GR)key_map:	.byte 0,27	.ascii "1234567890\\'"	.byte 127,9	.ascii "qwertzuiop@+"	.byte 13,0	.ascii "asdfghjkl[]^"	.byte 0,'#	.ascii "yxcvbnm,.-"	.byte 0,'*,0,32		/* 36-39 */	.fill 16,1,0		/* 3A-49 */	.byte '-,0,0,0,'+	/* 4A-4E */	.byte 0,0,0,0,0,0,0	/* 4F-55 */	.byte '<	.fill 10,1,0shift_map:	.byte 0,27	.ascii "!\"#$%&/()=?`"	.byte 127,9	.ascii "QWERTZUIOP\\*"	.byte 13,0	.ascii "ASDFGHJKL{}~"	.byte 0,''	.ascii "YXCVBNM;:_"	.byte 0,'*,0,32		/* 36-39 */	.fill 16,1,0		/* 3A-49 */	.byte '-,0,0,0,'+	/* 4A-4E */	.byte 0,0,0,0,0,0,0	/* 4F-55 */	.byte '>	.fill 10,1,0alt_map:	.byte 0,0	.ascii "\0@\0$\0\0{[]}\\\0"	.byte 0,0	.byte '@,0,0,0,0,0,0,0,0,0,0	.byte '~,13,0	.byte 0,0,0,0,0,0,0,0,0,0,0	.byte 0,0	.byte 0,0,0,0,0,0,0,0,0,0,0	.byte 0,0,0,0		/* 36-39 */	.fill 16,1,0		/* 3A-49 */	.byte 0,0,0,0,0		/* 4A-4E */	.byte 0,0,0,0,0,0,0	/* 4F-55 */	.byte '|	.fill 10,1,0#elif defined(KBD_FR)key_map:	.byte 0,27	.ascii "&{\"'(-}_/@)="	.byte 127,9	.ascii "azertyuiop^$"	.byte 13,0	.ascii "qsdfghjklm|"	.byte '`,0,42		/* coin sup gauche, don't know, [*|mu] */	.ascii "wxcvbn,;:!"	.byte 0,'*,0,32		/* 36-39 */	.fill 16,1,0		/* 3A-49 */	.byte '-,0,0,0,'+	/* 4A-4E */	.byte 0,0,0,0,0,0,0	/* 4F-55 */	.byte '<	.fill 10,1,0shift_map:	.byte 0,27	.ascii "1234567890]+"	.byte 127,9	.ascii "AZERTYUIOP<>"	.byte 13,0	.ascii "QSDFGHJKLM%"	.byte '~,0,'#	.ascii "WXCVBN?./\\"	.byte 0,'*,0,32		/* 36-39 */	.fill 16,1,0		/* 3A-49 */	.byte '-,0,0,0,'+	/* 4A-4E */	.byte 0,0,0,0,0,0,0	/* 4F-55 */	.byte '>	.fill 10,1,0alt_map:	.byte 0,0	.ascii "\0~#{[|`\\^@]}"	.byte 0,0	.byte '@,0,0,0,0,0,0,0,0,0,0	.byte '~,13,0	.byte 0,0,0,0,0,0,0,0,0,0,0	.byte 0,0	.byte 0,0,0,0,0,0,0,0,0,0,0	.byte 0,0,0,0		/* 36-39 */	.fill 16,1,0		/* 3A-49 */	.byte 0,0,0,0,0		/* 4A-4E */	.byte 0,0,0,0,0,0,0	/* 4F-55 */	.byte '|	.fill 10,1,0#elif defined(KBD_DK)key_map:	.byte 0,27	.ascii "1234567890+'"	.byte 127,9	.ascii "qwertyuiop"	.byte 134,0,13,0	/* This is IBM-PC, change it to latin-1 */	.ascii "asdfghjkl"	.byte 145,155,0,0	.ascii "'zxcvbnm,.-"	.byte 0,'*,0,32		/* 36-39 */	.fill 16,1,0		/* 3A-49 */	.byte '-,0,0,0,'+	/* 4A-4E */	.byte 0,0,0,0,0,0,0	/* 4F-55 */	.byte '<	.fill 10,1,0shift_map:	.byte 0,27	.ascii "!\"#$%&/()=?`"	.byte 127,9	.ascii "QWERTYUIOP"	.byte 143,94,13,0	.ascii "ASDFGHJKL"	.byte 146,157,0,0	.ascii "*ZXCVBNM;:_"	.byte 0,'*,0,32		/* 36-39 */	.fill 16,1,0		/* 3A-49 */	.byte '-,0,0,0,'+	/* 4A-4E */	.byte 0,0,0,0,0,0,0	/* 4F-55 */	.byte '>	.fill 10,1,0alt_map:	.byte 0,0	.ascii "\0@\0$\0\0{[]}\0"	.byte '|,0,0	.byte 0,0,0,0,0,0,0,0,0,0,0	.byte '~,13,0	.byte 0,0,0,0,0,0,0,0,0,0,0	.byte 0,0	.byte 0,0,0,0,0,0,0,0,0,0,0	.byte 0,0,0,0		/* 36-39 */	.fill 16,1,0		/* 3A-49 */	.byte 0,0,0,0,0		/* 4A-4E */	.byte 0,0,0,0,0,0,0	/* 4F-55 */	.ascii "\\"	.fill 10,1,0#else#error "KBD-type not defined"#endif/* * do_self handles "normal" keys, ie keys that don't change meaning * and which have just one character returns. */do_self:	lea alt_map,%ebx	testb $0x20,_kmode		/* alt-gr */	jne 1f	lea shift_map,%ebx	testb $0x03,_kmode	jne 1f	lea key_map,%ebx1:	movb (%ebx,%eax),%al	orb %al,%al	je none	testb $0x4c,_kmode		/* ctrl or caps */	je 2f	cmpb $'a,%al	jb 2f	cmpb $'},%al	ja 2f	subb $32,%al2:	testb $0x0c,_kmode		/* ctrl */	je 3f	cmpb $64,%al	jb 3f	cmpb $64+32,%al	jae 3f	subb $64,%al3:	testb $0x10,_kmode		/* left alt */	je 4f	orb $0x80,%al4:	andl $0xff,%eax	xorl %ebx,%ebx	call put_queuenone:	ret/* * slash and star have routines of their own, as a 'E0h' before * the scan code for slash means that the numeric keypad * slash was pushed. */slash:	cmpb $1,e0	jne do_self	cmpb $1,_kapplic	jne notmapplic	movw $'Q,%ax	jmp applkey	notmapplic:	movl $'/,%eax	xorl %ebx,%ebx	jmp put_queuestar:	cmpb $1,_kapplic	jne do_self	movw $'R,%ax	jmp applkey	notsapplic:	movl $'*,%eax	xorl %ebx,%ebx	jmp put_queueenter:	cmpb $1,e0	jne do_self	cmpb $1,_kapplic	jne do_self	movw $'M,%ax	jmp applkey	minus:	cmpb $1,_kapplic	jne do_self	movw $'S,%ax	jmp applkey	plus:	cmpb $1,_kapplic	jne do_self	movw $'l,%ax	jmp applkey	/* * This table decides which routine to call when a scan-code has been * gotten. Most routines just call do_self, or none, depending if * they are make or break. */key_table:	.long none,do_self,do_self,do_self	/* 00-03 s0 esc 1 2 */	.long do_self,do_self,do_self,do_self	/* 04-07 3 4 5 6 */	.long do_self,do_self,do_self,do_self	/* 08-0B 7 8 9 0 */	.long do_self,do_self,do_self,do_self	/* 0C-0F + ' bs tab */	.long do_self,do_self,do_self,do_self	/* 10-13 q w e r */	.long do_self,do_self,do_self,do_self	/* 14-17 t y u i */	.long do_self,do_self,do_self,do_self	/* 18-1B o p } ^ */	.long enter,ctrl,do_self,do_self	/* 1C-1F enter ctrl a s */	.long do_self,do_self,do_self,do_self	/* 20-23 d f g h */	.long do_self,do_self,do_self,do_self	/* 24-27 j k l | */	.long do_self,do_self,lshift,do_self	/* 28-2B { para lshift , */	.long do_self,do_self,do_self,do_self	/* 2C-2F z x c v */	.long do_self,do_self,do_self,do_self	/* 30-33 b n m , */	.long do_self,slash,rshift,star		/* 34-37 . - rshift * */	.long alt,do_self,caps,func		/* 38-3B alt sp caps f1 */	.long func,func,func,func		/* 3C-3F f2 f3 f4 f5 */	.long func,func,func,func		/* 40-43 f6 f7 f8 f9 */	.long func,num,scroll,cursor		/* 44-47 f10 num scr home */	.long cursor,cursor,minus,cursor	/* 48-4B up pgup - left */	.long cursor,cursor,plus,cursor		/* 4C-4F n5 right + end */	.long cursor,cursor,cursor,cursor	/* 50-53 dn pgdn ins del */	.long none,none,do_self,func		/* 54-57 sysreq ? < f11 */	.long func,none,none,none		/* 58-5B f12 ? ? ? */	.long none,none,none,none		/* 5C-5F ? ? ? ? */	.long none,none,none,none		/* 60-63 ? ? ? ? */	.long none,none,none,none		/* 64-67 ? ? ? ? */	.long none,none,none,none		/* 68-6B ? ? ? ? */	.long none,none,none,none		/* 6C-6F ? ? ? ? */	.long none,none,none,none		/* 70-73 ? ? ? ? */	.long none,none,none,none		/* 74-77 ? ? ? ? */	.long none,none,none,none		/* 78-7B ? ? ? ? */	.long none,none,none,none		/* 7C-7F ? ? ? ? */	.long none,none,none,none		/* 80-83 ? br br br */	.long none,none,none,none		/* 84-87 br br br br */	.long none,none,none,none		/* 88-8B br br br br */	.long none,none,none,none		/* 8C-8F br br br br */	.long none,none,none,none		/* 90-93 br br br br */	.long none,none,none,none		/* 94-97 br br br br */	.long none,none,none,none		/* 98-9B br br br br */	.long none,unctrl,none,none		/* 9C-9F br unctrl br br */	.long none,none,none,none		/* A0-A3 br br br br */	.long none,none,none,none		/* A4-A7 br br br br */	.long none,none,unlshift,none		/* A8-AB br br unlshift br */	.long none,none,none,none		/* AC-AF br br br br */	.long none,none,none,none		/* B0-B3 br br br br */	.long none,none,unrshift,none		/* B4-B7 br br unrshift br */	.long unalt,none,uncaps,none		/* B8-BB unalt br uncaps br */	.long none,none,none,none		/* BC-BF br br br br */	.long none,none,none,none		/* C0-C3 br br br br */	.long none,none,none,none		/* C4-C7 br br br br */	.long none,none,none,none		/* C8-CB br br br br */	.long none,none,none,none		/* CC-CF br br br br */	.long none,none,none,none		/* D0-D3 br br br br */	.long none,none,none,none		/* D4-D7 br br br br */	.long none,none,none,none		/* D8-DB br ? ? ? */	.long none,none,none,none		/* DC-DF ? ? ? ? */	.long none,none,none,none		/* E0-E3 e0 e1 ? ? */	.long none,none,none,none		/* E4-E7 ? ? ? ? */	.long none,none,none,none		/* E8-EB ? ? ? ? */	.long none,none,none,none		/* EC-EF ? ? ? ? */	.long none,none,none,none		/* F0-F3 ? ? ? ? */	.long none,none,none,none		/* F4-F7 ? ? ? ? */	.long none,none,none,none		/* F8-FB ? ? ? ? */	.long none,none,none,none		/* FC-FF ? ? ? ? *//* * kb_wait waits for the keyboard controller buffer to empty. */kb_wait:	pushl %eax	pushl %ebx	movl $10000,%ebx1:	inb $0x64,%al	testb $0x02,%al	je 2f	decl %ebx	jne 1b2:	popl %ebx	popl %eax	retno_idt:	.long 0,0/* * This routine reboots the machine by asking the keyboard * controller to pulse the reset-line low. We try that for a while, * and if it doesn't work, we do some other stupid things. */_hard_reset_now:	sti	movl $100,%ebx1:	call kb_wait	movw $0x1234,0x472	/* don't do memory check */	movb $0xfe,%al		/* pulse reset low */	outb %al,$0x64	decl %ebx	jne 1b	lidt no_idt		/* zero-length idt: should triple-fault */	jmp _hard_reset_now

⌨️ 快捷键说明

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