Каждый, кто создавал кастомную не-QWERTY раскладку клавиатуры через Microsoft Keyboard Layout Creator (MSKLC), обнаружил, что в процессе работы во множестве программ (включая все программы в .NET) горячие клавиши находятся на тех же местах, что и раньше у QWERTY-раскладки (Ctrl+C
, Ctrl+V
всё там же; для пользователя Dvorak это теперь Ctrl+J
и Ctrl+K
, соответственно).
В этой ситуации разработчики приложений ни в чём ни виноваты, дело в особенности работы MSKLC, которая не меняет расположение виртуальных клавиш. Сейчас разберёмся, как устроен .klc-файл и как его отредактировать, чтобы всё встало на свои места.
Оглавление
Немного абсурда
Структура .klc-файла
Лечение раскладки
Немного послесловия
Немного абсурда
В Linux: жмёшь R - воспринимается, как R какая бы это раскладка ни была. По идее, в Windows всё так же, но работает только с раскладками, что идут "в коробке" с системой (классический Dvorak там тоже есть).
Проблемы появляются при разработке собственных раскладок, либо при скачивании сторонних раскладок, в которых автор не учёл мелочи при работе в MSKLC, речь о которой пойдёт далее.
Вдобавок, наблюдается некорректная работа Caps Lock - регистр меняется там же, где стояли алфавитные символы в QWERTY (спецсимволы тоже меняются)
MSKLC в работе не меняет данные о виртуальных клавишах в раскладке!
Эта "мелочь" является корнем всех проблем с горячими клавишами и ответом на вопрос "Почему они не переехали?!"
MSKLC работает с файлами, которые имеют расширение .klc. По сути - это обыкновенный текстовый файл, который можно легко отредактировать и излечить раскладку!
Структура .klc-файла
Как было сказано ранее, .klc-файл представляет собой текстовый документ, в котором описывается вся информация о раскладке клавиатуры, с которой работает автор.
.klc-файл QWERTY-раскладки
KBD Layout01 "US"
COPYRIGHT "(c) 2022 Company"
COMPANY "Company"
LOCALENAME "en-US"
LOCALEID "00000409"
VERSION 1.0
SHIFTSTATE
0 //Column 4
1 //Column 5 : Shft
2 //Column 6 : Ctrl
LAYOUT ;an extra '@' at the end is a dead key
//SC VK_ Cap 0 1 2
//-- ---- ---- ---- ---- ----
02 1 0 1 0021 -1 // DIGIT ONE, EXCLAMATION MARK, <none>
03 2 0 2 0040 -1 // DIGIT TWO, COMMERCIAL AT, <none>
04 3 0 3 0023 -1 // DIGIT THREE, NUMBER SIGN, <none>
05 4 0 4 0024 -1 // DIGIT FOUR, DOLLAR SIGN, <none>
06 5 0 5 0025 -1 // DIGIT FIVE, PERCENT SIGN, <none>
07 6 0 6 005e -1 // DIGIT SIX, CIRCUMFLEX ACCENT, <none>
08 7 0 7 0026 -1 // DIGIT SEVEN, AMPERSAND, <none>
09 8 0 8 002a -1 // DIGIT EIGHT, ASTERISK, <none>
0a 9 0 9 0028 -1 // DIGIT NINE, LEFT PARENTHESIS, <none>
0b 0 0 0 0029 -1 // DIGIT ZERO, RIGHT PARENTHESIS, <none>
0c OEM_MINUS 0 002d 005f -1 // HYPHEN-MINUS, LOW LINE, <none>
0d OEM_PLUS 0 003d 002b -1 // EQUALS SIGN, PLUS SIGN, <none>
10 Q 1 q Q -1 // LATIN SMALL LETTER Q, LATIN CAPITAL LETTER Q, <none>
11 W 1 w W -1 // LATIN SMALL LETTER W, LATIN CAPITAL LETTER W, <none>
12 E 1 e E -1 // LATIN SMALL LETTER E, LATIN CAPITAL LETTER E, <none>
13 R 1 r R -1 // LATIN SMALL LETTER R, LATIN CAPITAL LETTER R, <none>
14 T 1 t T -1 // LATIN SMALL LETTER T, LATIN CAPITAL LETTER T, <none>
15 Y 1 y Y -1 // LATIN SMALL LETTER Y, LATIN CAPITAL LETTER Y, <none>
16 U 1 u U -1 // LATIN SMALL LETTER U, LATIN CAPITAL LETTER U, <none>
17 I 1 i I -1 // LATIN SMALL LETTER I, LATIN CAPITAL LETTER I, <none>
18 O 1 o O -1 // LATIN SMALL LETTER O, LATIN CAPITAL LETTER O, <none>
19 P 1 p P -1 // LATIN SMALL LETTER P, LATIN CAPITAL LETTER P, <none>
1a OEM_4 0 005b 007b 001b // LEFT SQUARE BRACKET, LEFT CURLY BRACKET, ESCAPE
1b OEM_6 0 005d 007d 001d // RIGHT SQUARE BRACKET, RIGHT CURLY BRACKET, INFORMATION SEPARATOR THREE
1e A 1 a A -1 // LATIN SMALL LETTER A, LATIN CAPITAL LETTER A, <none>
1f S 1 s S -1 // LATIN SMALL LETTER S, LATIN CAPITAL LETTER S, <none>
20 D 1 d D -1 // LATIN SMALL LETTER D, LATIN CAPITAL LETTER D, <none>
21 F 1 f F -1 // LATIN SMALL LETTER F, LATIN CAPITAL LETTER F, <none>
22 G 1 g G -1 // LATIN SMALL LETTER G, LATIN CAPITAL LETTER G, <none>
23 H 1 h H -1 // LATIN SMALL LETTER H, LATIN CAPITAL LETTER H, <none>
24 J 1 j J -1 // LATIN SMALL LETTER J, LATIN CAPITAL LETTER J, <none>
25 K 1 k K -1 // LATIN SMALL LETTER K, LATIN CAPITAL LETTER K, <none>
26 L 1 l L -1 // LATIN SMALL LETTER L, LATIN CAPITAL LETTER L, <none>
27 OEM_1 0 003b 003a -1 // SEMICOLON, COLON, <none>
28 OEM_7 0 0027 0022 -1 // APOSTROPHE, QUOTATION MARK, <none>
29 OEM_3 0 0060 007e -1 // GRAVE ACCENT, TILDE, <none>
2b OEM_5 0 005c 007c 001c // REVERSE SOLIDUS, VERTICAL LINE, INFORMATION SEPARATOR FOUR
2c Z 1 z Z -1 // LATIN SMALL LETTER Z, LATIN CAPITAL LETTER Z, <none>
2d X 1 x X -1 // LATIN SMALL LETTER X, LATIN CAPITAL LETTER X, <none>
2e C 1 c C -1 // LATIN SMALL LETTER C, LATIN CAPITAL LETTER C, <none>
2f V 1 v V -1 // LATIN SMALL LETTER V, LATIN CAPITAL LETTER V, <none>
30 B 1 b B -1 // LATIN SMALL LETTER B, LATIN CAPITAL LETTER B, <none>
31 N 1 n N -1 // LATIN SMALL LETTER N, LATIN CAPITAL LETTER N, <none>
32 M 1 m M -1 // LATIN SMALL LETTER M, LATIN CAPITAL LETTER M, <none>
33 OEM_COMMA 0 002c 003c -1 // COMMA, LESS-THAN SIGN, <none>
34 OEM_PERIOD 0 002e 003e -1 // FULL STOP, GREATER-THAN SIGN, <none>
35 OEM_2 0 002f 003f -1 // SOLIDUS, QUESTION MARK, <none>
39 SPACE 0 0020 0020 0020 // SPACE, SPACE, SPACE
56 OEM_102 0 005c 007c 001c // REVERSE SOLIDUS, VERTICAL LINE, INFORMATION SEPARATOR FOUR
53 DECIMAL 0 002e 002e -1 // FULL STOP, FULL STOP,
KEYNAME
01 Esc
0e Backspace
0f Tab
1c Enter
1d Ctrl
2a Shift
36 "Right Shift"
37 "Num *"
38 Alt
39 Space
3a "Caps Lock"
3b F1
3c F2
3d F3
3e F4
3f F5
40 F6
41 F7
42 F8
43 F9
44 F10
45 Pause
46 "Scroll Lock"
47 "Num 7"
48 "Num 8"
49 "Num 9"
4a "Num -"
4b "Num 4"
4c "Num 5"
4d "Num 6"
4e "Num +"
4f "Num 1"
50 "Num 2"
51 "Num 3"
52 "Num 0"
53 "Num Del"
54 "Sys Req"
57 F11
58 F12
7c F13
7d F14
7e F15
7f F16
80 F17
81 F18
82 F19
83 F20
84 F21
85 F22
86 F23
87 F24
KEYNAME_EXT
1c "Num Enter"
1d "Right Ctrl"
35 "Num /"
37 "Prnt Scrn"
38 "Right Alt"
45 "Num Lock"
46 Break
47 Home
48 Up
49 "Page Up"
4b Left
4d Right
4f End
50 Down
51 "Page Down"
52 Insert
53 Delete
54 <00>
56 Help
5b "Left Windows"
5c "Right Windows"
5d Application
DESCRIPTIONS
0409 US
LANGUAGENAMES
0409 English (United States)
ENDKBD
Следует отметить тот факт, что данные служебных клавиш в KEYNAME, KEYNAME_EXT (tab, enter и т.п.) изменить никак нельзя; даже манипуляции в .klc-файле не приведут к результату.
Работа будет просходить в секции LAYOUT, где можно обнаружить и отсутствие Caps Lock в нужных клавишах, и несовпадающие символы с виртуальными клавишами.
Пример из .klc-файла моей раскладки (клавиши: 'QJK
, при этом виртуальные клавиши помечены, как ZXCV
). Тут же и ненужное срабатывание Caps Lock (на месте апострофа (2c
) значение должно быть = 0)
//SC VK_ Cap 0 1 2 6
//-- --- --- --- --- --- ---
2c Z 1 0027 0022 -1 -1 // APOSTROPHE, QUOTATION MARK, <none>, <none>
2d X 1 q Q -1 005b // LATIN SMALL LETTER Q, LATIN CAPITAL LETTER Q, <none>, LEFT SQUARE BRACKET
2e C 1 j J -1 005d // LATIN SMALL LETTER J, LATIN CAPITAL LETTER J, <none>, RIGHT SQUARE BRACKET
2f V 1 k K -1 005f // LATIN SMALL LETTER K, LATIN CAPITAL LETTER K, <none>, LOW LINE
Лечение раскладки
Шаг 1. Отредактировать .klc-файл так, чтобы коды клавиш и символы совпадали (ну или так, как хочется).
Клавиши букв и цифр обозначаются соответствующим образом (A-Z, 0-9). Клавиши знаков препинания обозначаются иначе, через OEM_
Код виртуальной клавиши | Символ на клавиатуре |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.klc-файл ДО
KBD schtaoeu "US SchtinguêrDvorak"
COPYRIGHT "Meh"
COMPANY "Schtinguêrch"
LOCALENAME "en-US"
LOCALEID "00000409"
VERSION 1.0
SHIFTSTATE
0 //Column 4
1 //Column 5 : Shft
2 //Column 6 : Ctrl
6 //Column 7 : Ctrl Alt
LAYOUT ;an extra '@' at the end is a dead key
//SC VK_ Cap 0 1 2 6
//-- ---- ---- ---- ---- ---- ----
02 1 0 1 003f -1 -1 // DIGIT ONE, QUESTION MARK, <none>, <none>
03 2 0 2 0040 -1 -1 // DIGIT TWO, COMMERCIAL AT, <none>, <none>
04 3 0 3 0023 -1 -1 // DIGIT THREE, NUMBER SIGN, <none>, <none>
05 4 0 4 0024 -1 -1 // DIGIT FOUR, DOLLAR SIGN, <none>, <none>
06 5 0 5 0025 -1 -1 // DIGIT FIVE, PERCENT SIGN, <none>, <none>
07 6 0 6 005e -1 -1 // DIGIT SIX, CIRCUMFLEX ACCENT, <none>, <none>
08 7 0 7 0026 -1 -1 // DIGIT SEVEN, AMPERSAND, <none>, <none>
09 8 0 8 002a -1 -1 // DIGIT EIGHT, ASTERISK, <none>, <none>
0a 9 0 9 0028 -1 -1 // DIGIT NINE, LEFT PARENTHESIS, <none>, <none>
0b 0 0 0 0029 -1 -1 // DIGIT ZERO, RIGHT PARENTHESIS, <none>, <none>
0c OEM_MINUS 0 002d 005f -1 -1 // HYPHEN-MINUS, LOW LINE, <none>, <none>
0d OEM_PLUS 0 003d 002b -1 -1 // EQUALS SIGN, PLUS SIGN, <none>, <none>
10 Q 1 003b 003a -1 -1 // SEMICOLON, COLON, <none>, <none>
11 W 1 002c 0021 -1 003c // COMMA, EXCLAMATION MARK, <none>, LESS-THAN SIGN
12 E 1 002e 003d -1 003e // FULL STOP, EQUALS SIGN, <none>, GREATER-THAN SIGN
13 R 1 p P -1 007e // LATIN SMALL LETTER P, LATIN CAPITAL LETTER P, <none>, TILDE
14 T 1 y Y -1 -1 // LATIN SMALL LETTER Y, LATIN CAPITAL LETTER Y, <none>, <none>
15 Y 1 f F -1 -1 // LATIN SMALL LETTER F, LATIN CAPITAL LETTER F, <none>, <none>
16 U 1 g G -1 00e6 // LATIN SMALL LETTER G, LATIN CAPITAL LETTER G, <none>, LATIN SMALL LETTER AE (ash) *
17 I 1 l L -1 005e // LATIN SMALL LETTER L, LATIN CAPITAL LETTER L, <none>, CIRCUMFLEX ACCENT
18 O 1 r R -1 0023 // LATIN SMALL LETTER R, LATIN CAPITAL LETTER R, <none>, NUMBER SIGN
19 P 1 c C -1 007c // LATIN SMALL LETTER C, LATIN CAPITAL LETTER C, <none>, VERTICAL LINE
1a OEM_4 0 0301@ 0302@ 001b 00c6 // COMBINING ACUTE ACCENT (Oxia, Tonos), COMBINING CIRCUMFLEX ACCENT, ESCAPE, LATIN CAPITAL LETTER AE (ash) *
1b OEM_6 0 0300@ 0308@ 001d -1 // COMBINING GRAVE ACCENT (Varia), COMBINING DIAERESIS (Dialytika), INFORMATION SEPARATOR THREE, <none>
1e A 1 a A -1 007b // LATIN SMALL LETTER A, LATIN CAPITAL LETTER A, <none>, LEFT CURLY BRACKET
1f S 1 o O -1 0028 // LATIN SMALL LETTER O, LATIN CAPITAL LETTER O, <none>, LEFT PARENTHESIS
20 D 1 e E -1 0029 // LATIN SMALL LETTER E, LATIN CAPITAL LETTER E, <none>, RIGHT PARENTHESIS
21 F 1 u U -1 007d // LATIN SMALL LETTER U, LATIN CAPITAL LETTER U, <none>, RIGHT CURLY BRACKET
22 G 1 i I -1 0024 // LATIN SMALL LETTER I, LATIN CAPITAL LETTER I, <none>, DOLLAR SIGN
23 H 1 d D -1 0025 // LATIN SMALL LETTER D, LATIN CAPITAL LETTER D, <none>, PERCENT SIGN
24 J 1 h H -1 002b // LATIN SMALL LETTER H, LATIN CAPITAL LETTER H, <none>, PLUS SIGN
25 K 1 t T -1 002d // LATIN SMALL LETTER T, LATIN CAPITAL LETTER T, <none>, HYPHEN-MINUS
26 L 1 n N -1 002a // LATIN SMALL LETTER N, LATIN CAPITAL LETTER N, <none>, ASTERISK
27 OEM_1 0 s S -1 002f // LATIN SMALL LETTER S, LATIN CAPITAL LETTER S, <none>, SOLIDUS
28 OEM_7 0 z Z -1 0026 // LATIN SMALL LETTER Z, LATIN CAPITAL LETTER Z, <none>, AMPERSAND
29 OEM_3 0 0060 007e -1 -1 // GRAVE ACCENT, TILDE, <none>, <none>
2b OEM_5 0 -1 -1 001c -1 // <none>, <none>, INFORMATION SEPARATOR FOUR, <none>
2c Z 1 0027 0022 -1 -1 // APOSTROPHE, QUOTATION MARK, <none>, <none>
2d X 1 q Q -1 005b // LATIN SMALL LETTER Q, LATIN CAPITAL LETTER Q, <none>, LEFT SQUARE BRACKET
2e C 1 j J -1 005d // LATIN SMALL LETTER J, LATIN CAPITAL LETTER J, <none>, RIGHT SQUARE BRACKET
2f V 1 k K -1 005f // LATIN SMALL LETTER K, LATIN CAPITAL LETTER K, <none>, LOW LINE
30 B 1 x X -1 -1 // LATIN SMALL LETTER X, LATIN CAPITAL LETTER X, <none>, <none>
31 N 1 b B -1 -1 // LATIN SMALL LETTER B, LATIN CAPITAL LETTER B, <none>, <none>
32 M 1 m M -1 0153 // LATIN SMALL LETTER M, LATIN CAPITAL LETTER M, <none>, LATIN SMALL LIGATURE OE
33 OEM_COMMA 0 w W -1 005f // LATIN SMALL LETTER W, LATIN CAPITAL LETTER W, <none>, LOW LINE
34 OEM_PERIOD 0 v V -1 007e // LATIN SMALL LETTER V, LATIN CAPITAL LETTER V, <none>, TILDE
35 OEM_2 0 002f 005c -1 0152 // SOLIDUS, REVERSE SOLIDUS, <none>, LATIN CAPITAL LIGATURE OE
39 SPACE 0 0020 0020 0020 -1 // SPACE, SPACE, SPACE, <none>
56 OEM_102 0 005c 007c 001c -1 // REVERSE SOLIDUS, VERTICAL LINE, INFORMATION SEPARATOR FOUR, <none>
53 DECIMAL 0 002e 002e -1 -1 // FULL STOP, FULL STOP, ,
DEADKEY 0301
0062 00df // b -> ß
0061 00e1 // a -> á
0064 00f0 // d -> ð
0069 00ed // i -> í
0075 00fa // u -> ú
0065 00e9 // e -> é
006f 00f3 // o -> ó
006e 00f1 // n -> ñ
0063 00e7 // c -> ç
0079 00fd // y -> ý
0041 00c1 // A -> Á
0044 00d0 // D -> Ð
0049 00cd // I -> Í
0055 00da // U -> Ú
0045 00c9 // E -> É
004f 00d3 // O -> Ó
004e 00d1 // N -> Ñ
0021 00a1 // ! -> ¡
0043 00c7 // C -> Ç
0059 00dd // Y -> Ý
003f 00bf // ? -> ¿
DEADKEY 0302
0061 00e2 // a -> â
0069 00ee // i -> î
0075 00fb // u -> û
0065 00ea // e -> ê
006f 00f4 // o -> ô
0041 00c2 // A -> Â
0049 00ce // I -> Î
0055 00db // U -> Û
0045 00ca // E -> Ê
004f 00d4 // O -> Ô
DEADKEY 0300
0061 00e0 // a -> à
0069 00ec // i -> ì
0075 00f9 // u -> ù
0065 00e8 // e -> è
006f 00f2 // o -> ò
0079 00fe // y -> þ
0041 00c0 // A -> À
0049 00cc // I -> Ì
0055 00d9 // U -> Ù
0045 00c8 // E -> È
004f 00d2 // O -> Ò
0059 00ff // Y -> ÿ
DEADKEY 0308
0061 00e4 // a -> ä
0069 00ef // i -> ï
0075 00fc // u -> ü
0065 00eb // e -> ë
006f 00f6 // o -> ö
0079 00ff // y -> ÿ
0041 00c4 // A -> Ä
0049 00cf // I -> Ï
0055 00dc // U -> Ü
0045 00cb // E -> Ë
004f 00d6 // O -> Ö
KEYNAME
01 Esc
0e Backspace
0f Tab
1c Enter
1d Ctrl
2a Shift
36 "Right Shift"
37 "Num *"
38 Alt
39 Space
3a "Caps Lock"
3b F1
3c F2
3d F3
3e F4
3f F5
40 F6
41 F7
42 F8
43 F9
44 F10
45 Pause
46 "Scroll Lock"
47 "Num 7"
48 "Num 8"
49 "Num 9"
4a "Num -"
4b "Num 4"
4c "Num 5"
4d "Num 6"
4e "Num +"
4f "Num 1"
50 "Num 2"
51 "Num 3"
52 "Num 0"
53 "Num Del"
54 "Sys Req"
57 F11
58 F12
7c F13
7d F14
7e F15
7f F16
80 F17
81 F18
82 F19
83 F20
84 F21
85 F22
86 F23
87 F24
KEYNAME_EXT
1c "Num Enter"
1d "Right Ctrl"
35 "Num /"
37 "Prnt Scrn"
38 "Right Alt"
45 "Num Lock"
46 Break
47 Home
48 Up
49 "Page Up"
4b Left
4d Right
4f End
50 Down
51 "Page Down"
52 Insert
53 Delete
54 <00>
56 Help
5b "Left Windows"
5c "Right Windows"
5d Application
KEYNAME_DEAD
0301 "COMBINING ACUTE ACCENT (Oxia, Tonos)"
0302 "COMBINING CIRCUMFLEX ACCENT"
0300 "COMBINING GRAVE ACCENT (Varia)"
0308 "COMBINING DIAERESIS (Dialytika)"
DESCRIPTIONS
0409 US SchtinguêrDvorak
LANGUAGENAMES
0409 English (United States)
ENDKBD
.klc-файл ПОСЛЕ
KBD schtaoeu "US SchtinguêrDvorak"
COPYRIGHT "Meh"
COMPANY "Schtinguêrch"
LOCALENAME "en-US"
LOCALEID "00000409"
VERSION 1.0
SHIFTSTATE
0 //Column 4
1 //Column 5 : Shft
2 //Column 6 : Ctrl
6 //Column 7 : Ctrl Alt
LAYOUT ;an extra '@' at the end is a dead key
//SC VK_ Cap 0 1 2 6
//-- ---- ---- ---- ---- ---- ----
02 1 0 1 003f -1 -1 // DIGIT ONE, QUESTION MARK, <none>, <none>
03 2 0 2 0040 -1 -1 // DIGIT TWO, COMMERCIAL AT, <none>, <none>
04 3 0 3 0023 -1 -1 // DIGIT THREE, NUMBER SIGN, <none>, <none>
05 4 0 4 0024 -1 -1 // DIGIT FOUR, DOLLAR SIGN, <none>, <none>
06 5 0 5 0025 -1 -1 // DIGIT FIVE, PERCENT SIGN, <none>, <none>
07 6 0 6 005e -1 -1 // DIGIT SIX, CIRCUMFLEX ACCENT, <none>, <none>
08 7 0 7 0026 -1 -1 // DIGIT SEVEN, AMPERSAND, <none>, <none>
09 8 0 8 002a -1 -1 // DIGIT EIGHT, ASTERISK, <none>, <none>
0a 9 0 9 0028 -1 -1 // DIGIT NINE, LEFT PARENTHESIS, <none>, <none>
0b 0 0 0 0029 -1 -1 // DIGIT ZERO, RIGHT PARENTHESIS, <none>, <none>
0c OEM_MINUS 0 002d 005f -1 -1 // HYPHEN-MINUS, LOW LINE, <none>, <none>
0d OEM_PLUS 0 003d 002b -1 -1 // EQUALS SIGN, PLUS SIGN, <none>, <none>
10 OEM_1 0 003b 003a -1 -1 // SEMICOLON, COLON, <none>, <none>
11 OEM_COMMA 0 002c 0021 -1 003c // COMMA, EXCLAMATION MARK, <none>, LESS-THAN SIGN
12 OEM_PERIOD 0 002e 003d -1 003e // FULL STOP, EQUALS SIGN, <none>, GREATER-THAN SIGN
13 P 1 p P -1 007e // LATIN SMALL LETTER P, LATIN CAPITAL LETTER P, <none>, TILDE
14 Y 1 y Y -1 -1 // LATIN SMALL LETTER Y, LATIN CAPITAL LETTER Y, <none>, <none>
15 F 1 f F -1 -1 // LATIN SMALL LETTER F, LATIN CAPITAL LETTER F, <none>, <none>
16 G 1 g G -1 00e6 // LATIN SMALL LETTER G, LATIN CAPITAL LETTER G, <none>, LATIN SMALL LETTER AE (ash) *
17 L 1 l L -1 005e // LATIN SMALL LETTER L, LATIN CAPITAL LETTER L, <none>, CIRCUMFLEX ACCENT
18 R 1 r R -1 0023 // LATIN SMALL LETTER R, LATIN CAPITAL LETTER R, <none>, NUMBER SIGN
19 C 1 c C -1 007c // LATIN SMALL LETTER C, LATIN CAPITAL LETTER C, <none>, VERTICAL LINE
1a OEM_4 0 0301@ 0302@ 001b 00c6 // COMBINING ACUTE ACCENT (Oxia, Tonos), COMBINING CIRCUMFLEX ACCENT, ESCAPE, LATIN CAPITAL LETTER AE (ash) *
1b OEM_6 0 0300@ 0308@ 001d -1 // COMBINING GRAVE ACCENT (Varia), COMBINING DIAERESIS (Dialytika), INFORMATION SEPARATOR THREE, <none>
1e A 1 a A -1 007b // LATIN SMALL LETTER A, LATIN CAPITAL LETTER A, <none>, LEFT CURLY BRACKET
1f O 1 o O -1 0028 // LATIN SMALL LETTER O, LATIN CAPITAL LETTER O, <none>, LEFT PARENTHESIS
20 E 1 e E -1 0029 // LATIN SMALL LETTER E, LATIN CAPITAL LETTER E, <none>, RIGHT PARENTHESIS
21 U 1 u U -1 007d // LATIN SMALL LETTER U, LATIN CAPITAL LETTER U, <none>, RIGHT CURLY BRACKET
22 I 1 i I -1 0024 // LATIN SMALL LETTER I, LATIN CAPITAL LETTER I, <none>, DOLLAR SIGN
23 D 1 d D -1 0025 // LATIN SMALL LETTER D, LATIN CAPITAL LETTER D, <none>, PERCENT SIGN
24 H 1 h H -1 002b // LATIN SMALL LETTER H, LATIN CAPITAL LETTER H, <none>, PLUS SIGN
25 T 1 t T -1 002d // LATIN SMALL LETTER T, LATIN CAPITAL LETTER T, <none>, HYPHEN-MINUS
26 N 1 n N -1 002a // LATIN SMALL LETTER N, LATIN CAPITAL LETTER N, <none>, ASTERISK
27 S 1 s S -1 002f // LATIN SMALL LETTER S, LATIN CAPITAL LETTER S, <none>, SOLIDUS
28 Z 1 z Z -1 0026 // LATIN SMALL LETTER Z, LATIN CAPITAL LETTER Z, <none>, AMPERSAND
29 OEM_3 0 0060 007e -1 -1 // GRAVE ACCENT, TILDE, <none>, <none>
2b OEM_5 0 -1 -1 001c -1 // <none>, <none>, INFORMATION SEPARATOR FOUR, <none>
2c OEM_7 0 0027 0022 -1 -1 // APOSTROPHE, QUOTATION MARK, <none>, <none>
2d Q 1 q Q -1 005b // LATIN SMALL LETTER Q, LATIN CAPITAL LETTER Q, <none>, LEFT SQUARE BRACKET
2e J 1 j J -1 005d // LATIN SMALL LETTER J, LATIN CAPITAL LETTER J, <none>, RIGHT SQUARE BRACKET
2f K 1 k K -1 005f // LATIN SMALL LETTER K, LATIN CAPITAL LETTER K, <none>, LOW LINE
30 X 1 x X -1 -1 // LATIN SMALL LETTER X, LATIN CAPITAL LETTER X, <none>, <none>
31 B 1 b B -1 -1 // LATIN SMALL LETTER B, LATIN CAPITAL LETTER B, <none>, <none>
32 M 1 m M -1 0153 // LATIN SMALL LETTER M, LATIN CAPITAL LETTER M, <none>, LATIN SMALL LIGATURE OE
33 W 1 w W -1 005f // LATIN SMALL LETTER W, LATIN CAPITAL LETTER W, <none>, LOW LINE
34 V 1 v V -1 007e // LATIN SMALL LETTER V, LATIN CAPITAL LETTER V, <none>, TILDE
35 OEM_2 0 002f 005c -1 0152 // SOLIDUS, REVERSE SOLIDUS, <none>, LATIN CAPITAL LIGATURE OE
39 SPACE 0 0020 0020 0020 -1 // SPACE, SPACE, SPACE, <none>
56 OEM_102 0 005c 007c 001c -1 // REVERSE SOLIDUS, VERTICAL LINE, INFORMATION SEPARATOR FOUR, <none>
53 DECIMAL 0 002e 002e -1 -1 // FULL STOP, FULL STOP, ,
DEADKEY 0301
0062 00df // b -> ß
0061 00e1 // a -> á
0064 00f0 // d -> ð
0069 00ed // i -> í
0075 00fa // u -> ú
0065 00e9 // e -> é
006f 00f3 // o -> ó
006e 00f1 // n -> ñ
0063 00e7 // c -> ç
0079 00fd // y -> ý
0041 00c1 // A -> Á
0044 00d0 // D -> Ð
0049 00cd // I -> Í
0055 00da // U -> Ú
0045 00c9 // E -> É
004f 00d3 // O -> Ó
004e 00d1 // N -> Ñ
0021 00a1 // ! -> ¡
0043 00c7 // C -> Ç
0059 00dd // Y -> Ý
003f 00bf // ? -> ¿
DEADKEY 0302
0061 00e2 // a -> â
0069 00ee // i -> î
0075 00fb // u -> û
0065 00ea // e -> ê
006f 00f4 // o -> ô
0041 00c2 // A -> Â
0049 00ce // I -> Î
0055 00db // U -> Û
0045 00ca // E -> Ê
004f 00d4 // O -> Ô
DEADKEY 0300
0061 00e0 // a -> à
0069 00ec // i -> ì
0075 00f9 // u -> ù
0065 00e8 // e -> è
006f 00f2 // o -> ò
0079 00fe // y -> þ
0041 00c0 // A -> À
0049 00cc // I -> Ì
0055 00d9 // U -> Ù
0045 00c8 // E -> È
004f 00d2 // O -> Ò
0059 00ff // Y -> ÿ
DEADKEY 0308
0061 00e4 // a -> ä
0069 00ef // i -> ï
0075 00fc // u -> ü
0065 00eb // e -> ë
006f 00f6 // o -> ö
0079 00ff // y -> ÿ
0041 00c4 // A -> Ä
0049 00cf // I -> Ï
0055 00dc // U -> Ü
0045 00cb // E -> Ë
004f 00d6 // O -> Ö
KEYNAME
01 Esc
0e Backspace
0f Tab
1c Enter
1d Ctrl
2a Shift
36 "Right Shift"
37 "Num *"
38 Alt
39 Space
3a "Caps Lock"
3b F1
3c F2
3d F3
3e F4
3f F5
40 F6
41 F7
42 F8
43 F9
44 F10
45 Pause
46 "Scroll Lock"
47 "Num 7"
48 "Num 8"
49 "Num 9"
4a "Num -"
4b "Num 4"
4c "Num 5"
4d "Num 6"
4e "Num +"
4f "Num 1"
50 "Num 2"
51 "Num 3"
52 "Num 0"
53 "Num Del"
54 "Sys Req"
57 F11
58 F12
7c F13
7d F14
7e F15
7f F16
80 F17
81 F18
82 F19
83 F20
84 F21
85 F22
86 F23
87 F24
KEYNAME_EXT
1c "Num Enter"
1d "Right Ctrl"
35 "Num /"
37 "Prnt Scrn"
38 "Right Alt"
45 "Num Lock"
46 Break
47 Home
48 Up
49 "Page Up"
4b Left
4d Right
4f End
50 Down
51 "Page Down"
52 Insert
53 Delete
54 <00>
56 Help
5b "Left Windows"
5c "Right Windows"
5d Application
KEYNAME_DEAD
0301 "COMBINING ACUTE ACCENT (Oxia, Tonos)"
0302 "COMBINING CIRCUMFLEX ACCENT"
0300 "COMBINING GRAVE ACCENT (Varia)"
0308 "COMBINING DIAERESIS (Dialytika)"
DESCRIPTIONS
0409 US SchtinguêrDvorak
LANGUAGENAMES
0409 English (United States)
ENDKBD
Шаг 2. Открыть отредактированный файл в MSKLC, собрать раскладку и установить её
Перед тем, как открывать MSKLC, необходимо удалить проблемную раскладку из системы (то же, что и удалять программы через панель управления). Про бэкапы не забываем..
После того, как был открыт .klc-файл, можно сразу убедиться в правильной настройке переключения Caps Lock
Затем выбираем Project > Build DLL and Setup Package, открываем полученные исходники и запускаем установщик (setup.exe), перезагружаем ПК и радуемся
Немного послесловия
Всё, как всегда, криво, но решаемо. Таким же макаром, можно настроить русскоязычную раскладку, чтобы система воспринимала ЙЦУКЕН или Диктор как Dvorak или Workman или что-то ещё, а не QWERTY.