Универсальный внешний накопитель для всех iOS-устройств, совместим с PC/Mac, Android
Header Banner
8 800 100 5771 | +7 495 540 4266
c 9:00 до 24:00 пн-пт | c 10:00 до 18:00 сб
0 Comments

Содержание

Ремаппинг клавиш на клавиатуре / Хабр


Всю свою жизнь был фанатом бесшумных, тонких, и красивых клавиатур и к моему удивлению обнаружил что таковых не так уж и много, из доступных в свободной продаже, — их единицы. Пришлось пользоваться «Genius SlimStar Pro», и все равно она меня угнетала, как и мысль о том, что я никогда не найду клавиатуру которая бы удовлетворяла меня на все 100%. Я такую нашел и по рекомендации товарища Boomburum, приобрел “Illuminated Keyboard“, которая стала достойной подругой моей “MX Revolution“, и я окончательно порвал отношения с Genius, а последние рассказы о поддержке пользователей со стороны Logitech, убедили меня, что вложенные (не малые деньги) себя оправдают за 3 гарантийных года.

Но есть небольшая беда в клавиатурах этой компании, — “Не стандартные, не удобные, или не нужные расположения некоторых кнопок“. В случае с Illuminated, это две одинаковые кнопки “\”, левая из которых пошла в ущерб клавише «LShift», Кстати на картинке вы можете заметить что раньше эти клавиатуры имели стандартный размер «LShift». Под катом, я расскажу как вернуть «стандартную длину» этой кнопки, так как в слепой печати и в силу привычки, я нажимаю именно / вместо шифта. А заодно расскажу как без дополнительного установленного ПО, на примере, вы сможете менять назначения любых клавиш ваших клавиатур (в том числе и функциональных/медийных) при помощи Реестра и Скан-кода клавиш.


Спецификация для Windows.
При нажатии любой клавиши контроллер клавиатуры вырабатывает скан-код, соответствующей позиции клавиши, который передаются в компьютер. Служебные коды, которые может вырабатывать контроллер клавиатуры, передаются для обработки подпрограммам BIOS. В буфере клавиатуры для кода клавиши отводится по 2 байта, т. е. он рассчитан на 16 символов.
Узнать Скан-код необходимой для ремаппинга клавиши вы можете здесь, а если у вас супер новая клавиатура с кнопками космического происхождения, то отловить скан-код вы можете используя программу “KeyboardTest” от разработчика Passmark Software. Программка платная, но бесплатным триалом. Или OpenSource Программу SharpKeys. Она потребовалась для определения скан-кода левой “\”, так как многие наивно полагали что сигналы у обеих одинаковые, а значит и не подлежат ремаппингу. На деле оказалось не так.
Правый “\” имеет скан-код: 2b.00
Левый нижний “\” имеет скан-код: 56.00

И так, мы определили скан-код нашей незадачливой кнопки, теперь нам нужно найти скан-код «LShift». Его можно найти по данной выше ссылке и он равен: 2A.00


Есть куча приложений которые делают этот ремаппинг, многие за базу принимают существующие скан-коды, многие не имеют сканера, что бы определить скан-код клавиши которой нет в базе. Да и устанавливать лишнее приложение очень не хотелось. По-гуглив я остановился на возможностях Windows. а точнее редактора реестра (Пуск-Выполнить: regedit). Или вышеупомянутую программу SharpKeys, которая имеет GUI и выполняет такую же замену в реестре

1. В ветке
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout
создайте бинарный параметр с именем “Scancode Map
2. В параметр «Scancode Map» записываем следующие значения:
00.00.00.00.00.00.00.00.02 — девятый байт (02) в этой записи означает количество клавиш которое мы будем менять (и равен количеству клавиш +1) в нашем случае это 02, так как мы меняем значения одной клавиши. После этого вписываем еще три «пустых» байта, и теперь наш параметр выглядит так:
00.00.00.00.00.00.00.00.02.00.00.00.
Поскольку мы уже определили все Скан-коды, то продолжая наш параметр, нам следует указать скан-код значения новой кнопки (в нашем случае это 2A.00), а затем скан-код старой (заменяемой) кнопки 56.00. Теперь необходимо закрыть эту функцию четырьмя «пустыми» байтами, то есть 00.00.00.00:

3. Перезагружаем компьютер и пользуемся нашими новыми кнопками.

PS: Если нужно сделать ремаппинг не на всем ПК, а только в вашем сеансе, то значения необходимо менять в HKEY_CURRENT_USER\SYSTEM\CurrentControlSet\Control\Keyboard Layout

UPD: Если вы боитесь работать в реесте, то создайте текстовый файл с расширением *.reg, и впишите туда следующее:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,2a,00,56,00,00,00,00,00

затем сохраните, запустите, и перезагрузите ПК.

UPD2: Перенос Скриншотов на
1. Левый Win-key выглядит так:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,37,E0,5B,E0,00,00,00,00

Правый Win-key выглядит так:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]

"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,37,E0,5C,E0,00,00,00,00

К вопросу оценки ПЭМИН цифровых сигналов. Клавиатуры.

К вопросу оценки ПЭМИН цифровых сигналов. Клавиатуры.

Автор: Кондратьев А.В.

Следующим типовым устройством ПЭВМ, вроде бы и несложным, но доставляющим, порою, хлопоты исследователю, является клавиатура.

В общем-то устройство несложное. Особенно ноне уже устаревшие модели, подключаемые к порту PS/2. Как показывают многочисленные экспериментальные данные микросхема управления «клавы» сканирует нажатия клавиш и передаёт в последовательном коде в порт. Тактовая частота этой передачи кратна (в подавляющем числе случаев) » 6,3 или 10 кГц. Хотя автору попались в самые последние года пара экземпляров, тактовая частота которых лежала в районе 20 кГц.

Все клавиатуры при нажатии и удерживании любой клавиши начинают (после некоторой паузы) повторять передачу кода клавиши «до бесконечности». В обычном режиме это, как правило, через несколько секунд приводит к переполнению буфера контроллера и нарушению работы. Появляется звуковой сигнал системного «динамика» – «писк». Суть тест-режима (самого общепринятого) заключается в блокировании команды переполнения буфера, что позволяет, при нажатой клавише, обеспечить бесконечную передачу по кабелю «клавы» выбранного символа.

Как и всегда, для правильного последующего расчёта результата, необходимо создать постоянное чередование импульсов в кодовом пакете. Для кодов клавиатуры таких комбинаций может существовать две:

10101010 (55) клавиша « +; = »

01010101 (АА) в типовых таблицах – не применяется

Общая таблица скан-кодов приведена в таблице 14.1

Таблица 14.1 – Скан-коды клавиатуры

Клавиша

Скан-код

Клавиша

Скан-код

Клавиша

Скан-код

Клавиша

Скан-код

1

16

2

1E

3

26

4

25

5

2E

6

36

7

3D

8

3E

9

46

0

45

4E

+

55

Backspace

66

Tab

0D

Q

15

