Скан-код

Поделись знанием:
Перейти к: навигация, поиск

Скан-код (англ. 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 3B 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

<imagemap>: неверное или отсутствующее изображение

Ins Home PgUp NumLk / *
Del End PgDn 7 8 9 +
4 5 6
1 2 3 Ent
0 ,

Напишите отзыв о статье "Скан-код"

Ссылки

  • [www.rsdn.ru/article/asm/keyboard.xml Непосредственная работа с клавиатурой] RSDN
  • [www.computer-engineering.org/ps2keyboard/scancodes1.html Keyboard Scan Codes (XT)]
  • [www.computer-engineering.org/ps2keyboard/scancodes2.html Keyboard Scan Codes (AT)]
  • [www.did.ru/interes/7.html Стандартная клавиатура. Описание]
  • [www.ntlib.chat.ru/ware/tables/scan.htm Скан-коды клавиатуры]

Отрывок, характеризующий Скан-код

Анна Михайловна посмотрела на Веру и остановилась. Графиня пожала руку своему другу.
– Вера, – сказала графиня, обращаясь к старшей дочери, очевидно, нелюбимой. – Как у вас ни на что понятия нет? Разве ты не чувствуешь, что ты здесь лишняя? Поди к сестрам, или…
Красивая Вера презрительно улыбнулась, видимо не чувствуя ни малейшего оскорбления.
– Ежели бы вы мне сказали давно, маменька, я бы тотчас ушла, – сказала она, и пошла в свою комнату.
Но, проходя мимо диванной, она заметила, что в ней у двух окошек симметрично сидели две пары. Она остановилась и презрительно улыбнулась. Соня сидела близко подле Николая, который переписывал ей стихи, в первый раз сочиненные им. Борис с Наташей сидели у другого окна и замолчали, когда вошла Вера. Соня и Наташа с виноватыми и счастливыми лицами взглянули на Веру.
Весело и трогательно было смотреть на этих влюбленных девочек, но вид их, очевидно, не возбуждал в Вере приятного чувства.
– Сколько раз я вас просила, – сказала она, – не брать моих вещей, у вас есть своя комната.
Она взяла от Николая чернильницу.
– Сейчас, сейчас, – сказал он, мокая перо.
– Вы всё умеете делать не во время, – сказала Вера. – То прибежали в гостиную, так что всем совестно сделалось за вас.
Несмотря на то, или именно потому, что сказанное ею было совершенно справедливо, никто ей не отвечал, и все четверо только переглядывались между собой. Она медлила в комнате с чернильницей в руке.
– И какие могут быть в ваши года секреты между Наташей и Борисом и между вами, – всё одни глупости!
– Ну, что тебе за дело, Вера? – тихеньким голоском, заступнически проговорила Наташа.
Она, видимо, была ко всем еще более, чем всегда, в этот день добра и ласкова.
– Очень глупо, – сказала Вера, – мне совестно за вас. Что за секреты?…
– У каждого свои секреты. Мы тебя с Бергом не трогаем, – сказала Наташа разгорячаясь.
– Я думаю, не трогаете, – сказала Вера, – потому что в моих поступках никогда ничего не может быть дурного. А вот я маменьке скажу, как ты с Борисом обходишься.
– Наталья Ильинишна очень хорошо со мной обходится, – сказал Борис. – Я не могу жаловаться, – сказал он.
– Оставьте, Борис, вы такой дипломат (слово дипломат было в большом ходу у детей в том особом значении, какое они придавали этому слову); даже скучно, – сказала Наташа оскорбленным, дрожащим голосом. – За что она ко мне пристает? Ты этого никогда не поймешь, – сказала она, обращаясь к Вере, – потому что ты никогда никого не любила; у тебя сердца нет, ты только madame de Genlis [мадам Жанлис] (это прозвище, считавшееся очень обидным, было дано Вере Николаем), и твое первое удовольствие – делать неприятности другим. Ты кокетничай с Бергом, сколько хочешь, – проговорила она скоро.
– Да уж я верно не стану перед гостями бегать за молодым человеком…
– Ну, добилась своего, – вмешался Николай, – наговорила всем неприятностей, расстроила всех. Пойдемте в детскую.
Все четверо, как спугнутая стая птиц, поднялись и пошли из комнаты.
– Мне наговорили неприятностей, а я никому ничего, – сказала Вера.
– Madame de Genlis! Madame de Genlis! – проговорили смеющиеся голоса из за двери.
Красивая Вера, производившая на всех такое раздражающее, неприятное действие, улыбнулась и видимо не затронутая тем, что ей было сказано, подошла к зеркалу и оправила шарф и прическу. Глядя на свое красивое лицо, она стала, повидимому, еще холоднее и спокойнее.

В гостиной продолжался разговор.
– Ah! chere, – говорила графиня, – и в моей жизни tout n'est pas rose. Разве я не вижу, что du train, que nous allons, [не всё розы. – при нашем образе жизни,] нашего состояния нам не надолго! И всё это клуб, и его доброта. В деревне мы живем, разве мы отдыхаем? Театры, охоты и Бог знает что. Да что обо мне говорить! Ну, как же ты это всё устроила? Я часто на тебя удивляюсь, Annette, как это ты, в свои годы, скачешь в повозке одна, в Москву, в Петербург, ко всем министрам, ко всей знати, со всеми умеешь обойтись, удивляюсь! Ну, как же это устроилось? Вот я ничего этого не умею.
– Ах, душа моя! – отвечала княгиня Анна Михайловна. – Не дай Бог тебе узнать, как тяжело остаться вдовой без подпоры и с сыном, которого любишь до обожания. Всему научишься, – продолжала она с некоторою гордостью. – Процесс мой меня научил. Ежели мне нужно видеть кого нибудь из этих тузов, я пишу записку: «princesse une telle [княгиня такая то] желает видеть такого то» и еду сама на извозчике хоть два, хоть три раза, хоть четыре, до тех пор, пока не добьюсь того, что мне надо. Мне всё равно, что бы обо мне ни думали.
– Ну, как же, кого ты просила о Бореньке? – спросила графиня. – Ведь вот твой уже офицер гвардии, а Николушка идет юнкером. Некому похлопотать. Ты кого просила?
– Князя Василия. Он был очень мил. Сейчас на всё согласился, доложил государю, – говорила княгиня Анна Михайловна с восторгом, совершенно забыв всё унижение, через которое она прошла для достижения своей цели.
– Что он постарел, князь Василий? – спросила графиня. – Я его не видала с наших театров у Румянцевых. И думаю, забыл про меня. Il me faisait la cour, [Он за мной волочился,] – вспомнила графиня с улыбкой.
– Всё такой же, – отвечала Анна Михайловна, – любезен, рассыпается. Les grandeurs ne lui ont pas touriene la tete du tout. [Высокое положение не вскружило ему головы нисколько.] «Я жалею, что слишком мало могу вам сделать, милая княгиня, – он мне говорит, – приказывайте». Нет, он славный человек и родной прекрасный. Но ты знаешь, Nathalieie, мою любовь к сыну. Я не знаю, чего я не сделала бы для его счастья. А обстоятельства мои до того дурны, – продолжала Анна Михайловна с грустью и понижая голос, – до того дурны, что я теперь в самом ужасном положении. Мой несчастный процесс съедает всё, что я имею, и не подвигается. У меня нет, можешь себе представить, a la lettre [буквально] нет гривенника денег, и я не знаю, на что обмундировать Бориса. – Она вынула платок и заплакала. – Мне нужно пятьсот рублей, а у меня одна двадцатипятирублевая бумажка. Я в таком положении… Одна моя надежда теперь на графа Кирилла Владимировича Безухова. Ежели он не захочет поддержать своего крестника, – ведь он крестил Борю, – и назначить ему что нибудь на содержание, то все мои хлопоты пропадут: мне не на что будет обмундировать его.