Скан-коды клавиш клавиатуры (scan codes)
02.11.2021
6508
В закладкиСкан-код — числовой код, присвоенный каждой клавише в IBM-совместимых компьютерах, с помощью которого драйвер клавиатуры распознает, какая клавиша была нажата.
Название клавиши | DEC | HEX |
---|---|---|
Esc | 1 | 0x1 |
← Backspace | 14 | 0x0E |
Tab ↹ | 15 | 0x0F |
↵ Enter | 28 | 0x1C |
⇧ Shift левый | 42 | 0x2A |
⇧ Shift правый | 54 | 0x36 |
Ctrl левый | 29 | |
Ctrl правый | 285 | 0x11D |
Alt левый | 56 | 0x38 |
Alt правый | 312 | 0x138 |
⊞ Win левый | 91 | 0x5B |
⊞ Win правый | 92 | 0x5C |
⇪ Caps Lock | 58 | 0x3A |
Num Lock | 69 | 0x45 |
Scrol Lock | 70 | 0x46 |
Pause/Break | 69 | 0x45 |
Ctrl + Pause/Break | 326 | 0x146 |
End | 79 | 0x4F |
Home | 71 | 0x47 |
Пробел | 57 | 0x39 |
Page Up | 73 | 0x49 |
Page Down | 81 | 0x51 |
Clear | 76 | 0x4C |
← | 75 | 0x4B |
↑ | 72 | 0x48 |
→ | 77 | 0x4D |
↓ | 80 | 0x50 |
PrtSc | 311 | 0x137 |
Insert | 82 | 0x52 |
Delete | 83 | |
0 | 11 | 0xB |
1 | 2 | 0x2 |
2 | 3 | 0x3 |
3 | 4 | 0x4 |
4 | 5 | 0x5 |
5 | 6 | 0x6 |
6 | 7 | 0x7 |
7 | 8 | 0x8 |
8 | 9 | 0x9 |
9 | 10 | 0xA |
A | 30 | 0x1E |
B | 48 | 0x30 |
C | 46 | 0x2E |
D | 32 | 0x20 |
E | 18 | 0x12 |
F | 33 | 0x21 |
G | 34 | 0x22 |
H | 35 | 0x23 |
I | 23 | 0x17 |
J | 36 | 0x24 |
K | 37 | 0x25 |
L | 38 | 0x26 |
M | 50 | 0x32 |
N | 49 | 0x31 |
O | 24 | 0x18 |
P | 25 | 0x19 |
Q | 16 | 0x10 |
R | 19 | 0x13 |
S | 31 | 0x1F |
T | 20 | 0x14 |
U | 22 | 0x16 |
V | 47 | 0x2F |
W | 17 | 0x11 |
X | 45 | 0x2D |
Y | 21 | 0x15 |
Z | 44 | 0x2C |
Context Menu | 349 | 0x15D |
Numpad 0 | 82 | 0x52 |
Numpad 1 | 79 | 0x4F |
Numpad 2 | 80 | 0x50 |
Numpad 3 | 81 | 0x51 |
Numpad 4 | 75 | 0x4B |
Numpad 5 | 76 | 0x4C |
Numpad 6 | 77 | 0x4D |
Numpad 7 | 71 | 0x47 |
Numpad 8 | 72 | 0x48 |
Numpad 9 | 73 | 0x49 |
Numpad * | 55 | 0x37 |
Numpad + | 78 | |
Numpad - | 74 | 0x4A |
Numpad . (Del) | 83 | 0x53 |
Numpad / | 53 | 0x35 |
Numpad Enter | 284 | 0x11c |
F1 | 59 | 0x3B |
F2 | 60 | 0x3C |
F3 | 61 | 0x3D |
F4 | 62 | 0x3E |
F5 | 63 | 0x3F |
F6 | 64 | 0x40 |
F7 | 65 | 0x41 |
F8 | 66 | 0x42 |
F9 | 67 | 0x43 |
F10 | 68 | 0x44 |
F11 | 87 | 0x57 |
F12 | 88 | 0x58 |
F13 | 124 | 0x7C |
F14 | 125 | 0x7D |
F15 | 126 | 0x7E |
F16 | 127 | 0x7F |
F17 | 128 | 0x80 |
F18 | 129 | 0x81 |
F19 | 130 | 0x82 |
F20 | 131 | 0x83 |
F21 | 132 | 0x84 |
F22 | 133 | 0x85 |
F23 | 134 | 0x86 |
F24 | 135 | 0x87 |
; : | 39 | 0x27 |
- _ | 12 | 0x0C |
= + | 13 | 0x0D |
< , | 51 | 0x33 |
. > | 52 | 0x34 |
/ ? | 53 | 0x35 |
~ | 41 | 0x29 |
[ { | 26 | 0x1A |
] } | 27 | 0x1B |
' " | 40 | 0x28 |
| | 43 | 0x2B |
02.11.2021, обновлено 01.12.2021
6508
#Клавиатура
В закладкиДругие публикации
Как отследить нажатие клавиш JQuery?
В событиях – keydown(), keyup(), keypress() можно получить нажатые клавиши в шести свойствах. Получить их можно из…
Горячие клавиши Google Chrome
Список сочетаний клавиш, которые можно использовать в Google Chrome для Windows и MacOS.
Ремаппинг клавиш на клавиатуре / Хабр
Всю свою жизнь был фанатом бесшумных, тонких, и красивых клавиатур и к моему удивлению обнаружил что таковых не так уж и много, из доступных в свободной продаже, — их единицы. Пришлось пользоваться «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
кодов сканирования клавиатуры
кодов сканирования клавиатурыInquisit записывает скан-код ответа субъекта в столбце ответа. файла данных. Каждая клавиша на клавиатуре имеет один уникальный скан-код, заданный в таблице ниже.
Код сканирования | Ключ клавиатуры |
---|---|
1 | ЭСК |
2 | 1 |
3 | 2 |
4 | 3 |
5 | 4 |
6 | 5 |
7 | 6 |
8 | 7 |
9 | 8 |
10 | 9 |
11 | 0 |
12 | – |
13 | = |
14 | бс |
15 | Вкладка |
16 | Вопрос |
17 | В |
18 | Е |
19 | Р |
20 | Т |
21 | Y |
22 | У |
23 | я |
24 | О |
25 | Р |
26 | [ |
27 | ] |
28 | Введите |
29 | CTRL |
30 | А |
31 | S |
32 | Д |
33 | Ф |
34 | Г |
35 | Н |
36 | Дж |
37 | К |
38 | Л |
39 | ; |
40 | |
41 | ` |
42 | левшифт |
43 | \ |
44 | Z |
45 | Х |
46 | С |
47 | В |
48 | Б |
49 | № |
50 | М |
51 | , |
52 | . |
53 | / |
54 | РШифт |
55 | ПТС |
56 | Вариант |
57 | Космос |
58 | Колпачки |
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 | Вверх (8) |
73 | ПгВп (9) |
74 | – |
75 | Левый (4) |
76 | Центр (5) |
77 | Право (6) |
78 | + |
79 | Конец (1) |
80 | Вниз (2) |
81 | ПГДн (3) |
82 | Инс |
83 | Дел |
Коды сканирования клавиатуры
Коды сканирования клавиатуры[Предыдущая][Вверх] | Ссылка на блок «клавиатура» (#rtl) |
Специальные физические ключи кодируются скан-кодами DOS для этих ключей во втором байте типа TKeyEvent. Полный список кодов сканирования можно найти в таблице ниже. Это список ключей, которые используются механизмом перевода ключевых событий по умолчанию. При написании драйвера клавиатуры либо эти константы должны возвращаться различными функциями обработки событий клавиш, либо драйвером должен быть реализован хук TranslateKeyEvent .
Код | Ключ | Код | Ключ | Код | Ключ |
---|---|---|---|---|---|
00 | Нет ключа | 3D | Ф3 | 70 | ALT-F9 |
01 | ALT-Esc | 3Е | Ф4 | 71 | АЛЬТ-Ф10 |
02 | ALT-Пробел | 3F | Ф5 | 72 | CTRL-PrtSc |
04 | CTRL-Ins | 40 | Ф6 | 73 | CTRL-Влево |
05 | SHIFT-Ins | 41 | Ф7 | 74 | CTRL-вправо |
06 | CTRL-Del | 42 | Ф8 | 75 | CTRL-конец |
07 | SHIFT-Del | 43 | Ф9 | 76 | CTRL-PgDn |
08 | ALT-Назад | 44 | Ф10 | 77 | CTRL-Дом |
09 | ALT-SHIFT-Назад | 47 | Дом | 78 | АЛЬТЕР-1 |
0F | SHIFT-вкладка | 48 | Вверх | 79 | АЛЬТ-2 |
10 | АЛЬТ-Q | 49 | ПгВп | 7А | АЛЬТЕР-3 |
11 | АЛЬТ-В | 4Б | Левый | 7Б | АЛЬТЕР-4 |
12 | АЛЬТ-Е | 4С | Центр | 7С | АЛЬТЕР-5 |
13 | АЛЬТ-Р | 4Д | справа | 7Д | АЛЬТЕР-6 |
14 | АЛЬТ-Т | 4Е | АЛЬТ-ГрейПлюс | 7Э | АЛЬТЕР-7 |
15 | АЛЬТ-Y | 4F | конец | 7Ф | АЛЬТЕР-8 |
16 | АЛЬТ-У | 50 | Вниз | 80 | АЛЬТЕР-9 |
17 | АЛЬТ-И | 51 | ПГДН | 81 | АЛЬТЕР-0 |
18 | АЛЬТ-О | 52 | Инс | 82 | ALT-минус |
19 | АЛЬТ-П | 53 | Дел | 83 | ALT-равно |
1А | ALT-LftBrack | 54 | SHIFT-F1 | 84 | CTRL-PgUp |
1Б | ALT-RgtBrack | 55 | SHIFT-F2 | 85 | Ф11 |
1Е | АЛЬТ-А | 56 | SHIFT-F3 | 86 | Ф12 |
1F | АЛЬТ-С | 57 | SHIFT-F4 | 87 | SHIFT-F11 |
20 | АЛЬТ-Д | 58 | SHIFT-F5 | 88 | SHIFT-F12 |
21 | АЛЬТ-Ф | 59 | SHIFT-F6 | 89 | CTRL-F11 |
22 | АЛЬТ-Г | 5А | SHIFT-F7 | 8А | CTRL-F12 |
23 | АЛЬТ-Х | 5Б | SHIFT-F8 | 8Б | АЛЬТ-Ф11 |
24 | АЛЬТ-ДЖ | 5С | SHIFT-F9 | 8С | АЛЬТ-Ф12 |
25 | АЛЬТ-К | 5D | SHIFT-F10 | 8Д | CTRL-Вверх |
26 | АЛЬТЕР-Л | 5Е | CTRL-F1 | 8Е | CTRL-минус |
27 | АЛЬТ-Полуколь | 5F | CTRL-F2 | 8F | CTRL-Центр |
28 | ALT-Цитата | 60 | CTRL-F3 | 90 | CTRL-GreyPlus |
29 | ALT-OpQuote | 61 | CTRL-F4 | 91 | CTRL-Вниз |
2Б | ALT-BkSlash | 62 | CTRL-F5 | 94 | CTRL-вкладка |
2С | АЛЬТ-З | 63 | CTRL-F6 | 97 | АЛЬТ-Дом |
2D | АЛЬТ-Х | 64 | CTRL-F7 | 98 | АЛЬТ-Вверх |
2Е | АЛЬТ-С | 65 | CTRL-F8 | 99 | ALT-PgUp |
2F | АЛЬТ-В | 66 | CTRL-F9 | 9Б | ALT-Левый |
30 | АЛЬТ-Б | 67 | CTRL-F10 | 9Д | ALT-Право |
31 | АЛЬТЕР-Н | 68 | АЛЬТ-Ф1 | 9Ф | ALT-конец |
32 | АЛЬТ-М | 69 | АЛЬТ-Ф2 | А0 | ALT-вниз |
33 | ALT-запятая | 6А | АЛЬТ-Ф3 | А1 | ALT-PgDn |
34 | ALT-Период | 6Б | ALT-F4 | А2 | ALT-Ins |
35 | ALT-слеш | 6С | ALT-F5 | А3 | ALT-Del |
37 | ALT-СерыйAst | 6Д | ALT-F6 | А5 | ALT-вкладка |
3Б | Ф1 | 6Е | ALT-F7 | ||
3С | Ф2 | 6F | ALT-F8 |
Список кодов сканирования для специальных клавиш и комбинаций с клавишами SHIFT, ALT и CTRL можно найти в следующей таблице: Они предназначены только для быстрого ознакомления.