W

1D

E

24

R

2D

T

2C

Y

35

U

3C

I

43

O

44

P

4d

[

54

]

5B

Enter

5A

Ctrl(L)

14

A

1C

S

1B

D

23

F

2B

G

34

H

33

J

3B

K

42

L

4B

;

4C

52

`

0E

Shift(L)

12

\

61

Z

1A

X

22

C

21

V

2A

B

32

N

31

M

3A

,

41

.

49

/

4A

Shift(R)

59

Alt(L)

11

Space

29

Caps Lock

58

Esc

76

F1

05

F2

06

F3

04

F4

0C

F5

03

F6

0B

F7

83

F8

0A

F9

01

F10

09

F11

78

F12

07

Scroll Lock

7E

*[numpad]

7C

Num Lock

77

7[numpad]

6C

8[numpad]

75

9[numpad]

7D

-[numpad]

7B

4[numpad]

6B

5[numpad]

73

6[numpad]

74

+[numpad]

5A

1[numpad]

69

2[numpad]

72

3[numpad]

7A

0[numpad]

70

.[numpad]

71

Alr(R)

E0-11

Ctrl(R)

E0-14

Print Screen

E0-12-E0-7C

Insert

E0-70

Delete

E0-71

Left

E0-6B

Home

E0-6C

End

E0-69

Up

E0-75

Down

E0-72

PageUp

E0-7D

PageDown

E0-7A

Right

E0-74

Enter[numpad]

E0-5A

/[numpad]

E0-4A

Таким образом, при реализации тест-режима и, например, положенном на клавишу «+» грузике в кабеле «клавы» будет присутствовать бесконечная последовательность пакетов импульсов. При этом период следования импульсов в пакете (то есть тактовая частота), будет равна 6,10 или 20 кГц, а частота следования пакетов будет много ниже. Формат данных приведён на рисунке 14.1

Для обмена данными в кабеле клавиатуры служат две линии – KBData и KBSync. При передаче скан-кодов клавиатура выставляет очередной разряд данных на линии KBData и подтверждает передачу переводом из «1» в «0» сигнала на линии KBSync.

Контроллер может сигнализировать о своей неготовности передавать/принимать данные низким уровнем на линии KBSync. Все остальное время, когда нет данных для передачи, обе линии имеют высокий уровень сигнала.

ris14-1-2.jpg

ris14-3.jpg

Как следует из вышеприведённого, в спектре ПЭМИН кабеля клавиатуры следует ожидать частотных составляющих с тактовой частотой 1/76,04·10-6=13,15 кГц. Причём из-за наличия двух, сдвинутых по фазе, сигналов с разными (но кратными!) периодами, чётные и нечётные частотные составляющие будут отличаться по амплитуде.

Как и следует ожидать, ПЭМИН линии синхроданных неинформативен, в принципе. Но отличить один ПЭМИН от другого совсем непросто. Кабель один, сигналы синхронны…

Практически единственный способ – подобрать скан-код с минимальным числом логических «1» в посылке. Таковыми являются клавиши «F3» и F9» (03 и 01 в hex-коде). Код «00» не используется.

Осциллограмма скан-кода «F3» приведена ниже.

ris14-4.jpg

Строго «по энергетике», если измерить все частотные составляющие ПЭМИН с кодом «=» и, например, кодом «F9», то разность в показаниях приёмника на КАЖДОЙ из частотных составляющих и есть истинно информационная часть энергии ПЭМИН. Причём это максимум максиморум. Работа достаточно сложная и утомительная, если нет возможности поручить её «автомату». Сами-то составляющие ПЭМИН для столь низких частот выявляются не без труда. Так ещё и разности «ловить»…

ris14-5.jpg

ris14-6-7.jpg

В практике СИ, в подавляющем числе случаев, просто измеряют уровни ПЭМИН (ничего не вычитая) и считают параметр защищённости. Можно и так, «с запасом», но знать истинное положение дел специалист обязан.

В заключение рассмотрения – «распиновка» разъемов AT- и PS/2-клавиатуры.

ris14-7-8.jpg

«Картинки» на приёмнике выглядит далеко не так «классически», однако и он вполне узнаваем. Вот примеры

ris14-9.jpg

ris14-10.jpg

На спектре хорошо видно возрастание амплитуды компонент с уменьшением частоты.

Есть ещё особенности измерений «клавы» в этой частотной области (от десятков кГц и далее). Дело в том, что клавиатура, в обычном размещении, находится неподалеку от системного блока. А в верхней части СБ находится импульсный блок питания – мощнейший источник ПЭМИН и по «Е», и по «Н» компонентам. В «свете» такого театрального софита, тускловатый «свет» клавиатуры узреть – особое искусство! Поэтому предлагаю следующий приём. Отодвиньте «клаву» от СБ как можно дальше. Лучше – на удлинителе PS/2. Эдак метра на 2-2,5.

Разместите антенну так, чтобы на неё наводилось как можно меньше от СБ (сигнал, при полосе приёмника больше 10 кГц – сплошной спектр). И вот около так сориентированной, неподвижной антенны, начинайте крутить «клаву» и её кабель (не наоборот!). Тогда у Вас будет много больше шансов обнаружить сигналы ПЭМИН именно клавиатуры, увидеть компоненты ПЭМИН на экране анализатора воочую.

Всё вышеизложенное относилось к клавиатуре с интерфейсом PS/2. Но сейчас их массово заменяют клавиатуры с интерфейсом USB.

Вообще этот интерфейс достаточно подробно рассматривался совместно с принтерами. Однако будет нелишним дать некоторое «целеуказание» и относительно клавиатуры.

Вспомним построение пакетов для интерфейса USB, учитывая, что клавиатура подключается, строго, с low-speed (то есть, фактически по интерфейсу USB 1.0).

Максимальный размер полезной нагрузки DATA (payload) для low-speed устройств составляет 8 байт. То есть это, как раз, то, что требует скан-код клавиатуры.

Увидеть сигнал (именно данные) в линии USB оказалось не такой уж простой задачей. Тем не менее – вот что выявилось именно в кабеле типовой USB «клавы» модели GENIUS KB-06XE, конкретно в линии (проводе) «data +» (рисунок 14.10)

ris14-10.jpg

Эти две осциллограммы меняют друг друга с неустановленной (хаотической) периодичностью, причём «картинки» сигналов не зависят от нажатой клавиши клавиатуры (или ненажатой никакой). Никаких иных изменений в «переменной» части пакета (фрейма) выявить не удалось.

Периодичность следования этих пакетов жёстко стабилизирована (рис. 14.11), а длительность каждого составляет (видно на осциллограммах) около 34 ±1 мкс.

ris14-11.jpg

Пакеты следуют каждые 4 мс. Однако необходимо отметить, что окончание каждого пакета всё время «дрожит», причём заметно, классический «джиттер». Поэтому спектральная картинка несколько размыта и становится чёткой лишь при достаточно длительном усреднении.

ris14-12.jpg

Кроме того, следует учитывать, что из-за разных периодов следования импульсов и разной их длительности спектр носит характер некоторой смеси из спектра сплошного и линейчаатого. Тем не менее лепестковый характер спектра, естественный для бесконечной последовательности пакетов и кратный в своих «лепестках» средней длительности пакета, сохраняется весьма наглядно. Только «нули» функции сглажены джиттером и неременным периодом следования отдельных импульсов. Однако сама картинка вполне характерна. При более тонком частотном разрешении спектр начинает разрешаться на «линии», обусловленные частотой следования пакетов (250 Гц) (рис. 14.13)Таким образом, при простейшем и незасинхронизованном с истинной передачей скан-кода просмотре осциллограмм, выявить и визуализовать участки фрейма (пакета), отвечающий за передачу данных, не удалось. Тем не менее, можно утверждать, что ПЭМИН кабеля клавиатуры всё равно будет вот такой и никакой другой. Понятно, на каких частотах его искать, понятно, что он будет носить характер сплошного (во всяком случае, при частотном разрешении приёмника более 0,3 кГц). И понятно, какую величину подставлять при расчётах в качестве тактовой (минимальный период импульсов в пакете в эксперименте составил 1,322 мкс). Измерить это, при любых СИ, имея осциллограф, хотя бы с 200 МГц полосой – задача тривиальная. Тест-режим, по сути – любой, можно нажимать клавиши (любые), можно не нажимать ничего. Пакеты по интерфейсу передаются всё равно. И, в первом приближении, считаем их информативными (пока не доказано обратное).

ris14-13.jpg

Приведённые осциллограммы и спектры получены с помощью осциллографа АКИП-4108/2, подключённому к тому же компьютеру, на котором выполнялись измерения (надо заметить – весьма функциональный повтор разработки фирмы «PICO Technology» нашими. Не хуже китайцев 🙂 ) .

Спектр явно уходит далеко за 1 МГц (больше не позволил осциллограф, а подключать анализатор большого смысла не было). Остальное обусловлено уже кабелем, как случайной антенной и степенью его экранирования.

Для иных режимов интерфейса USB нужен уже осциллограф с полосою в многие ГГц.

Как именно считать сплошной спектр и, при этом, остаться в рамках действующих НМД – разговор отдельный и не для открытого обсуждения, увы… Однако в последующих публикациях придётся к нему вернуться, деваться некуда. Попытаюсь «остаться в рамках дозволенного»…

код – это… Что такое Скан-код?

Скан-код — код, присвоенный каждой клавише, с помощью которого драйвер клавиатуры распознает, какая клавиша была нажата. При нажатии любой клавиши контроллер клавиатуры распознаёт клавишу и посылает её скан-код в порт 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-09). К примеру, клавиши второго ряда ( Tab ⇆   Q   W   E   R   T   Y   U   I   O   P   [   ]   ↵ Enter ) имеют последовательные скан-коды 0F-1C (15-28 в десятичной системе).

КлавишаКод нажатия XTКод отпускания XTКод нажатия ATКод отпускания AT
Основная клавиатура
 A 1E9E1CF0,1C
 B 30B032F0,32
 C 2EAE21F0,21
 D 20A023F0,23
 E 129224F0,24
 F 21A12BF0,2B
 G 22A234F0,34
 H 23A333F0,33
 I 179743F0,43
 J 24A43BF0,3B
 K 25A542F0,42
 L 26A64BF0,4B
 M 32B23AF0,3A
 N 31B131F0,31
 O 189844F0,44
 P 19994DF0,4D
 Q 109015F0,15
 R 13932DF0,2D
 S 1F9F1BF0,1B
 T 14942CF0,2C
 U 16963CF0,3C
 V 2FAF2AF0,2A
 W 11911DF0,1D
 X 2DAD22F0,22
 Y 159535F0,35
 Z 2CAC1AF0,1A
 0 0B8B45F0,45
 1 028216F0,16
 2 03831EF0,1E
 3 048426F0,26
 4 058525F0,25
 5 06862EF0,2E
 6 078736F0,36
 7 08883DF0,3D
 8 09893EF0,3E
 9 0A8A46F0,46
 ~ 29890EF0,0E
 - 0C8C4EF0,4E
 = 0D8255F0,55
 \ 2BAB5DF0,5D
 [ 1A9A54F0,54
 ] 1B9B5BF0,5B
 ; 27A74CF0,4C
 ' 28A852F0,52
 , 33B341F0,41
 . 34B449F0,49
 / 35B54AF0,4A
 ← Backspace 0E8E66F0,66
 Space 39B929F0,29
 Tab ⇆ 0F8F0DF0,0D
 Caps Lock 3ABA58F0,58
Левый  ⇧ Shift 2AAA12F0,12
Левый  Ctrl 1D9D14F0,14
Левый  Alt 38B811F0,11
Левый  Win E0,5BE0,DBE0,1FE0,F0,1F
Правый  ⇧ Shift 36B659F0,59
Правый  Ctrl E0,1DE0,9DE0,14E0,F0,14
Правый  Alt E0,38E0,B8E0,11E0,F0,11
Правый  Win E0,5CE0,DCE0,27E0,F0,27
 Menu E0,5DE0,DDE0,2FE0,F0,2F
 ↵ Enter 1C9C5AF0,5A
 Esc 018176F0,76
 F1 3BBB05F0,05
 F2 3CBC06F0,06
 F3 3DBD04F0,04
 F4 3EBE0CF0,0C
 F5 3FBF03F0,03
 F6 40C00BF0,0B
 F7 41C183F0,83
 F8 42C20AF0,0A
 F9 43C301F0,01
 F10 44C409F0,09
 F11 57D778F0,78
 F12 58D807F0,07
 PrtScr E0,2A,E0,37E0,B7,E0,AAE0,12,E0,7CE0,F0,7C,E0,F0,12
 Scroll Lock 46C67EF0,7E
 Pause E1,1D,45, E1,9D,C5E1,14,77,E1,F0,14,F0,77
 Insert E0,52E0,D2E0,70E0,F0,70
 Home 47C1E0,6CE0,F0,6C
 End E0,4FE0,CFE0,69E0,F0,69
 Page Up E0,49E0,C9E0,7DE0,F0,7D
 Page Down E0,51E0,D3E0,7AE0,F0,7A
 Delete E0,53E0,D3E0,71E0,F0,71
 ↑ E0,48E0,C8E0,75E0,F0,75
 ← E0,4BE0,CBE0,6BE0,F0,6B
 ↓ E0,5050,D0E0,70E0,F0,70
 → E0,4DE0,CDE0,74E0,F0,74
Цифровая клавиатура
 Num Lock 45C577F0,77
 / E0,35E0,B5E0,4AE0,F0,4A
 * 37B77CF0,7C
 - 4ACA7BF0,7B
 + 4ECE79F0,79
 ↵ Enter E0,1CE0,9CE0,5AE0,F0,5A
 . 53D371F0,71
 0 52D270F0,70
 1 4FCF69F0,69
 2 50D072F0,72
 3 51D17AF0,7A
 4 4BCB6BF0,6B
 5 4CCC73F0,73
 6 4DCD74F0,74
 7 47C76CF0,6C
 8 48C875F0,75
 9 49C97DF0,7D
Клавиши ACPI
 Power E0,5EE0,DEE0,37E0,F0,37
 Sleep E0,5FE0,DFE0,3FE0,F0,3F
 Wake E0,63E0,E3E0,5EE0,F0,5E
Мультимедиа клавиши
Управление проигрывателем
Следующий трекE0,19E0, 99E0, 4DE0,F0,4D
Предыдущий трекE0,10E0, 90E0,15E0,F0,15
ОстановитьE0,24E0,A4E0,3BE0,F0,3B
Проигрывать/паузаE0,22E0,A2E0,3BE0,F0,3B
Звук вкл/отклE0,20E0,A0E0,23E0,F0,23
Увеличить громкостьE0,30E0,B0E0,32E0,F0,32
Уменьшить громкостьE0,2EE0,AEE0,21E0,F0,21
Управление браузером
ПоискE0,65E0,E5E0,10E0,F0,10
Домашняя страницаE0,32E0,B2E0,3AE0,F0,3A
НазадE0,6AE0,EAE0,38E0,F0,38
ВпередE0,69E0,E9E0,30E0,F0,30
СтопE0,68E0, E8E0,28E0,F0,28
ОбновитьE0,67E0,E7E0,F0,20E0,F0,20
ЗакладкиE0,66E0, E6E0,18E0,F0,18
Управление приложениями
Media SelectE0,6DE0,EDE0,50E0,F0,50
Электронная почтаE0,6CE0,ECE0,48E0,F0,48
КалькуляторE0,21E0,A1E0,2BE0,F0,2B
Мой компьютерE0,6BE0,EBE0,40E0,F0,40

Cм. также

Ссылки

Скан-код — Википедия

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

Скан-код (англ. 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, ни от состояния управляющих клавиш (⇧ 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
Основная клавиатура
A1E9E1CF0,1C
B30B032F0,32
C2EAE21F0,21
D20A023F0,23
E129224F0,24
F21A12BF0,2B
G22A234F0,34
H23A333F0,33
I179743F0,43
J24A438F0,3B
K25A542F0,42
L26A64BF0,4B
M32B23AF0,3A
N31B131F0,31
O189844F0,44
P19994DF0,4D
Q109015F0,15
R13932DF0,2D
S1F9F1BF0,1B
T14942CF0,2C
U16963CF0,3C
V2FAF2AF0,2A
W11911DF0,1D
X2DAD22F0,22
Y159535F0,35
Z2CAC1AF0,1A
00B8B45F0,45
1028216F0,16
203831EF0,1E
3048426F0,26
4058525F0,25
506862EF0,2E
6078736F0,36
708883DF0,3D
809893EF0,3E
90A8A46F0,46
~29890EF0,0E
-0C8C4EF0,4E
=0D8255F0,55
\2BAB5DF0,5D
[1A9A54F0,54
]1B9B5BF0,5B
;27A74CF0,4C
'28A852F0,52
,33B341F0,41
.34B449F0,49
/35B54AF0,4A
BS0E8E66F0,66
Space39B929F0,29
Tab ↹0F8F0DF0,0D
⇪ Caps Lock3ABA58F0,58
Левый ⇧ Shift2AAA12F0,12
Левый Ctrl1D9D14F0,14
Левый Alt38B811F0,11
Левый ⊞ WinE0,5BE0,DBE0,1FE0,F0,1F
Правый ⇧ Shift36B659F0,59
Правый CtrlE0,1DE0,9DE0,14E0,F0,14
Правый AltE0,38E0,B8E0,11E0,F0,11
Правый ⊞ WinE0,5CE0,DCE0,27E0,F0,27
≣ MenuE0,5DE0,DDE0,2FE0,F0,2F
↵ Enter1C9C5AF0,5A
Esc018176F0,76
F13BBB05F0,05
F23CBC06F0,06
F33DBD04F0,04
F43EBE0CF0,0C
F53FBF03F0,03
F640C00BF0,0B
F741C183F0,83
F842C20AF0,0A
F943C301F0,01
F1044C409F0,09
F1157D778F0,78
F1258D807F0,07
PrtScrE0,2A,E0,37E0,B7,E0,AAE0,12,E0,7CE0,F0,7C,E0,F0,12
Alt+PrtScr54 (вместо PrtScr,

код для клавиши Alt

генерируется отдельно)

D4 (вместо PrtScr,

код для клавиши Alt

генерируется отдельно)

??
Ctrl+PrtScr,

⇧ Shift+PrtScr

(SysReq)

E0,37 (вместо PrtScr,

код для Ctrl или ⇧ Shift

генерируется отдельно)

E0,B7 (вместо PrtScr,

код для Ctrl или ⇧ Shift

генерируется отдельно)

??
Scroll Lock46C67EF0,7E
PauseE1,1D,45, E1,9D,C5E1,14,77, E1,F0,14,F0,77
Ctrl+Break

(Ctrl+Pause)

E0,46 (вместо Break,

код для клавиши Ctrl

генерируется отдельно)

E0,C6 (вместо Break,

код для клавиши Ctrl

генерируется отдельно)

??
InsertE0,52E0,D2E0,70E0,F0,70
HomeE0,47E0,C7E0,6CE0,F0,6C
EndE0,4FE0,CFE0,69E0,F0,69
Page UpE0,49E0,C9E0,7DE0,F0,7D
Page DownE0,51E0,D1E0,7AE0,F0,7A
DeleteE0,53E0,D3E0,71E0,F0,71
E0,48E0,C8E0,75E0,F0,75
E0,4BE0,CBE0,6BE0,F0,6B
E0,50E0,D0E0,72E0,F0,70
E0,4DE0,CDE0,74E0,F0,74
Цифровая клавиатура
Num Lock45C577F0,77
/E0,35E0,B5E0,4AE0,F0,4A
*37B77CF0,7C
-4ACA7BF0,7B
+4ECE79F0,79
↵ EnterE0,1CE0,9CE0,5AE0,F0,5A
.53D371F0,71
052D270F0,70
14FCF69F0,69
250D072F0,72
351D17AF0,7A
44BCB6BF0,6B
54CCC73F0,73
64DCD74F0,74
747C76CF0,6C
848C875F0,75
949C97DF0,7D
Клавиши ACPI
PowerE0,5EE0,DEE0,37E0,F0,37
SleepE0,5FE0,DFE0,3FE0,F0,3F
WakeE0,63E0,E3E0,5EE0,F0,5E
Мультимедиа клавиши
Управление проигрывателем
Следующий трекE0,19E0, 99E0, 4DE0,F0,4D
Предыдущий трекE0,10E0, 90E0,15E0,F0,15
ОстановитьE0,24E0,A4E0,3BE0,F0,3B
Проигрывать/паузаE0,22E0,A2E0,34E0,F0,3B
Звук вкл/отклE0,20E0,A0E0,23E0,F0,23
Увеличить громкостьE0,30E0,B0E0,32E0,F0,32
Уменьшить громкостьE0,2EE0,AEE0,21E0,F0,21
Управление браузером
ПоискE0,65E0,E5E0,10E0,F0,10
Домашняя страницаE0,32E0,B2E0,3AE0,F0,3A
НазадE0,6AE0,EAE0,38E0,F0,38
ВпередE0,69E0,E9E0,30E0,F0,30
СтопE0,68E0, E8E0,28E0,F0,28
ОбновитьE0,67E0,E7E0,20E0,F0,20
ЗакладкиE0,66E0, E6E0,18E0,F0,18
Управление приложениями
Media SelectE0,6DE0,EDE0,50E0,F0,50
Электронная почтаE0,6CE0,ECE0,48E0,F0,48
КалькуляторE0,21E0,A1E0,2BE0,F0,2B
Мой компьютерE0,6BE0,EBE0,40E0,F0,40

В чистом DOS клавиша Pause генерирует 6 скан-кодов при нажатии и не генерирует скан-кодов при удержании и отпускании. Под Windows же (в том числе и в VMware и DOSBox) клавиша Pause работает так же, как и любая другая: при нажатии и удержании генерирует скан-коды E1,1D,45, а при отпускании — E1,9D,C5.

Коды клавиш , , , , Home , End , Page Up , Page Down , Insert , Delete могут содержать кроме указанных в таблице дополнительно: E0,2A — при нажатии (до основного кода), E0,AA — при отпускании (после основного кода). А при удержании клавиши ⇧ Shift наоборот: E0,AA — при нажатии (до основного кода), E0,2A — при отпускании (после основного кода), код клавиши ⇧ Shift при этом генерируется отдельно.

См. также

Ссылки


Номера клавиш и скан-коды клавиатуры

Номера клавиш клавиатуры

При нажатии клавиши интегрированный в клавиатуру процессор вычисляет координаты нажатой клавиши в матрице. Далее он отправляет материнской плате пакет данных, в котором содержится скан-код используемой клавиши.

Это принято называть кодом активизации. Когда клавиша отпущена, генерируется код останова, которые указывает, что клавиша вернулась в исходное положение. Код останова равен коду активизации плюс 80h. К примеру, если код активизации 1Eh (клавиша «A»), то код останова будет равен 9Eh. Данные коды необходимы для определения нажатой клавиши (или комбинации клавиш).

В компьютерах AT контролер, установленный в клавиатуре, преобразует сгенерированный скан-код в один из скан-кодов, предусмотренных в системе, и отправляет его центральному процессору. Иногда необходимо знать данные скан-коды, особенно в процессе поиска неисправностей в клавиатуре или если необходимо считать скан-код в приложении.

Если клавиша выходит из строя или «залипает», программа диагностики, например процедура POST, обычно выдает ее скан-код. Это означает, что идентифицировать конкретную клавишу придется именно по данному коду.

Скан-код клавиатуры

В клавиатурах IBM каждая клавиша имеет уникальный номер, что дает возможность отличать ее от других. Данные номера необходимо знать для идентификации клавиши на зарубежных клавиатурах, поскольку она может иметь другие символы. В большинстве других моделях и в расширенных клавиатурах убрана одна из клавиш (№29), но добавлены две другие (№45 и №42). В итоге общее их количество увеличилось до 102.

Существует большое количество «горячих» клавиш, которые в клавиатурах USB и расширенных клавиатурах могут использоваться для запуска определенных операций (например, переход в спящий режим, запуск обозревателя, регулировка уровня громкости и так далее), так и функций, назначенных пользователем. Все «горячие» клавиши обладают собственным скан-кодом.

Скан-код — Википедия

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

Скан-код (англ. 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, ни от состояния управляющих клавиш (⇧ 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
Основная клавиатура
A1E9E1CF0,1C
B30B032F0,32
C2EAE21F0,21
D20A023F0,23
E129224F0,24
F21A12BF0,2B
G22A234F0,34
H23A333F0,33
I179743F0,43
J24A438F0,3B
K25A542F0,42
L26A64BF0,4B
M32B23AF0,3A
N31B131F0,31
O189844F0,44
P19994DF0,4D
Q109015F0,15
R13932DF0,2D
S1F9F1BF0,1B
T14942CF0,2C
U16963CF0,3C
V2FAF2AF0,2A
W11911DF0,1D
X2DAD22F0,22
Y159535F0,35
Z2CAC1AF0,1A
00B8B45F0,45
1028216F0,16
203831EF0,1E
3048426F0,26
4058525F0,25
506862EF0,2E
6078736F0,36
708883DF0,3D
809893EF0,3E
90A8A46F0,46
~29890EF0,0E
-0C8C4EF0,4E
=0D8255F0,55
\2BAB5DF0,5D
[1A9A54F0,54
]1B9B5BF0,5B
;27A74CF0,4C
'28A852F0,52
,33B341F0,41
.34B449F0,49
/35B54AF0,4A
BS0E8E66F0,66
Space39B929F0,29
Tab ↹0F8F0DF0,0D
⇪ Caps Lock3ABA58F0,58
Левый ⇧ Shift2AAA12F0,12
Левый Ctrl1D9D14F0,14
Левый Alt38B811F0,11
Левый ⊞ WinE0,5BE0,DBE0,1FE0,F0,1F
Правый ⇧ Shift36B659F0,59
Правый CtrlE0,1DE0,9DE0,14E0,F0,14
Правый AltE0,38E0,B8E0,11E0,F0,11
Правый ⊞ WinE0,5CE0,DCE0,27E0,F0,27
≣ MenuE0,5DE0,DDE0,2FE0,F0,2F
↵ Enter1C9C5AF0,5A
Esc018176F0,76
F13BBB05F0,05
F23CBC06F0,06
F33DBD04F0,04
F43EBE0CF0,0C
F53FBF03F0,03
F640C00BF0,0B
F741C183F0,83
F842C20AF0,0A
F943C301F0,01
F1044C409F0,09
F1157D778F0,78
F1258D807F0,07
PrtScrE0,2A,E0,37E0,B7,E0,AAE0,12,E0,7CE0,F0,7C,E0,F0,12
Alt+PrtScr54 (вместо PrtScr,

код для клавиши Alt

генерируется отдельно)

D4 (вместо PrtScr,

код для клавиши Alt

генерируется отдельно)

??
Ctrl+PrtScr,

⇧ Shift+PrtScr

(SysReq)

E0,37 (вместо PrtScr,

код для Ctrl или ⇧ Shift

генерируется отдельно)

E0,B7 (вместо PrtScr,

код для Ctrl или ⇧ Shift

генерируется отдельно)

??
Scroll Lock46C67EF0,7E
PauseE1,1D,45, E1,9D,C5E1,14,77, E1,F0,14,F0,77
Ctrl+Break

(Ctrl+Pause)

E0,46 (вместо Break,

код для клавиши Ctrl

генерируется отдельно)

E0,C6 (вместо Break,

код для клавиши Ctrl

генерируется отдельно)

??
InsertE0,52E0,D2E0,70E0,F0,70
HomeE0,47E0,C7E0,6CE0,F0,6C
EndE0,4FE0,CFE0,69E0,F0,69
Page UpE0,49E0,C9E0,7DE0,F0,7D
Page DownE0,51E0,D1E0,7AE0,F0,7A
DeleteE0,53E0,D3E0,71E0,F0,71
E0,48E0,C8E0,75E0,F0,75
E0,4BE0,CBE0,6BE0,F0,6B
E0,50E0,D0E0,72E0,F0,70
E0,4DE0,CDE0,74E0,F0,74
Цифровая клавиатура
Num Lock45C577F0,77
/E0,35E0,B5E0,4AE0,F0,4A
*37B77CF0,7C
-4ACA7BF0,7B
+4ECE79F0,79
↵ EnterE0,1CE0,9CE0,5AE0,F0,5A
.53D371F0,71
052D270F0,70
14FCF69F0,69
250D072F0,72
351D17AF0,7A
44BCB6BF0,6B
54CCC73F0,73
64DCD74F0,74
747C76CF0,6C
848C875F0,75
949C97DF0,7D
Клавиши ACPI
PowerE0,5EE0,DEE0,37E0,F0,37
SleepE0,5FE0,DFE0,3FE0,F0,3F
WakeE0,63E0,E3E0,5EE0,F0,5E
Мультимедиа клавиши
Управление проигрывателем
Следующий трекE0,19E0, 99E0, 4DE0,F0,4D
Предыдущий трекE0,10E0, 90E0,15E0,F0,15
ОстановитьE0,24E0,A4E0,3BE0,F0,3B
Проигрывать/паузаE0,22E0,A2E0,34E0,F0,3B
Звук вкл/отклE0,20E0,A0E0,23E0,F0,23
Увеличить громкостьE0,30E0,B0E0,32E0,F0,32
Уменьшить громкостьE0,2EE0,AEE0,21E0,F0,21
Управление браузером
ПоискE0,65E0,E5E0,10E0,F0,10
Домашняя страницаE0,32E0,B2E0,3AE0,F0,3A
НазадE0,6AE0,EAE0,38E0,F0,38
ВпередE0,69E0,E9E0,30E0,F0,30
СтопE0,68E0, E8E0,28E0,F0,28
ОбновитьE0,67E0,E7E0,20E0,F0,20
ЗакладкиE0,66E0, E6E0,18E0,F0,18
Управление приложениями
Media SelectE0,6DE0,EDE0,50E0,F0,50
Электронная почтаE0,6CE0,ECE0,48E0,F0,48
КалькуляторE0,21E0,A1E0,2BE0,F0,2B
Мой компьютерE0,6BE0,EBE0,40E0,F0,40

В чистом DOS клавиша Pause генерирует 6 скан-кодов при нажатии и не генерирует скан-кодов при удержании и отпускании. Под Windows же (в том числе и в VMware и DOSBox) клавиша Pause работает так же, как и любая другая: при нажатии и удержании генерирует скан-коды E1,1D,45, а при отпускании — E1,9D,C5.

Коды клавиш , , , , Home , End , Page Up , Page Down , Insert , Delete могут содержать кроме указанных в таблице дополнительно: E0,2A — при нажатии (до основного кода), E0,AA — при отпускании (после основного кода). А при удержании клавиши ⇧ Shift наоборот: E0,AA — при нажатии (до основного кода), E0,2A — при отпускании (после основного кода), код клавиши ⇧ Shift при этом генерируется отдельно.

См. также

Ссылки


Скан-коды клавиатуры – Assembler – Programming – Каталог статей

Скан-коды клавиатуры

Функциональные клавиши
Клавиша Коды
DEC HEX
F1 59 3B
F2 60 3C
F3 61 3D
F4 62 3E
F5 63 3F
F6 64 40
F7 65 41
F8 66 42
F9 67 43
F10 68 44
F11 87 57
F12 88 58

Упрвляющие клавиши
Клавиша Коды
DEC HEX
ESC 1 01
PrintScreen 55 37
ScrollLock 70 46
CapsLock 58 3A
NumLock 325 145
BackSpace 14 0E
Tab 15 0F
Enter 28 1C
Left Ctrl 29 1D
Right Ctrl 285 11D
Left Shift 42 2A
Right Shift 54 36
Alt* 56 38

Буквенно-цифровая клавиатура
Клавиша Коды
DEC HEX
` 41 29
1 2 02
2 3 03
3 4 04
5 6 06
6 7 07
7 8 08
8 9 09
9 10 0A
0 11 0B
12 0C
= 13 0D
\ 43 2B
q1610
w1711
e1812
r1913
t2014
y2115
u2216
i2317
o2418
p2519
[261A
]271B
a301E
s311F
d3220
f3321
g3422
h3523
j3624
k3725
l3826
;3927
4028
z442C
x452D
c462E
v472F
b4830
n4931
m5032
,5133
.5234
/5335
Пробел5739

