Programming Technical Reference - IBM Copyright 1988, Dave Williams These scan codes are generated by pressing a key on the PC's keyboard. This is the 'make' code. A 'break' code is generated when the key is released. The break scancode is 128 higher than the make code, and is generated by setting bit 7 of the scan code byte to 1. IBM PC KEYBOARD EXTENDED CODES Normal Shift Control Alt ESC 1 1 2 0;120 2 3 0;121 3 4 0;122 4 5 0;123 5 6 0;124 6 7 0;125 7 8 0;126 8 9 0;127 9 10 0;128 0 11 0;129 - 12 0;130 = 13 0;131 TAB 15 0;15(backtab) backtab none 0;15 RETURN 28 Normal Shift Control Alt NumLock Home 0;71 0;119 none 7 UpArrow 0;72 none none 8 PgUp 0;73 0;132 none 9 gray - 0;74 0;74 LArrow 0;75 0;115 none 4 keypad 5 none none none 5 RArrow 0;77 0;116 6 gray + 0;78 0;78 End 0;79 0;117 none 1 DnArrow 0;80 2 PgDn 0;81 0;118 none 3 Ins 0;82 none 11 Del 0;83 0;128 none 52 PrtSc 55 0;114 L shift 42 R shift 54 alt key 56 capslock 58 spacebar 57 control key 29 numlock 69 scrollock 70 ; 39 [ 26 ] 27 " 40 \ 43 / 53 , 51 . 52 Normal Shift Control Alt a = 30 0;30 b = 48 0;48 c = 46 0;46 d = 32 0;32 e = 18 0;18 f = 33 0;33 g = 34 0;34 h = 35 0;35 i = 23 0;23 j = 36 0;36 k = 37 0;37 l = 38 0;38 m = 50 0;50 n = 49 0;49 o = 24 0;24 p = 25 0;25 q = 16 0;16 r = 19 0;19 s = 31 0;31 t = 20 0;20 u = 22 0;22 v = 47 0;47 w = 17 0;17 x = 45 0;45 y = 21 0;21 z = 44 0;44 Normal Shift Control Alt F1 = 0;59 0;84 0;94 0;104 F2 = 0;60 0;85 0;95 0;105 F3 = 0;61 0;86 0;96 0;106 F4 = 0;62 0;87 0;97 0;107 F5 = 0;63 0;88 0;98 0;108 F6 = 0;64 0;89 0;99 0;109 F7 = 0;65 0;90 0;100 0;110 F8 = 0;66 0;91 0;101 0;111 F9 = 0;67 0;92 0;102 0;112 F10 = 0;68 0;93 0;103 0;113 "Enhanced" 101/102 key keyboard scancodes Normal Shift Control Alt F11 = 0;152 0;162 0;172 0;182 | F12 = 0;153 0;163 0;173 0;183 | Tandy? F11 = 0;133 0;135 0;137 0;139 F12 = 0;134 0;136 0;138 0;140 alt-home 0;151 UpArr 0;141 0;152 Ctrl - 0;142 Ctrl 5 0;143 Ctrl + 0;144 DnArr 0;145 0;160 Ins 0;146 0;162 Del 0;147 0;163 Tab 0;148 0;165 / 0;149 0;164 Ctrl-* 0;150 alt-Enter 0;166 alt-PgUp 0;153 alt-LArr 0;154 alt-RArr 0;155 alt-End 0;156 alt-PgDn 0;161 BIOS keystroke codes, hexadecimal Key Normal Shift Control Alt Esc 011B 011B 011B -- 1! 0231 '1' 0221 '!' -- 7800 2@ 0332 '2' 0340 '@' 0300 7900 3# 0433 '3' 0423 '#' -- 7A00 4$ 0534 '4' 0524 '$' -- 7B00 5% 0635 '5' 0625 '%' -- 7C00 6^ 0736 '6' 075E '^' 071E 7D00 7& 0837 '7' 0826 '&' -- 7E00 8* 0938 '8' 092A '*' -- 7F00 9( 0A39 '9' 0A28 '(' -- 8000 0) 0B30 '0' 0B29 ')' -- 8100 -_ 0C2D '-' 0C5F '_' 0C1F 8200 =+ 0D3D '=' 0D2B '+' -- 8300 BkSpc 0E08 0E08 0E7F -- tab 0F09 0F00 -- -- q 1071 'q' 1051 'Q' 1011 1000 w 1177 'w' 1157 'W' 1117 1100 e 1265 'e' 1245 'E' 1205 1200 r 1372 'r' 1352 'R' 1312 1300 t 1474 't' 1454 'T' 1414 1400 y 1579 'y' 1559 'Y' 1519 1500 u 1675 'u' 1655 'U' 1615 1600 i 1769 'i' 1749 'I' 1709 1700 o 186F 'o' 184F 'O' 180F 1800 p 1970 'p' 1950 'P' 1910 1900 [{ 1A5B '[' 1A7B '{' 1A1B -- ]} 1B5D ']' 1B7D '}' 1B1D -- enter 1C0D 1C0D 1C0A -- Ctrl -- -- -- -- a 1E61 'a' 1E41 'A' 1E01 1E00 s 1F73 's' 1F53 'S' 1F13 1F00 d 2064 'd' 2044 'D' 2004 2000 f 2166 'f' 2146 'F' 2106 2100 g 2267 'g' 2247 'G' 2207 2200 h 2368 'h' 2348 'H' 2308 2300 j 246A 'j' 244A 'J' 240A 2400 k 256B 'k' 254B 'K' 250B 2500 l 266C 'l' 264C 'L' 260C 2600 ;: 273B ';' 273A ':' -- -- '" 2827 ''' 2822 '"' -- -- `~ 2960 '`' 297E '~' -- -- l shift -- -- -- -- \| 2B5C '\' 2B7C '|' 2B1C -- z 2C7A 'z' 2C5A 'Z' 2C1A 2C00 x 2D78 'x' 2D58 'X' 2D18 2D00 c 2E63 'c' 2E43 'C' 2E03 2E00 v 2F76 'v' 2F56 'V' 2F16 2F00 b 3062 'b' 3042 'B' 3002 3000 n 316E 'n' 314E 'N' 310E 3100 m 326D 'm' 324D 'M' 320D 3200 ,< 332C ',' 333C '<' -- -- .> 342E '.' 343E '>' -- -- /? 352F '/' 353F '?' -- -- r shift -- -- -- -- PrtSc 372A '*' -- 7200 -- Alt -- -- -- -- spacebar 3920 ' ' 3920 ' ' 3920 ' ' 3920 ' ' CapsLock -- -- -- -- F1 3B00 5400 5E00 6800 F2 3C00 5500 5F00 6900 F3 3D00 5600 6000 6A00 F4 3E00 5700 6100 6B00 F5 3F00 5800 6200 6C00 F6 4000 5900 6300 6D00 F7 4100 5A00 6400 6E00 F8 4200 5B00 6500 6F00 F9 4300 5C00 6600 7000 F10 4400 5D00 6700 7100 NumLock -- -- -- -- Scroll -- -- -- -- 7 Home 4700 4737 '7' 7700 -- 8 up 4800 4838 '8' -- -- 9 PgUp 4900 4939 '9' 8400 -- grey - 4A2D '-' 4A2D '-' -- -- 4 left 4B00 4B34 '4' 7300 -- 5 -- 4C35 '5' -- -- 6 right 4D00 4D36 '6' 7400 -- grey + 4E2B '+' 4E2B '+' -- -- 1 End 4F00 4F31 '1' 7500 -- 2 down 5000 5032 '2' -- -- 3 PgDn 5100 5133 '3' 7600 -- Ins 5200 5230 '0' -- -- Del 5300 532E '.' -- -- A table entry of "--" means you can't get that combination out of BIOS.