rickyzhang82 / keycode.linux
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
# /usr/share/BasiliskII/keycodes |
# |
# Basilisk II (C) 1997-2005 Christian Bauer |
# |
# This file is used to translate the (server-specific) scancodes to |
# Mac keycodes depending on the window server being used. |
# |
# The format of this file is as follows: |
# |
# sdl |
# |
# |
# |
# . |
# sdl |
# |
# |
# . |
# |
# The «driver string» must match the first part of the SDL driver vendor |
# description as reported by SDL_VideoDriverName(). If a match is found, |
# the keycode translation table is constructed from the following |
# lines. Each line contains an SDL scancode followed by its associated |
# Mac keycode. Both keycodes have to be given in decimal. Lines |
# beginning with «#» or «;» are treated as comments and ignored. |
# |
# |
# X11 server |
# |
sdl x11 |
sdl dga |
9 53 # Esc |
67 122 # F1 |
68 120 # F2 |
69 99 # F3 |
70 118 # F4 |
71 96 # F5 |
72 97 # F6 |
73 98 # F7 |
74 100 # F8 |
75 101 # F9 |
76 109 # F10 |
95 103 # F11 |
96 127 # F12 |
111 105 # PrintScrn |
78 107 # Scroll Lock |
110 113 # Pause |
49 50 # ` |
10 18 # 1 |
11 19 # 2 |
12 20 # 3 |
13 21 # 4 |
14 23 # 5 |
15 22 # 6 |
16 26 # 7 |
17 28 # 8 |
18 25 # 9 |
19 29 # 0 |
20 27 # — |
21 24 # = |
22 51 # Backspace |
106 114 # Insert |
97 115 # Home |
99 116 # Page Up |
77 71 # Num Lock |
112 75 # KP / |
63 67 # KP * |
82 78 # KP — |
23 48 # Tab |
24 12 # Q |
25 13 # W |
26 14 # E |
27 15 # R |
28 17 # T |
29 16 # Y |
30 32 # U |
31 34 # I |
32 31 # O |
33 35 # P |
34 33 # [ |
35 30 # ] |
36 36 # Return |
107 117 # Delete |
103 119 # End |
105 121 # Page Down |
79 89 # KP 7 |
80 91 # KP 8 |
81 92 # KP 9 |
86 69 # KP + |
66 57 # Caps Lock |
38 0 # A |
39 1 # S |
40 2 # D |
41 3 # F |
42 5 # G |
43 4 # H |
44 38 # J |
45 40 # K |
46 37 # L |
47 41 # ; |
48 39 # ‘ |
83 86 # KP 4 |
84 87 # KP 5 |
85 88 # KP 6 |
50 56 # Shift Left |
94 50 # International |
52 6 # Z |
53 7 # X |
54 8 # C |
55 9 # V |
56 11 # B |
57 45 # N |
58 46 # M |
59 43 # , |
60 47 # . |
61 44 # / |
62 56 # Shift Right |
51 42 # \ |
98 62 # Cursor Up |
87 83 # KP 1 |
88 84 # KP 2 |
89 85 # KP 3 |
108 76 # KP Enter |
37 54 # Ctrl Left |
115 58 # Logo Left (-> Option) |
64 55 # Alt Left (-> Command) |
65 49 # Space |
113 55 # Alt Right (-> Command) |
116 58 # Logo Right (-> Option) |
117 50 # Menu (-> International) |
109 54 # Ctrl Right |
100 59 # Cursor Left |
104 61 # Cursor Down |
102 60 # Cursor Right |
90 82 # KP 0 |
91 65 # KP . |
# |
# Linux Framebuffer Console |
# |
sdl fbcon |
1 53 # Esc |
59 122 # F1 |
60 120 # F2 |
61 99 # F3 |
62 118 # F4 |
63 96 # F5 |
64 97 # F6 |
65 98 # F7 |
66 100 # F8 |
67 101 # F9 |
68 109 # F10 |
87 103 # F11 |
88 111 # F12 |
99 105 # PrintScrn |
70 107 # Scroll Lock |
119 113 # Pause |
41 50 # ` |
2 18 # 1 |
3 19 # 2 |
4 20 # 3 |
5 21 # 4 |
6 23 # 5 |
7 22 # 6 |
8 26 # 7 |
9 28 # 8 |
10 25 # 9 |
11 29 # 0 |
12 27 # — |
13 24 # = |
14 51 # Backspace |
110 114 # Insert |
102 115 # Home |
104 116 # Page Up |
69 71 # Num Lock |
98 75 # KP / |
55 67 # KP * |
74 78 # KP — |
15 48 # Tab |
16 12 # Q |
17 13 # W |
18 14 # E |
19 15 # R |
20 17 # T |
21 16 # Y |
22 32 # U |
23 34 # I |
24 31 # O |
25 35 # P |
26 33 # [ |
27 30 # ] |
28 36 # Return |
111 117 # Delete |
107 119 # End |
109 121 # Page Down |
71 89 # KP 7 |
72 91 # KP 8 |
73 92 # KP 9 |
78 69 # KP + |
58 57 # Caps Lock |
30 0 # A |
31 1 # S |
32 2 # D |
33 3 # F |
34 5 # G |
35 4 # H |
36 38 # J |
37 40 # K |
38 37 # L |
39 41 # ; |
40 39 # ‘ |
75 86 # KP 4 |
76 87 # KP 5 |
77 88 # KP 6 |
42 56 # Shift Left |
86 50 # International |
44 6 # Z |
45 7 # X |
46 8 # C |
47 9 # V |
48 11 # B |
49 45 # N |
50 46 # M |
51 43 # , |
52 47 # . |
53 44 # / |
54 56 # Shift Right |
43 42 # \ |
103 62 # Cursor Up |
79 83 # KP 1 |
80 84 # KP 2 |
81 85 # KP 3 |
96 76 # KP Enter |
29 54 # Ctrl Left |
125 58 # Logo Left (-> Option) |
56 55 # Alt Left (-> Command) |
57 49 # Space |
100 55 # Alt Right (-> Command) |
126 58 # Logo Right (-> Option) |
97 54 # Ctrl Right |
105 59 # Cursor Left |
108 61 # Cursor Down |
106 60 # Cursor Right |
82 82 # KP 0 |
83 65 # KP . |
# |
# Quartz (1:1 translation actually) |
# |
sdl Quartz |
53 53 # Esc |
122 122 # F1 |
120 120 # F2 |
99 99 # F3 |
118 118 # F4 |
96 96 # F5 |
97 97 # F6 |
98 98 # F7 |
100 100 # F8 |
101 101 # F9 |
109 109 # F10 |
103 103 # F11 |
111 111 # F12 |
105 105 # F13/PrintScrn |
107 107 # F14/Scroll Lock |
113 113 # F15/Pause |
10 10 # ` |
18 18 # 1 |
19 19 # 2 |
20 20 # 3 |
21 21 # 4 |
23 23 # 5 |
22 22 # 6 |
26 26 # 7 |
28 28 # 8 |
25 25 # 9 |
29 29 # 0 |
27 27 # — |
24 24 # = |
51 51 # Backspace |
114 114 # Help/Insert |
115 115 # Home |
116 116 # Page Up |
71 71 # Num Lock |
81 81 # KP = |
75 75 # KP / |
67 67 # KP * |
48 48 # Tab |
12 12 # Q |
13 13 # W |
14 14 # E |
15 15 # R |
17 17 # T |
16 16 # Y |
32 32 # U |
34 34 # I |
31 31 # O |
35 35 # P |
33 33 # [ |
30 30 # ] |
36 36 # Return |
117 117 # Delete |
119 119 # End |
121 121 # Page Down |
89 89 # KP 7 |
91 91 # KP 8 |
92 92 # KP 9 |
78 78 # KP — |
57 57 # Caps Lock |
0 0 # A |
1 1 # S |
2 2 # D |
3 3 # F |
5 5 # G |
4 4 # H |
38 38 # J |
40 40 # K |
37 37 # L |
41 41 # ; |
39 39 # ‘ |
42 42 # \ |
86 86 # KP 4 |
87 87 # KP 5 |
88 88 # KP 6 |
69 69 # KP + |
56 56 # Shift |
50 50 # International |
6 6 # Z |
7 7 # X |
8 8 # C |
9 9 # V |
11 11 # B |
45 45 # N |
46 46 # M |
43 43 # , |
47 47 # . |
44 44 # / |
126 62 # Cursor Up |
123 59 # Cursor Left |
125 61 # Cursor Down |
124 60 # Cursor Right |
83 83 # KP 1 |
84 84 # KP 2 |
85 85 # KP 3 |
76 76 # KP Enter |
54 54 # Ctrl |
58 58 # Option |
55 55 # Command |
54 54 # Ctrl Left |
49 49 # Space |
82 82 # KP 0 |
65 65 # KP . |
# |
# Windows |
# |
sdl windib |
sdl directx |
1 53 # Esc |
59 122 # F1 |
60 120 # F2 |
61 99 # F3 |
62 118 # F4 |
63 96 # F5 |
64 97 # F6 |
65 98 # F7 |
66 100 # F8 |
67 101 # F9 |
68 109 # F10 |
87 103 # F11 |
88 111 # F12 |
183 105 # PrintScrn |
70 107 # Scroll Lock |
197 113 # Pause |
41 50 # ` |
2 18 # 1 |
3 19 # 2 |
4 20 # 3 |
5 21 # 4 |
6 23 # 5 |
7 22 # 6 |
8 26 # 7 |
9 28 # 8 |
10 25 # 9 |
11 29 # 0 |
12 27 # — |
13 24 # = |
14 51 # Backspace |
210 114 # Insert |
199 115 # Home |
201 116 # Page Up |
69 71 # Num Lock |
181 75 # KP / |
55 67 # KP * |
74 78 # KP — |
15 48 # Tab |
16 12 # Q |
17 13 # W |
18 14 # E |
19 15 # R |
20 17 # T |
21 16 # Y |
22 32 # U |
23 34 # I |
24 31 # O |
25 35 # P |
26 33 # [ |
27 30 # ] |
28 36 # Return |
211 117 # Delete |
207 119 # End |
209 121 # Page Down |
71 89 # KP 7 |
72 91 # KP 8 |
73 92 # KP 9 |
78 69 # KP + |
58 57 # Caps Lock |
30 0 # A |
31 1 # S |
32 2 # D |
33 3 # F |
34 5 # G |
35 4 # H |
36 38 # J |
37 40 # K |
38 37 # L |
39 41 # ; |
40 39 # ‘ |
75 86 # KP 4 |
76 87 # KP 5 |
77 88 # KP 6 |
42 56 # Shift Left |
86 50 # International |
44 6 # Z |
45 7 # X |
46 8 # C |
47 9 # V |
48 11 # B |
49 45 # N |
50 46 # M |
51 43 # , |
52 47 # . |
53 44 # / |
54 56 # Shift Right |
43 42 # \ |
200 62 # Cursor Up |
79 83 # KP 1 |
80 84 # KP 2 |
81 85 # KP 3 |
156 76 # KP Enter |
29 54 # Ctrl Left |
219 58 # Logo Left (-> Option) |
56 55 # Alt Left (-> Command) |
57 49 # Space |
184 55 # Alt Right (-> Command) |
220 58 # Logo Right (-> Option) |
221 50 # Menu (-> International) |
157 54 # Ctrl Right |
203 59 # Cursor Left |
208 61 # Cursor Down |
205 60 # Cursor Right |
82 82 # KP 0 |
83 65 # KP . |
Keyboard input (Русский)
Состояние перевода: На этой странице представлен перевод статьи Keyboard input. Дата последней синхронизации: 13 февраля 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.
Необходимым условием для изменения сопоставления клавиш является понимание того, как нажатие клавиши приводит к появлению символа:
- Клавиатура посылает компьютеру скан-код (scancode).
- Ядро Linux сопоставляет сканкод с кодом клавиши (keycode); смотрите Map scancodes to keycodes.
- Раскладка клавиатуры сопоставляет код клавиши с символом клавиши (keysym) в зависимости от того, какие клавиши-модификаторы нажаты.
- Для консоли Linux смотрите статью Конфигурация клавиатуры в консоли.
- Для Xorg и Wayland смотрите статью Конфигурация клавиатуры в Xorg.
Большинство ваших клавиш уже должны иметь код клавиши или хотя бы скан-код. Клавиши без скан-кода не распознаются ядром; это могут быть дополнительные клавиши от «игровых» клавиатур и т.д.
В Xorg некоторым символам клавиш (например XF86AudioPlay , XF86AudioRaiseVolume ) можно назначить действия (такие как запуск внешних приложений). Подробности смотрите в статье Горячие клавиши#Xorg.
В консоли Linux некоторым символам клавиш (например, F1 – F246 ) могут быть назначены определённые действия (например, переключение на другую консоль или печать некоторой последовательности символов). Подробности смотрите в статье Конфигурация клавиатуры в консоли#Создание своей раскладки.
Определение скан-кодов
С помощью showkey
Традиционный способ узнать скан код — воспользоваться утилитой showkey(1) . showkey ожидает нажатия клавиши, или выходит, если не было нажатий в течение 10 секунд. Чтобы работать с showkey, вы должны быть в виртуальной консоли, а не в графическом окружении или работать, залогинившись по сети. Выполните следующую команду:
и понажимайте клавиши на клавиатуре; вы должны увидеть скан коды на экране.
С помощью evtest
Для USB клавиатур, видимо, нужно использовать evtest(1) из пакета evtest вместо showkey:[1]
# evtest /dev/input/event12 . Event: time 1434666536.001123, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70053 Event: time 1434666536.001123, type 1 (EV_KEY), code 69 (KEY_NUMLOCK), value 0 Event: time 1434666536.001123, -------------- EV_SYN ------------
Совет: Если вы не знаете, какой event-номер имеет интересующее вас устройство, вы можете запустить evtest без параметров, и он покажет вам список устройств с их event-номерами, после чего вы можете ввести нужный номер.
Используйте поле «value» из MSC_SCAN . В этом примере показано, что NumLock имеет сканкод 70053 и keycode 69.
С помощью dmesg
Примечание: Этот метод не показывает скан коды всех клавиш, он показывает их только для неизвестных клавиш.
Вы можете узнать скан-код клавиши, нажав её и посмотрев вывод команды dmesg. Например, если у вас отображается такая строка:
Unknown key pressed (translated set 2, code 0xa0 on isa0060/serio0
значит, скан код нужной вам клавиши — 0xa0 .
Определение кодов клавиш
Коды клавиш Linux определены в файле /usr/include/linux/input-event-codes.h (смотрите переменные KEY_ ).
Определение кодов клавиш в консоли
В виртуальной консоли Linux коды клавиш можно узнать утилитой showkey(1) . showkey ждёт нажатия клавиш, и если нажатий нет в течение 10 секунд, выходит (это единственный способ выйти из программы) Чтобы работать с showkey, вы должны быть в виртуальной консоли, а не в графическом окружении. Выполните следующую команду:
и понажимайте клавиши на клавиатуре. Вы должны увидеть коды клавиш на экране.
Определение кодов клавиш в Xorg
В графическом режиме коды клавиш, которые использует Xorg, можно узнать с помощью утилиты xev(1) , которая поставляется в пакете xorg-xev . Разумеется, чтобы работать с xev, вы должны находиться в графическом окружении, а не в консоли.
Выполнив следующую команду, вы запустите xev с выводом только релевантной информации:
$ xev | awk -F'[ )]+' '/^KeyPress/ < a[NR+2] >NR in a < printf "%-3s %s\n", $5, $8 >'
38 a 55 v 54 c 50 Shift_L 133 Super_L 135 Menu
Xbindkeys — ещё одна обёртка для xev, которая сообщает коды клавиш.
Если вы нажимаете клавишу и ничего не появляется на терминале, это может означать, что либо у клавиши нет скан кода, либо сканкоду не назначен код клавиши, либо какой-то другой процесс отлавливает нажатия клавиш. Если вы подозреваете, что процесс, слушающий X сервер отлавливает нажатия клавиш, вы можете попробовать запустить xev из чистой X сессии:
Смотрите также