Дополнительная клавиатура
Клавиша Коды
DEC HEX
Insert338152
Delete339153
Home327147
End33514F
PageUp329149
PageDown337151
Up328148
Down336150
Left33114B
Right33314D

Цифровая клавиатура
Клавиша Коды
DEC HEX
/309135
*5537
744A
+784E
Enter28411C
08252
1794F
28050
38151
4754B
5764C
6774D
77147
87248
97349

Источник: http://www.ntlib.chat.ru/ware/tables/scan.htm

коды сканирования клавиатуры

Коды сканирования клавиатуры

коды сканирования клавиатуры

Специальные физические ключи кодируются кодами сканирования DOS для этих ключей во втором байте типа TKeyEvent. Полный список кодов сканирования можно найти в таблице ниже. Это список ключей, который используется механизмом трансляции событий по умолчанию. При написании драйвера клавиатуры либо эти константы должны возвращаться различными функциями событий клавиш, либо драйвер должен реализовывать перехват TranslateKeyEvent .

ключевых сканкодов
код Ключ код Ключ код Ключ
00 NoKey 3D F3 70 ALT-F9
01 ALT-Esc 3E F4 71 ALT-F10
02 ALT-Space 3F F5 72 CTRL-PrtSc
04 CTRL-Ins 40 F6 73 CTRL-левый
05 SHIFT-Ins 41 F7 74 CTRL-правый
06 CTRL-Del 42 F8 75 CTRL-конец
07 SHIFT-Del 43 F9 76 CTRL-PgDn
08 ALT-Back 44 F10 77 CTRL-Home
09 ALT-SHIFT-Back 47 Дом 78 ALT-1
0F SHIFT-Tab 48 до 79 ALT-2
10 ALT-Q 49 PgUp ALT-3
11 ALT-W 4B осталось 7B ALT-4
12 ALT-E 4C Центр ALT-5
13 ALT-R 4D Право 7D ALT-6
14 ALT-T 4E ALT-GrayPlus 7E ALT-7
15 ALT-Y 4F конец 7F ALT-8
16 ALT-U 50 Вниз 80 ALT-9
17 ALT-I 51 пгд 81 ALT-0
18 ALT-O 52 Ins 82 ALT-Минус
19 ALT-P 53 Del 83 ALT-равно
1A ALT-LftBrack 54 SHIFT-F1 84 CTRL-PgUp
1B ALT-RgtBrack 55 SHIFT-F2 85 F11
1E ALT-A 56 SHIFT-F3 86 F12
1F ALT-S 57 SHIFT-F4 87 SHIFT-F11
20 ALT-D 58 SHIFT-F5 88 SHIFT-F12
21 ALT-F 59 SHIFT-F6 89 CTRL-F11
22 ALT-G SHIFT-F7 CTRL-F12
23 ALT-H 5B SHIFT-F8 8B ALT-F11
24 ALT-J SHIFT-F9 8C ALT-F12
25 ALT-K 5D SHIFT-F10 8D CTRL-Up
26 ALT-L 5E CTRL-F1 8E CTRL-Минус
27 ALT-SemiCol 5F CTRL-F2 8F ЦТРЛ-Центр
28 ALT-Цитата 60 CTRL-F3 90 CTRL-GreyPlus
29 ALT-OpQuote 61 CTRL-F4 91 CTRL-Вниз
2B ALT-BkSlash 62 CTRL-F5 94 CTRL-Tab
2C ALT-Z 63 CTRL-F6 97 ALT-Home
2D ALT-X 64 CTRL-F7 98 ALT-Up
2E ALT-C 65 CTRL-F8 99 ALT-PgUp
2F ALT-V 66 CTRL-F9 9B ALT-левый
30 ALT-B 67 CTRL-F10 9D ALT-Right
31 ALT-N 68 ALT-F1 9F ALT-конец
32 ALT-M 69 ALT-F2 A0 ALT-Вниз
33 ALT-Comma ALT-F3 A1 ALT-PgDn
34 ALT-период 6B ALT-F4 A2 ALT-Ins
35 ALT-Slash ALT-F5 A3 ALT-Del
37 ALT-GreyAst 6D ALT-F6 A5 ALT-Tab
3B F1 6E ALT-F7
3C F2 6F ALT-F8

