Скан-код (англ. scan code) — в IBM-сумісних комп'ютерах код, наданий кожній клавіші, за допомогою якого драйвер клавіатури розпізнає, яка клавіша була натиснута. При натисканні будь-якої клавіші контролер клавіатури розпізнає клавішу та надсилає її скан-код у порт 60h. При відпусканні клавіші контролер клавіатури застарілого формату IBM PC/XT посилає в той же порт скан-код, збільшений на 80h, а нового формату IBM PC/AT - два байти: F0h і скан-код (скан-коди клавіатури AT також відрізняються від XT див. таблицю). Деякі клавіші генерують не один, а кілька скан-кодів (так, праві Alt, Ctrl, ⮨ Enter, обидві Win, а також ≣ Menu, Insert, Delete, Page Up, Page Down, Home, End, стрілки та всі ACPI- і мультимедіа-клавіші генерують два скан-код, перший з яких - E0, клавіша PrtScr генерує 4 скан-коду, а клавіша Pause - навіть 6 скан-кодів). Кожен байт, записаний у порт 60h, генерує апаратне переривання int 09h.
Скан-коди жорстко прив'язані до кожної клавіші на апаратному рівні і не залежать від стану індикаторів ⇪ Caps Lock, Num Lock і Scroll Lock, ні від стану керуючих клавіш.
Esc 27 |
F1 112 |
F2 113 |
F3 114 |
F4 115 |
F5 116 |
F6 117 |
F7 118 |
F8 119 |
F9 120 |
F10 121 |
F11 122 |
F12 123 |
Print Scr |
Scroll 145 |
Break 19 |
|||||
~ 192 |
1 49 |
2 50 |
3 51 |
4 52 |
5 53 |
6 54 |
7 55 |
8 56 |
9 57 |
0 58 |
- 189 |
= 187 |
Back 8 |
Ins 45 |
Home 36 |
PgUp 33 |
Num 144 |
/ 111 |
* 106 |
- 109 |
Tab 9 |
Q 81 |
W 87 |
E 69 |
R 82 |
T 84 |
Y 89 |
U 85 |
I 73 |
O 79 |
P 80 |
[ 219 |
] 221 |
\ 220 |
Del 46 |
End 35 |
PgDn 34 |
7 103 |
8 104 |
9 105 |
+ 107 |
Caps 20 |
A 65 |
S 83 |
D 68 |
F 70 |
G 71 |
H 72 |
J 74 |
K 75 |
L 76 |
; 186 |
' 222 |
Enter 13 |
4 100 |
5 101 |
6 102 |
|||||
Shift 16 |
Z 90 |
X 80 |
C 67 |
V 86 |
B 66 |
N 78 |
M 77 |
, 188 |
. 190 |
/ 191 |
Shift 16 |
Up 38 |
1 97 |
2 98 |
3 99 |
Enter 13 |
||||
Ctrl 17 |
Win 91 |
Alt | Space 32 |
Alt | Win 92 |
App 93 |
Ctrl 17 |
Left 37 |
Down 40 |
Right 39 |
0 96 |
. 110 |