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

📄 keyboard.s

📁 阿基米德操作系统的源代码
💻 S
📖 第 1 页 / 共 3 页
字号:

.globl keyboard_interrupt
.globl kb_wait
.globl key_buf,keybuf_head,keybuf_tail
.globl keybuf_num0,keybuf_num1,keybuf_num2,keybuf_flag,mode,ledsKEYBUF_SIZE	= 1024		

.align 4key_buf:		.fill	512,2,0
keybuf_head:	.long	0
keybuf_tail:	.long	0
keybuf_num0:	.word	0
keybuf_num1:	.word	0
keybuf_num2:	.word	0
keybuf_flag:	.byte	0
mode:			.byte	0		leds:			.byte	2		e0:				.byte	0
e1:				.byte	0

temp_char:		.byte	0
temp_al:		.byte	0
temp_ah:		.byte	0
temp_flag:		.byte	0

.align 4
map_table:
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
	.long do_none ,do_self  ,do_self    ,do_self	/* 00-03 0			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 _-			+=			erase		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 do_enter,do_ctrl  ,do_self    ,do_self	/* 1C-1F enter		l_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  ,do_shift   ,do_self	/* 28-2B "'			~`			l_shift		|\			*/
	.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 ,do_aaa   ,do_self    ,do_bbb		/* 34-37 >.			?/			r_shift		rrr_*		*/
	.long do_alt  ,do_self  ,do_self    ,do_self	/* 38-3B l_alt		space		capslock	f1			*/
	.long do_self ,do_self  ,do_self    ,do_self	/* 3C-3F f2			f3			f4			f5			*/
	.long do_self ,do_self  ,do_self    ,do_self	/* 40-43 f6			f7			f8			f9			*/
	.long do_self ,do_num   ,do_scro    ,do_add20	/* 44-47 f10		numlock		scrolock	rrr_7home	*/
	.long do_add20,do_add20 ,do_self    ,do_add20	/* 48-4B rrr_8up	rrr_9pgup	rrr_-		rrr_4left	*/
	.long do_self ,do_add20 ,do_self    ,do_add20	/* 4C-4F rrr_5		rrr_6right	rrr_+		rrr_1end	*/
	.long do_add20,do_add20 ,do_add20   ,do_add20	/* 50-53 rrr_2down	rrr_3pgdn	rrr_0ins	rrr_.del	*/
													/*                                                      */
	.long do_self ,do_none  ,do_none	,do_self	/* 54-57 sysrq		?			?			f11			*/
	.long do_self ,do_none	,do_none	,do_self	/* 58-5B f12		?			?			lwin		*/
	.long do_self ,do_self  ,do_none	,do_none	/* 5C-5F rwin		print		?			?			*/
	.long do_none ,do_none	,do_none	,do_none	/* 60-63 ?			?			?			?			*/
	.long do_none ,do_none	,do_none	,do_none	/* 64-67 ?			?			?			?			*/
	.long do_none ,do_none	,do_none	,do_none	/* 68-6B ?			?			?			?			*/
	.long do_none ,do_none	,do_none	,do_none	/* 6C-6F ?			?			?			?			*/
	.long do_none ,do_none	,do_none	,do_none	/* 70-73 ?			?			?			?			*/
	.long do_none ,do_none	,do_none	,do_none	/* 74-77 ?			?			?			?			*/
	.long do_none ,do_none	,do_none	,do_none	/* 78-7B ?			?			?			?			*/
	.long do_none ,do_none	,do_none	,do_none	/* 7C-7F ?			?			?			?			*/
													/*														*/
	.long do_none ,do_none	,do_none	,do_none	/* 80-83 ?			?			?			?			*/
	.long do_none ,do_none	,do_none	,do_none	/* 84-87 ?			?			?			?			*/
	.long do_none ,do_none	,do_none	,do_none	/* 88-8B ?			?			?			?			*/	
	.long do_none ,do_none	,do_none	,do_none	/* 8C-8F ?			?			?			?			*/
	.long do_none ,do_none	,do_none	,do_none	/* 90-93 ?			?			?			?			*/
	.long do_none ,do_none	,do_none	,do_none	/* 94-97 ?			?			?			?			*/
	.long do_none ,do_none	,do_none	,do_none	/* 98-9B ?			?			?			?			*/
	.long do_none ,do_unctrl,do_none    ,do_none	/* 9C-9F ?			unctrl		?			?			*/
	.long do_none ,do_none	,do_none	,do_none	/* A0-A3 ?			?			?			?			*/
	.long do_none ,do_none	,do_none	,do_none	/* A4-A7 ?			?			?			?			*/
	.long do_none ,do_none	,do_unlshift,do_none	/* A8-AB ?			?			unlshift	?			*/
	.long do_none ,do_none	,do_none	,do_none	/* AC-AF ?			?			?			?			*/
	.long do_none ,do_none	,do_none	,do_none	/* B0-B3 ?			?			?			?			*/
	.long do_none ,do_none	,do_unrshift,do_none	/* B4-B7 ?			?			unrshift	?			*/
	.long do_unalt,do_none	,do_uncaps  ,do_none	/* B8-BB unalt		?			uncapslock	?			*/
	.long do_none ,do_none	,do_none	,do_none	/* BC-BF ?			?			?			?			*/
	.long do_none ,do_none	,do_none	,do_none	/* C0-C3 ?			?			?			?			*/
	.long do_none ,do_unnum ,do_unscro  ,do_none	/* C4-C7 ?			unnumlock	unscrolock	?			*/
	.long do_none ,do_none	,do_none	,do_none	/* C8-CB ?			?			?			?			*/
	.long do_none ,do_none	,do_none	,do_none	/* CC-CF ?			?			?			?			*/
	.long do_none ,do_none	,do_none	,do_none	/* D0-D3 ?			?			?			?			*/
	.long do_none ,do_none	,do_none	,do_none	/* D4-D7 ?			?			?			?			*/
	.long do_none ,do_none	,do_none	,do_none	/* D8-DB ?			?			?			?			*/
	.long do_none ,do_none	,do_none	,do_none	/* DC-DF ?			?			?			?			*/
	.long do_none ,do_none	,do_none	,do_none	/* E0-E3 ?			?			?			?			*/
	.long do_none ,do_none	,do_none	,do_none	/* E4-E7 ?			?			?			?			*/
	.long do_none ,do_none	,do_none	,do_none	/* E8-EB ?			?			?			?			*/
	.long do_none ,do_none	,do_none	,do_none	/* EC-EF ?			?			?			?			*/
	.long do_none ,do_none	,do_none	,do_none	/* F0-F3 ?			?			?			?			*/
	.long do_none ,do_none	,do_none	,do_none	/* F4-F7 ?			?			?			?			*/
	.long do_none ,do_none	,do_none	,do_none	/* F8-FB ?			?			?			?			*/
	.long do_none ,do_none	,do_none	,do_none	/* FC-FF ?			?			?			?			*/
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
key_table:
	.long put_key0	,put_key1  ,put_key2   ,put_key2   /* 00-03 0		  esc		!1			@2			*/
	.long put_key2	,put_key2  ,put_key2   ,put_key2   /* 04-07 #3		  $4		%5			^6			*/
	.long put_key2	,put_key2  ,put_key2   ,put_key2   /* 08-0B &7		  *8		(9			)0			*/
	.long put_key2	,put_key2  ,put_key3   ,put_key4   /* 0C-0F _-		  +=		erase		tab			*/
	.long put_key5	,put_key5  ,put_key5   ,put_key5   /* 10-13 q		  w			e			r			*/
	.long put_key5	,put_key5  ,put_key5   ,put_key5   /* 14-17 t		  y			u			i			*/
	.long put_key5	,put_key5  ,put_key6   ,put_key6   /* 18-1B o		  p			{[			}]			*/
	.long put_key7	,put_queue6,put_key8   ,put_key8   /* 1C-1F enter	  l_ctrl	a			s			*/
	.long put_key8	,put_key8  ,put_key8   ,put_key8   /* 20-23 d		  f			g			h			*/
	.long put_key8	,put_key8  ,put_key8   ,put_key9   /* 24-27 j		  k			l			:;			*/
	.long put_key9	,put_key9  ,put_queue10,put_key10  /* 28-2B "'		  ~`		l_shift		|\			*/
	.long put_key11	,put_key11 ,put_key11  ,put_key11  /* 2C-2F z		  x			c			v			*/
	.long put_key11	,put_key11 ,put_key11  ,put_key12  /* 30-33 b		  n			m			<,			*/
	.long put_key12	,put_key12 ,put_queue8 ,put_key13  /* 34-37 >.		  ?/		r_shift		rrr_*		*/
	.long put_queue2,put_key14 ,set_leds0  ,put_key15  /* 38-3B l_alt	  space		capslock	f1			*/
	.long put_key15	,put_key15 ,put_key15  ,put_key15  /* 3C-3F f2		  f3		f4			f5			*/
	.long put_key15	,put_key15 ,put_key15  ,put_key15  /* 40-43 f6		  f7		f8			f9			*/
	.long put_key15	,set_leds2 ,set_leds4  ,put_key16  /* 44-47 f10		  numlock	scrolock	rrr_7home	*/
	.long put_key16	,put_key16 ,put_key17  ,put_key18  /* 48-4B rrr_8up	  rrr_9pgup	 rrr_-		rrr_4left	*/
	.long put_key19	,put_key20 ,put_key21  ,put_key22  /* 4C-4F rrr_5	  rrr_6right rrr_+		rrr_1end	*/
	.long put_key22	,put_key22 ,put_key22  ,put_key23  /* 50-53 rrr_2down rrr_3pgdn	rrr_0ins	rrr_.del	*/


	.long put_key24	,put_key24 ,put_key25  ,put_key26  /* 54-57 prtscr	  pause		?			f11			*/
	.long put_key26	,put_key27 ,put_key27  ,put_key28  /* 58-5B f12		  ?			?			l_win		*/
	.long put_key28	,put_key28 ,put_key29  ,put_queue4 /* 5C-5F r_win	  print		rrr_enter	r_ctrl		*/
	.long put_key30	,put_queue0,put_key31  ,put_key31  /* 60-63 rrr_/	  r_alt		?			?			*/
	.long put_key31	,put_key31 ,put_key31  ,put_key32  /* 64-67 ?		  ?			?			rr_home		*/
	.long put_key32	,put_key32 ,put_key33  ,put_key34  /* 68-6B rr_up	  rr_pgup	?			rr_left		*/
	.long put_key35	,put_key36 ,put_key37  ,put_key38  /* 6C-6F ?		  rr_right	?			rr_end		*/
	.long put_key38	,put_key38 ,put_key38  ,put_key39  /* 70-73 rr_down	  rr_pgdn	rr_ins		rr_del		*/
	.long put_key40	,put_key40 ,put_key40  ,put_key40  /* 74-77 ?		  ?			?			?			*/
	.long put_key40	,put_key40 ,put_key40  ,put_key40  /* 78-7B ?		  ?			?			?			*/
	.long put_key40	,put_key40 ,put_key40  ,put_key40  /* 7C-7F ?		  ?			?			?			*/

	.long put_key40	,put_key40 ,put_key40  ,put_key40  /* 80-83 ?		  ?			?			?			*/
	.long put_key40	,put_key40 ,put_key40  ,put_key40  /* 84-87 ?		  ?			?			?			*/
	.long put_key40	,put_key40 ,put_key40  ,put_key40  /* 88-8B ?		  ?			?			?			*/	
	.long put_key40	,put_key40 ,put_key40  ,put_key40  /* 8C-8F ?		  ?			?			?			*/
	.long put_key40	,put_key40 ,put_key40  ,put_key40  /* 90-93 ?		  ?			?			?			*/
	.long put_key40	,put_key40 ,put_key40  ,put_key40  /* 94-97 ?		  ?			?			?			*/
	.long put_key40	,put_key40 ,put_key40  ,put_key40  /* 98-9B ?		  ?			?			?			*/
	.long put_key40	,put_queue7,put_key41  ,put_key41  /* 9C-9F ?		  unlctrl	?			?			*/
	.long put_key41	,put_key41 ,put_key41  ,put_key41  /* A0-A3 ?		  ?			?			?			*/
	.long put_key41	,put_key41 ,put_key41  ,put_key41  /* A4-A7 ?		  ?			?			?			*/
	.long put_key41	,put_key41 ,put_queue11,put_key42  /* A8-AB ?		  ?			unlshift	?			*/
	.long put_key42	,put_key42 ,put_key42  ,put_key42  /* AC-AF ?		  ?			?			?			*/
	.long put_key42	,put_key42 ,put_key42  ,put_key42  /* B0-B3 ?		  ?			?			?			*/
	.long put_key42	,put_key42 ,put_queue9 ,put_key43  /* B4-B7 ?		  ?			unrshift	?			*/
	.long put_queue3,put_key44 ,set_leds1  ,put_key45  /* B8-BB unlalt	  ?			uncaps		?			*/
	.long put_key45	,put_key45 ,put_key45  ,put_key45  /* BC-BF ?		  ?			?			?			*/
	.long put_key45	,put_key45 ,put_key45  ,put_key45  /* C0-C3 ?		  ?			?			?			*/
	.long put_key45	,set_leds3 ,set_leds5  ,put_key46  /* C4-C7 ?		  unnum		unscro		?			*/
	.long put_key46	,put_key46 ,put_key46  ,put_key46  /* C8-CB ?		  ?			?			?			*/
	.long put_key46	,put_key46 ,put_key46  ,put_key46  /* CC-CF ?		  ?			?			?			*/
	.long put_key46	,put_key46 ,put_key46  ,put_key46  /* D0-D3 ?		  ?			?			?			*/
	.long put_key46	,put_key46 ,put_key46  ,put_key46  /* D4-D7 ?		  ?			?			?			*/
	.long put_key46	,put_key46 ,put_key46  ,put_key46  /* D8-DB ?		  ?			?			?			*/
	.long put_key46	,put_key46 ,put_key46  ,put_queue5 /* DC-DF ?		  ?			?			unrctrl		*/
	.long put_key47	,put_queue1,put_key48  ,put_key48  /* E0-E3 ?		  unralt	?			?			*/
	.long put_key48	,put_key48 ,put_key48  ,put_key48  /* E4-E7 ?		  ?			?			?			*/
	.long put_key48	,put_key48 ,put_key48  ,put_key48  /* E8-EB ?		  ?			?			?			*/
	.long put_key48	,put_key48 ,put_key48  ,put_key48  /* EC-EF ?		  ?			?			?			*/
	.long put_key48	,put_key48 ,put_key48  ,put_key48  /* F0-F3 ?		  ?			?			?			*/
	.long put_key48	,put_key48 ,put_key48  ,put_key48  /* F4-F7 ?		  ?			?			?			*/
	.long put_key48	,put_key48 ,put_key48  ,put_key48  /* F8-FB ?		  ?			?			?			*/
	.long put_key48	,put_key48 ,put_key48  ,put_key48  /* FC-FF ?		  ?			?			?			*/
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
upkey_table:
	.byte 0		,0x1b	,'!		,'@  	/* 00-03 0			esc			!1			@2			*/
	.byte '#	,'$		,'%		,'^  	/* 04-07 #3			$4			%5			^6			*/
	.byte '&	,'*		,'(		,')  	/* 08-0B &7			*8			(9			)0			*/
	.byte '_	,'+		,0x08	,0		/* 0C-0F _-			+=			erase		tab			*/
	.byte 'Q	,'W		,'E		,'R   	/* 10-13 q			w			e			r			*/
	.byte 'T	,'Y		,'U		,'I   	/* 14-17 t			y			u			i			*/
	.byte 'O	,'P		,'{		,'}   	/* 18-1B o			p			{[			}]			*/
	.byte 0x0d	,0		,'A		,'S   	/* 1C-1F enter		l_ctrl		a			s			*/
	.byte 'D	,'F		,'G		,'H   	/* 20-23 d			f			g			h			*/
	.byte 'J	,'K		,'L		,':   	/* 24-27 j			k			l			:;			*/
	.byte 0x22	,'~		,0		,'|   	/* 28-2B "'			~`			l_shift		|\			*/
	.byte 'Z	,'X		,'C		,'V   	/* 2C-2F z			x			c			v			*/
	.byte 'B	,'N		,'M		,'<   	/* 30-33 b			n			m			<,			*/
	.byte '>	,'?		,0		,'*   	/* 34-37 >.			?/			r_shift		rrr_*		*/
	.byte 0		,0x20	,0		,0   	/* 38-3B l_alt		space		capslock	f1			*/
	.byte 0		,0		,0		,0   	/* 3C-3F f2			f3			f4			f5			*/
	.byte 0		,0		,0		,0   	/* 40-43 f6			f7			f8			f9			*/
	.byte 0		,0		,0		,'7   	/* 44-47 f10		numlock		scrolock	rrr_7home	*/
	.byte '8	,'9		,'-		,'4   	/* 48-4B rrr_8up	rrr_9pgup	rrr_-		rrr_4left	*/
	.byte '5	,'6		,'+		,'1   	/* 4C-4F rrr_5		rrr_6right	rrr_+		rrr_1end	*/
	.byte '2	,'3		,'0		,'.   	/* 50-53 rrr_2down	rrr_3pgdn	rrr_0ins	rrr_.del	*/


	.byte 0		,0		,0		,0   	/* 54-57 prtscr		pause		?			f11			*/
	.byte 0		,0		,0		,0   	/* 58-5B f12		?			?			l_win		*/
	.byte 0		,0		,0x0d	,0		/* 5C-5F r_win		print		rrr_enter	r_ctrl		*/
	.byte '/	,0		,0		,0		/* 60-63 rrr_/		r_alt		?			?			*/
	.byte 0		,0		,0		,0		/* 64-67 ?			?			?			rr_home		*/
	.byte 0		,0		,0		,0		/* 68-6B rr_up		rr_pgup		?			rr_left		*/
	.byte 0		,0		,0		,0		/* 6C-6F ?			rr_right	?			rr_end		*/
	.byte 0		,0		,0		,0		/* 70-73 rr_down	rr_pgdn		rr_ins		rr_del		*/
	.byte 0		,0		,0		,0		/* 74-77 ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* 78-7B ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* 7C-7F ?			?			?			?			*/

	.byte 0		,0		,0		,0		/* 80-83 ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* 84-87 ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* 88-8B ?			?			?			?			*/	
	.byte 0		,0		,0		,0		/* 8C-8F ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* 90-93 ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* 94-97 ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* 98-9B ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* 9C-9F ?			unlctrl		?			?			*/
	.byte 0		,0		,0		,0		/* A0-A3 ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* A4-A7 ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* A8-AB ?			?			unlshift	?			*/
	.byte 0		,0		,0		,0		/* AC-AF ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* B0-B3 ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* B4-B7 ?			?			unrshift	?			*/
	.byte 0		,0		,0		,0		/* B8-BB unlalt		?			uncaps		?			*/
	.byte 0		,0		,0		,0		/* BC-BF ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* C0-C3 ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* C4-C7 ?			unnum		unscro		?			*/
	.byte 0		,0		,0		,0		/* C8-CB ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* CC-CF ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* D0-D3 ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* D4-D7 ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* D8-DB ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* DC-DF ?			?			?			unrctrl		*/
	.byte 0		,0		,0		,0		/* E0-E3 ?			unralt		?			?			*/
	.byte 0		,0		,0		,0		/* E4-E7 ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* E8-EB ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* EC-EF ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* F0-F3 ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* F4-F7 ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* F8-FB ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* FC-FF ?			?			?			?			*/
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
downkey_table:
	.byte 0		,0x1b	,'1		,'2  	/* 00-03 0			esc			!1			@2			*/
	.byte '3	,'4		,'5		,'6  	/* 04-07 #3			$4			%5			^6			*/
	.byte '7	,'8		,'9		,'0  	/* 08-0B &7			*8			(9			)0			*/
	.byte '-	,'=		,0x08	,0x09   /* 0C-0F _-			+=			erase		tab			*/
	.byte 'q	,'w		,'e		,'r   	/* 10-13 q			w			e			r			*/
	.byte 't	,'y		,'u		,'i   	/* 14-17 t			y			u			i			*/
	.byte 'o	,'p		,'[		,']   	/* 18-1B o			p			{[			}]			*/
	.byte 0x0d	,0		,'a		,'s   	/* 1C-1F enter		l_ctrl		a			s			*/
	.byte 'd	,'f		,'g		,'h   	/* 20-23 d			f			g			h			*/
	.byte 'j	,'k		,'l		,';   	/* 24-27 j			k			l			:;			*/
	.byte 0x27	,'`		,0		,0x5c   /* 28-2B "'			~`			l_shift		|\			*/
	.byte 'z	,'x		,'c		,'v   	/* 2C-2F z			x			c			v			*/
	.byte 'b	,'n		,'m		,',   	/* 30-33 b			n			m			<,			*/
	.byte '.	,'/		,0		,'*   	/* 34-37 >.			?/			r_shift		rrr_*		*/
	.byte 0		,0x20	,0		,0   	/* 38-3B l_alt		space		capslock	f1			*/
	.byte 0		,0		,0		,0   	/* 3C-3F f2			f3			f4			f5			*/
	.byte 0		,0		,0		,0   	/* 40-43 f6			f7			f8			f9			*/
	.byte 0		,0		,0		,0   	/* 44-47 f10		numlock		scrolock	rrr_7home	*/
	.byte 0		,0		,'-		,0   	/* 48-4B rrr_8up	rrr_9pgup	rrr_-		rrr_4left	*/
	.byte 0		,0		,'+		,0   	/* 4C-4F rrr_5		rrr_6right	rrr_+		rrr_1end	*/
	.byte 0		,0		,0		,0   	/* 50-53 rrr_2down	rrr_3pgdn	rrr_0ins	rrr_.del	*/


	.byte 0		,0		,0		,0   	/* 54-57 prtscr		pause		?			f11			*/
	.byte 0		,0		,0		,0   	/* 58-5B f12		?			?			l_win		*/
	.byte 0		,0		,0x0d	,0		/* 5C-5F r_win		print		rrr_enter	r_ctrl		*/
	.byte '/	,0		,0		,0		/* 60-63 rrr_/		r_alt		?			?			*/
	.byte 0		,0		,0		,0		/* 64-67 ?			?			?			rr_home		*/
	.byte 0		,0		,0		,0		/* 68-6B rr_up		rr_pgup		?			rr_left		*/
	.byte 0		,0		,0		,0		/* 6C-6F ?			rr_right	?			rr_end		*/
	.byte 0		,0		,0		,0		/* 70-73 rr_down	rr_pgdn		rr_ins		rr_del		*/
	.byte 0		,0		,0		,0		/* 74-77 ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* 78-7B ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* 7C-7F ?			?			?			?			*/

	.byte 0		,0		,0		,0		/* 80-83 ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* 84-87 ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* 88-8B ?			?			?			?			*/	
	.byte 0		,0		,0		,0		/* 8C-8F ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* 90-93 ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* 94-97 ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* 98-9B ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* 9C-9F ?			unlctrl		?			?			*/
	.byte 0		,0		,0		,0		/* A0-A3 ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* A4-A7 ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* A8-AB ?			?			unlshift	?			*/
	.byte 0		,0		,0		,0		/* AC-AF ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* B0-B3 ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* B4-B7 ?			?			unrshift	?			*/
	.byte 0		,0		,0		,0		/* B8-BB unlalt		?			uncaps		?			*/
	.byte 0		,0		,0		,0		/* BC-BF ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* C0-C3 ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* C4-C7 ?			unnum		unscro		?			*/
	.byte 0		,0		,0		,0		/* C8-CB ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* CC-CF ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* D0-D3 ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* D4-D7 ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* D8-DB ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* DC-DF ?			?			?			unrctrl		*/
	.byte 0		,0		,0		,0		/* E0-E3 ?			unralt		?			?			*/
	.byte 0		,0		,0		,0		/* E4-E7 ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* E8-EB ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* EC-EF ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* F0-F3 ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* F4-F7 ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* F8-FB ?			?			?			?			*/
	.byte 0		,0		,0		,0		/* FC-FF ?			?			?			?			*/
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////	
.align 4
keyboard_interrupt:
	cld
	pushl	%eax
	pushl	%ebx
	pushl	%ecx
	pushl	%edx
	pushl	%esi
	pushl	%edi
	pushl	%ebp
	push	%ds
	push	%es
	push	%fs
	push	%gs

	movl	$0x10,%eax
	mov		%ax,%ds
	mov		%ax,%es
	mov		%ax,%fs


	///////////////////////??????
	call	kb_wait
	movb	$0xad,%al
	outb	%al,$0x64

	inb		$0x60,%al
	movb	%al,temp_char

	call	kb_wait
	movb	$0xae,%al
	outb	%al,$0x64
	///////////////////////??????
	movb	temp_char,%al

	cmpb	$0xe0,%al
	jne		key_int_0
	movb	$1,e0
	movb	$0,temp_char
	jmp		key_int_2
key_int_0:
	cmpb	$0xe1,%al
	jne		key_int_1
	movb	$1,e1
	movb	$0,temp_char
	jmp		key_int_2
key_int_1:
	call	*map_table(,%eax,4)
	movb	$0,e0
key_int_2:
	cmpb	$0,temp_char
	je		key_int_3
	call	do_key_interrupt
key_int_3:

	movb	$0x20,%al
	outb	%al,$0x20
	///////////////////////??????

	pop		%gs
	pop		%fs
	pop		%es
	pop		%ds
	popl	%ebp
	popl	%edi
	popl	%esi
	popl	%edx
	popl	%ecx
	popl	%ebx
	popl	%eax
	iret

//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
do_none:
	movb	$0,temp_char
	ret

do_self:
	movb	%al,temp_char
	ret

do_enter:
	cmpb	$1,e0
	jne		do_enter_0
	movb	$0x5e,%al
do_enter_0:
	movb	%al,temp_char
	ret

do_ctrl:
	cmpb	$1,e1
	jne		do_ctrl_0
	movb	$0,%al
	jmp		do_ctrl_1
do_ctrl_0:
	cmpb	$1,e0
	jne		do_ctrl_1
	movb	$0x5f,%al
do_ctrl_1:
	movb	%al,temp_char
	ret

do_shift:
	cmpb	$1,e0
	jne		do_shift_0
	movb	$0,%al
do_shift_0:
	movb	%al,temp_char
	ret

do_aaa:
	cmpb	$1,e0
	jne		do_aaa_0
	movb	$0x60,%al
do_aaa_0:
	movb	%al,temp_char
	ret

do_bbb:
	cmpb	$1,e0
	jne		do_bbb_0
	movb	$0x54,%al
do_bbb_0:
	movb	%al,temp_char
	ret

do_alt:
	cmpb	$1,e0
	jne		do_alt_0
	movb	$0x61,%al
do_alt_0:
	movb	%al,temp_char
	ret

do_num:
	cmpb	$1,e1
	jne		do_num_0
	movb	$0x55,%al
	movb	$0,e1
do_num_0:
	movb	%al,temp_char
	ret

do_scro:
	cmpb	$1,e0
	jne		do_scro_0
	movb	$0x55,%al
do_scro_0:
	movb	%al,temp_char
	ret


⌨️ 快捷键说明

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