Список кодов сканирования для специальных клавиш и комбинаций клавиш SHIFT, ALT и CTRL можно найти в следующей таблице: Они предназначены только для быстрого ознакомления.

SHIFT-ключ
Специальные коды ключей сканирования
Ключ код CTRL-ключ Alt-Key
NoKey 00
F1 3B 54 5E 68
F2 3C 55 5F 69
F3 3D 56 60
F4 3E 57 61 6B
F5 3F 58 62
F6 40 59 63 6D
F7 41 64 6E
F8 42 5B 65 6F
F9 43 66 70
F10 44 5D 67 71
F11 85 87 89 8B
F12 86 88 8C
Дом 47 77 97
до 48 8D 98
PgUp 49 84 99
осталось 4B 73 9B
Центр 4C 8F
Право 4D 74 9D
конец 4F 75 9F
Вниз 50 91 A0
пгд 51 76 A1
Ins 52 05 04 A2
Del 53 07 06 A3
Tab 8 0F 94 A5
GreyPlus 90 4E

,Коды сканирования клавиатуры

PS2 | Электронная документация по продуктам Altium

При нажатии клавиши на клавиатуре код отправляется на центральный процессор. С помощью справочных таблиц ASCII хост может определить функцию нажатой клавиши. Переданный код называется кодом сканирования и дополнительно подклассируется как код «make» в случае нажатия клавиши.

