Скан-код

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Скан-код (англ. scan code) — в IBM-совместимых компьютерах код, присвоенный каждой клавише, с помощью которого драйвер клавиатуры распознает, какая клавиша была нажата. При нажатии любой клавиши контроллер клавиатуры распознаёт клавишу и посылает её скан-код в порт 60h. При отпускании клавиши контроллер клавиатуры устаревшего формата IBM PC/XT посылает в тот же порт скан-код, увеличенный на 80h, а более нового формата IBM PC/AT — два байта: F0h и скан-код (скан-коды клавиатуры AT также отличаются от XT, см. таблицу). Некоторые клавиши генерируют не один, а несколько скан-кодов (так, правые ⇧ Shift, Alt, Ctrl, обе 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, ни от состояния управляющих клавиш (⇧ Shift, Alt, Ctrl).

Скан-коды клавиш[править | править код]

Все скан-коды ниже даются в шестнадцатеричной системе.

Большинство скан-кодов на XT-клавиатуре соответствуют физическому местоположению клавиш, начиная с клавиш Esc (код 01) и цифровых клавиш 1-9 (коды 02-0A). К примеру, клавиши второго ряда (Tab ↹ Q W E R T Y U I O P [ ] ↵ Enter) имеют последовательные скан-коды 0F-1C (15-28 в десятичной системе).

На клавиатурах другой раскладки (например, AZERTY) скан-коды соответствуют расположению клавиш: так, у французского A скан-код как у американского Q. Преобразованием скан-кодов в коды нажатых клавиш занимается ОС или BIOS.

Клавиша Код нажатия XT Код отпускания XT Код нажатия AT Код отпускания AT
Основная клавиатура
A 1E 9E 1C F0,1C
B 30 B0 32 F0,32
C 2E AE 21 F0,21
D 20 A0 23 F0,23
E 12 92 24 F0,24
F 21 A1 2B F0,2B
G 22 A2 34 F0,34
H 23 A3 33 F0,33
I 17 97 43 F0,43
J 24 A4 38 F0,3B
K 25 A5 42 F0,42
L 26 A6 4B F0,4B
M 32 B2 3A F0,3A
N 31 B1 31 F0,31
O 18 98 44 F0,44
P 19 99 4D F0,4D
Q 10 90 15 F0,15
R 13 93 2D F0,2D
S 1F 9F 1B F0,1B
T 14 94 2C F0,2C
U 16 96 3C F0,3C
V 2F AF 2A F0,2A
W 11 91 1D F0,1D
X 2D AD 22 F0,22
Y 15 95 35 F0,35
Z 2C AC 1A F0,1A
0 0B 8B 45 F0,45
1 02 82 16 F0,16
2 03 83 1E F0,1E
3 04 84 26 F0,26
4 05 85 25 F0,25
5 06 86 2E F0,2E
6 07 87 36 F0,36
7 08 88 3D F0,3D
8 09 89 3E F0,3E
9 0A 8A 46 F0,46
~ 29 89 0E F0,0E
- 0C 8C 4E F0,4E
= 0D 82 55 F0,55
\ 2B AB 5D F0,5D
[ 1A 9A 54 F0,54
] 1B 9B 5B F0,5B
; 27 A7 4C F0,4C
' 28 A8 52 F0,52
, 33 B3 41 F0,41
. 34 B4 49 F0,49
/ 35 B5 4A F0,4A
BS 0E 8E 66 F0,66
Space 39 B9 29 F0,29
Tab ↹ 0F 8F 0D F0,0D
⇪ Caps Lock 3A BA 58 F0,58
Левый ⇧ Shift 2A AA 12 F0,12
Левый Ctrl 1D 9D 14 F0,14
Левый Alt 38 B8 11 F0,11
Левый Win E0,5B E0,DB E0,1F E0,F0,1F
Правый ⇧ Shift 36 B6 59 F0,59
Правый Ctrl E0,1D E0,9D E0,14 E0,F0,14
Правый Alt E0,38 E0,B8 E0,11 E0,F0,11
Правый Win E0,5C E0,DC E0,27 E0,F0,27
≣ Menu E0,5D E0,DD E0,2F E0,F0,2F
↵ Enter 1C 9C 5A F0,5A
Esc 01 81 76 F0,76
F1 3B BB 05 F0,05
F2 3C BC 06 F0,06
F3 3D BD 04 F0,04
F4 3E BE 0C F0,0C
F5 3F BF 03 F0,03
F6 40 C0 0B F0,0B
F7 41 C1 83 F0,83
F8 42 C2 0A F0,0A
F9 43 C3 01 F0,01
F10 44 C4 09 F0,09
F11 57 D7 78 F0,78
F12 58 D8 07 F0,07
PrtScr E0,2A,E0,37 E0,B7,E0,AA E0,12,E0,7C E0,F0,7C,E0,F0,12
Scroll Lock 46 C6 7E F0,7E
Pause E1,1D,45, E1,9D,C5 E1,14,77,E1,F0,14,F0,77
Insert E0,52 E0,D2 E0,70 E0,F0,70
Home E0,47 E0,C7 E0,6C E0,F0,6C
End E0,4F E0,CF E0,69 E0,F0,69
Page Up E0,49 E0,C9 E0,7D E0,F0,7D
Page Down E0,51 E0,D1 E0,7A E0,F0,7A
Delete E0,53 E0,D3 E0,71 E0,F0,71
E0,48 E0,C8 E0,75 E0,F0,75
E0,4B E0,CB E0,6B E0,F0,6B
E0,50 E0,D0 E0,72 E0,F0,70
E0,4D E0,CD E0,74 E0,F0,74
Цифровая клавиатура
Num Lock 45 C5 77 F0,77
/ E0,35 E0,B5 E0,4A E0,F0,4A
* 37 B7 7C F0,7C
- 4A CA 7B F0,7B
+ 4E CE 79 F0,79
↵ Enter E0,1C E0,9C E0,5A E0,F0,5A
. 53 D3 71 F0,71
0 52 D2 70 F0,70
1 4F CF 69 F0,69
2 50 D0 72 F0,72
3 51 D1 7A F0,7A
4 4B CB 6B F0,6B
5 4C CC 73 F0,73
6 4D CD 74 F0,74
7 47 C7 6C F0,6C
8 48 C8 75 F0,75
9 49 C9 7D F0,7D
Клавиши ACPI
Power E0,5E E0,DE E0,37 E0,F0,37
Sleep E0,5F E0,DF E0,3F E0,F0,3F
Wake E0,63 E0,E3 E0,5E E0,F0,5E
Мультимедиа клавиши
Управление проигрывателем
Следующий трек E0,19 E0, 99 E0, 4D E0,F0,4D
Предыдущий трек E0,10 E0, 90 E0,15 E0,F0,15
Остановить E0,24 E0,A4 E0,3B E0,F0,3B
Проигрывать/пауза E0,22 E0,A2 E0,34 E0,F0,3B
Звук вкл/откл E0,20 E0,A0 E0,23 E0,F0,23
Увеличить громкость E0,30 E0,B0 E0,32 E0,F0,32
Уменьшить громкость E0,2E E0,AE E0,21 E0,F0,21
Управление браузером
Поиск E0,65 E0,E5 E0,10 E0,F0,10
Домашняя страница E0,32 E0,B2 E0,3A E0,F0,3A
Назад E0,6A E0,EA E0,38 E0,F0,38
Вперед E0,69 E0,E9 E0,30 E0,F0,30
Стоп E0,68 E0, E8 E0,28 E0,F0,28
Обновить E0,67 E0,E7 E0,20 E0,F0,20
Закладки E0,66 E0, E6 E0,18 E0,F0,18
Управление приложениями
Media Select E0,6D E0,ED E0,50 E0,F0,50
Электронная почта E0,6C E0,EC E0,48 E0,F0,48
Калькулятор E0,21 E0,A1 E0,2B E0,F0,2B
Мой компьютер E0,6B E0,EB E0,40 E0,F0,40

Коды клавиш , , , могут содержать кроме указанного в таблице дополнительно: E0,2A - при нажатии, E0,AA - при отпускании.

См. также[править | править код]

Раскладка 105-клавишной клавиатуры IBM/Windows
Esc F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 PrtSc
SysRq
Scroll
Lock
Pause
Break
ТильдаВосклицательный знак@КавычкиЗнак решёткиЗнак номераСимвол доллараТочка с запятойЗнак процентаЦиркумфлексДвоеточиеАмперсандВопросительный знакЗвёздочка (типографика)Круглые скобкиКруглые скобкиПодчёркиваниеСложениеBackspaceМашинописный обратный апострофЁ (кириллица)1 (цифра)2 (цифра)3 (цифра)4 (цифра)5 (цифра)6 (цифра)7 (цифра)8 (цифра)9 (цифра)0 (цифра)ДефисЗнак равенстваBackspaceТабуляцияQWE (латиница)RT (латиница)Y (латиница)UI (латиница)O (латиница)P (латиница)Фигурные скобкиФигурные скобкиКлавиша вводаТабуляцияЙЦУ (кириллица)К (кириллица)Е (кириллица)Н (кириллица)ГШЩЗКвадратные скобкиХ (кириллица)Квадратные скобкиЪКлавиша вводаCaps LockA (латиница)SDFGH (латиница)JK (латиница)LДвоеточиеКавычкиВертикальная чертаКосая чертаКлавиша вводаCaps LockФЫВ (кириллица)А (кириллица)ПР (кириллица)О (кириллица)ЛДТочка с запятойЖМашинописный апострофЭОбратная косая чертаВвод (клавиша)ShiftВертикальная чертаZX (латиница)C (латиница)VB (латиница)NM (латиница)Угловые скобкиУгловые скобкиВопросительный знакЗапятаяShiftShiftОбратная косая чертаЯЧС (кириллица)М (кириллица)ИТ (кириллица)ЬЗапятаяБТочка (знак препинания)ЮКосая чертаТочка (знак препинания)ShiftCtrlWindows (клавиша)AltПробелAlt GrWindows (клавиша)Menu (клавиша)CtrlKB Eng-Rus QWERTY(ЙЦУКЕН).svg
Ins Home PgUp NumLk / *
Del End PgDn 7 8 9 +
4 5 6
1 2 3 Ent
0 ,

Ссылки[править | править код]