Если клавиша удерживается без отпускания, код создания для этой клавиши будет отправляться непрерывно в соответствии с определенной частотой автоповтора (типографской).Следует отметить, что если более чем одна клавиша нажата и удерживается нажатой, типовой режим применяется только к последней нажатой клавише.

При отпускании нажатой клавиши на хост отправляется дополнительный код сканирования, чтобы сообщить ему, что нажатая клавиша была отпущена. Этот дополнительный передаваемый код называется кодом прерывания.

Большинство кодов сканирования имеют длину в один байт, за исключением некоторых расширенных ключей (например, SHIFT, CTRL, PAUSE). Расширенные ключи распознаются по префиксу E0h к их кодам создания.

Соответствующий код прерывания для ключа состоит из префиксного байта F0h, за которым следует код make для этого ключа. Опять же, расширенные ключи являются исключением из этого правила, поскольку байт F0h помещается после байта E0h исходного кода make.

Ключ PAUSE является исключением из стандартных и расширенных правил ключей. Во-первых, его make-код имеет длину 8 байт и начинается с E1h, а не E0h. Во-вторых, у него нет кода разрыва.

Коды изготовления и разрыва всех клавиш на клавиатуре PS / 2 составляют набор кодов сканирования.Определено три набора кодов сканирования, но только два набора кодов сканирования распознаются полностью и используются в качестве набора по умолчанию всеми современными клавиатурами PS / 2.

В таблице 1 перечислены все клавиши на стандартной клавиатуре PS / 2, а также их уникальные коды сканирования.

Таблица 1. Коды сканирования клавиатуры PS / 2 (набор кодов сканирования 2).

Ключ

Scan Code
make (break)

Ключ

Scan Code
make (break)

ESC

76 (F076)

К

42 (F042)

F1

05 (F005)

L

4B (F04B)

F2

06 (F006)

;

4C (F04C)

F3

04 (F004)

52 (F052)

F4

0C (F00C)

Введите

5А (F05A)

F5

03 (F003)

Сдвиг (влево)

12 (F012)

F6

0B (F00B)

Z

1A (F01A)

F7

83 (F083)

X

22 (F022)

F8

0A (F00A)

C

21 (F021)

F9

01 (F001)

В

2A (F02A)

F10

09 (F009)

B

32 (F032)

F11

78 (F078)

N

31 (F031)

F12

07 (F007)

М

3A (F03A)

Prt Scr

E012E07C (E0F07CE0F012)

,

41 (F041)

Scroll Lock

7E (F07E)

.

49 (F049)

Пауза / Перерыв

E11477E1F014E077 (Нет)

/

4A (F04A)

`

0E (F00E)

Сдвиг (справа)

59 (F059)

1

16 (F016)

Ctrl (слева)

14 (F014)

2

1E (F01E)

Окна (слева)

E01F (E0F01F)

3

26 (F026)

Alt (слева)

11 (F011)

4

25 (F025)

Пробел

29 (F029)

5

2E (F02E)

Alt (справа)

E011 (E0F011)

6

36 (F036)

Окна (справа)

E027 (E0F027)

7

3D (F03D)

Меню

E02F (E0F02F)

8

3E (F03E)

Ctrl (справа)

E014 (E0F014)

9

46 (F046)

Вставка

E070 (E0F070)

0

45 (F045)

Дом

E06C (E0F06C)

4E (F04E)

Page Up

E07D (E0F07D)

=

55 (F055)

Удалить

E071 (E0F071)

Backspace

66 (F066)

Конец

E069 (E0F069)

Вкладка

0D (F00D)

Page Down

E07A (E0F07A)

Q

15 (F015)

Стрелка вверх

E075 (E0F075)

W

1D (F01D)

Стрелка влево

E06B (E0F06B)

E

24 (F024)

Стрелка вниз

E072 (E0F072)

R

2D (F02D)

Стрелка вправо

E074 (E0F074)

Т

2C (F02C)

Num Lock

77 (F077)

Y

35 (F035)

/

E04A (E0F04A)

U

3C (F03C)

*

7C (F07C)

I

43 (F043)

7B (F07B)

O

44 (F044)

7

6C (F06C)

P

4D (F04D)

8

75 (F075)

[

54 (F054)

9

7D (F07D)

]

5B (F05B)

+

79 (F079)

\

5D (F05D)

4

6B (F06B)

Caps Lock

58 (F058)

5

73 (F073)

A

1C (F01C)

6

74 (F074)

S

1B (F01B)

1

69 (F069)

D

23 (F023)

2

72 (F072)

F

2B (F02B)

3

7А (F07A)

G

34 (F034)

0

70 (F070)

H

33 (F033)

.

71 (F071)

J

3B (F03B)

Введите

E05A (E0F05A)

.

Коды сканирования клавиатуры ПК

Коды сканирования клавиатуры ПК

Phil Storrs PC Hardware книга

Значения кода сканирования, генерируемые клавиатурой ПК

Спасибо Крейгу Пикоку, за вышеприведенные диаграммы. Крэйг поддерживает хорошую страницу взаимодействия с ПК по адресу: http://www.senet.com.au/~cpeacock/

скан-код Базовый корпус Верхний регистр скан-код Базовый корпус Верхний регистр скан-код Базовый корпус Верхний регистр
29 ` ~ 02 1! 03 2 @
04 3 # 05 4 $ 06 5%
07 6 ^ 08 7 и 09 8 *
9 ( 0B 0) 0C _
0D = + 0E Backspace Backspace 0F Tab Back Tab
10 кв Q 11 Вт Вт 12 и E
13 р R 14 т Т 15 и Y
16 и U 17 и I 18 или O
19 р P 1A [ { 1B ]}
2B \ | 3A примечание 1 Caps Lock на 1E А
1F с S 20 д D 21 f F
22 г G 23 ч H 24 и J
25 к К 26 л л 27 ;:
28 и 2B note 2 # ~ Введите Введите
2A примечание 1 Сдвиг влево на D5 note 2 \ | 2C з Z
2D x X 2E с C 2F v В
30 b B 31 n N 32 м М
33 , & lt 34 & gt 35 /?
36 примечание 1 Сдвиг вправо на 1D примечание 1 левый Ctrl на 38 примечание 1 левый альт на
39 Пробел Пробел E0,38 примечание 1 правый альт на E0,1D примечание 1 вправо Ctrl на
E0,52 Вставка на E0,53 Удалить на E0,4B Стрелка влево на
E0,47 Дом на E0,4F Конец на E0,48 Стрелка вверх на
E0,49 Pg Up на E0,51 Pg Dn на E0,4D Стрелка вправо на
45, C5 примечание 1 Num Lock на 47 Клавиатура 7 Дом 4B Клавиатура 4 Стрелка влево
4F Клавиатура 1 Конец E0,35 клавиатура / клавиатура / 48 Клавиатура 8 Стрелка вверх
Клавиатура 5 на 50 Клавиатура 2 Dn Arrow 52 Клавиатура 0 Вставка
E0,37 Клавиатура * Клавиатура * 49 Клавиатура 9 Pg Up 4D Клавиатура 6 Стрелка вправо
51 Клавиатура 3 Pg Dn 53 Клавиатура. Удалить Клавиатура – Клавиатура –
4E Клавиатура + Клавиатура + E0,1C Клавиатура Enter Клавиатура Enter 01 Побег Побег
3B F1 примечание 3 3C F2 примечание 3 3D F3 примечание 3
3E F4 примечание 3 3F F5 примечание 3 40 F6 примечание 3
41 F7 примечание 3 42 F8 примечание 3 43 F9 примечание 3
44 F10 примечание 3 D9 F11 примечание 3 DA F12 примечание 3
2А, 37 Prnt, Scrn на 46 Scroll Lock на

Каждая клавиша на клавиатуре ПК имеет код сканирования, а не код ASCII, связанный с ней.В приведенной выше таблице указан код сканирования для каждой клавиши на 101-клавишной клавиатуре ПК.

Чип процессора клавиатуры, находящийся внутри блока клавиатуры, сканирует матрицу клавиш и при нажатии клавиши отправляет код сканирования для нажатой клавиши в схему интерфейса клавиатуры на системной плате компьютера. Схема интерфейса клавиатуры генерирует аппаратное прерывание, которое вызывает процедуру обслуживания клавиатуры в действие. Сервисная программа клавиатуры обрабатывает код сканирования, просматривая два байта состояния, которые отслеживают клавиши состояния сдвига, и помещает двухбайтовый код в область буфера клавиатуры в ОЗУ.Если нажатая клавиша была символом ASCII, два байта данных сохраняются с кодом ASCII в качестве основного байта, а код сканирования нажатой клавиши – в качестве вспомогательного байта.

,

кодов сканирования клавиатуры

Коды сканирования клавиатуры

Inquisit записывает код сканирования ответа субъекта в столбце ответа. файла данных. Каждая клавиша на клавиатуре имеет уникальный код сканирования, указанный в таблице ниже.

Scancode Клавиша клавиатуры
1 ESC
2 1
3 2
4 3
5 4
6 5
7 6
8 7
9 8
10 9
11 0
12
13 =
14 BS
15 Tab
16 Q
17 W
18 E
19 R
20 Т
21 Y
22 U
23 Я
24 O
25 P
26 [
27 ]
28 Введите
29 CTRL
30 A
31 S
32 D
33 F
34 G
35 H
36 J
37 К
38 L
39 ;
40
41 `
42 LShift
43 \
44 Z
45 X
46 C
47 V
48 B
49 N
50 М
51
52 ,
53 /
54 RShift
55 PrtSc
56 Alt
57 Космос
58 Caps
59 F1
60 F2
61 F3
62 F4
63 F5
64 F6
65 F7
66 F8
67 F9
68 F10
69 Номер
70 Свиток
71 Главная (7)
72 Up (8)
73 PgUp (9)
74
75 Левый (4)
76 Центр (5)
77 Право (6)
78 +
79 Конец (1)
80 Вниз (2)
81 PgDn (3)
82 Ins
83 Del

,

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *