Каждый, кто создавал кастомную не-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.
Комментарии (13)
ARad
27.11.2022 22:40Я использую типографскую раскладку Ильи Бирмана.
Schtunguerch Автор
28.11.2022 11:12+1Там, конечно, вагон доп.символов. Но "я не редактор - мне не понять" :)
sepuka
28.11.2022 00:30+2Шорткаты -- это просто набор топологических пальцевых комбинаций. Самое главное в клавиатуре лично для меня -- не мифическая раскладка повышенной удобности, я на неё не смотрю в принципе. Главное -- чтобы клавиши просто были на своём месте: условный CTR-ALT-D должен браться одной левой рукою, условный WIN-SHIFT-F10 -- одною правою рукою.
WIN -- не эвфемизм, а суровая необходимость, причём с обеих сторон клавиатуры. Последний раз, когда я вообще интересовался количеством шорткатов (это был фотошоп и год 2003), только в одной этой программе их уже было более трёх сотен. В каждодневном использовании из которых было навскидку не менее полусотни. Т.е. уcловный ALT-F гарантированно давно чем-то занят. Поэтому сейчас, когда моя работа обычно выглядит как: я набираю шорткат > он вызывает скрипт > скрипт затыкивает серией рутинных команд и движений мышкой, сколько-нибудь осмысленный набор своих шорткатов должен содержать так ненавистные вам обе клавиши WIN просто чтобы не пересекаться с шорткатами основной программы.
ris58h
28.11.2022 10:45Последний раз, когда я вообще интересовался количеством шорткатов (это
был фотошоп и год 2003), только в одной этой программе их уже было более
трёх сотенУ этой проблемы есть разные решения, но люди продолжают лепить шорткаты.
Одно из решений - leader key. Такое есть в spacemacs (смесь vim и emacs, где команды активируется путём ввода последовательности символов после нажатия на пробел). Такое есть и в Windows - там эту роль выполняет alt. Последовательность alt, e, c - копировать, например. Великолепная задумка, которая не пользуется популярностью.
Ещё одно решение - режимы, как в vim. Неверное, его не так просто реализовать для любой программы и это может запутать пользователя, но я пользуюсь, например, Vimium в браузере.
P.S.: есть интересный блогпост на эту тему http://xahlee.info/kbd/banish_key_chords.html другие посты про клавиатуры там тоже интересные
sepuka
28.11.2022 11:19С какого перепуга появилось слово «проблема»? Есть несколько удобных способов ввода команд, позволяющих ускорить работу. Это не проблема, а удобство.
Фотошоп, надо сделать Image Size, шорткат не знаем? Первый раз идём мышкой Image>Image Size. Запоминаем подчёркнутые буквы, они доступны через ALT, т.е. то же самое достигается с клавиатуры ALT-i > ALT-e, на шорткат ещё не смотрим. В пятый раз запоминается написанный рядом шорткат ALT-CTRL-I, далее набирается уже он. В сороковой раз скорее всего будет создан Action, делающий ещё несколько операций и привязан к своему шорткату внутри программы. Не надо запоминать все сотни шорткатов, надо просто быстро находить те, что реально используются.
В четырёхсотый раз делается скрипт с key sequence и вызывается через сторонний инструмент, например, AutoHotkey. Чтобы не пересекаться с программой, шорткат будет содержать клавиши WIN и т.д.
В четырёхтысячный раз пишется уже скрипт, который сам делает нужную работу. Фотошоп для таких задач меняется на Krita, там нормальный питоновский скриптер с доступом ко всему.
Но, что особенно характерно, ни в одном из примеров для реального ускорения работы не пришлось выдумывать никакой альтернативной раскладки клавиатуры, это всё та же раскладка, какой я её увидел в 1986 году. Добавилась, по сути, только кнопка WIN и дублирование с двух сторон. Всё.
ris58h
28.11.2022 11:54С какого перепуга появилось слово «проблема»?
Более трёх сотен шорткатов это удобство? Ну и далее вы описываете решение в несколько параграфов для того, что не является проблемой. Думаю, что она всё же существует.
Напомню, что простой пользователь не будет никакие скрипты в AutoHotkey создавать и никакой питоновский скриптер тоже использовать не будет.
они доступны через ALT, т.е. то же самое достигается с клавиатуры ALT-i > ALT-e
Там можно просто Alt, i, e нажимать последовательно. В этом и вся фишка. Зажимать alt не нужно (по крайней мере так было лет 10 назад, когда я Windows ещё пользовался). Я об этом способе и упомянул как раз (leader key), как об альтернативе пальцеломающим WIN+CTL+ALT+SHIT+F15.
Про альтернативные раскладки в моём комментарии ни слова.
sepuka
28.11.2022 14:30> Более трёх сотен шорткатов это удобство?
Если программа может делать сотни разных операций и их можно не только доставать мышкой из меню, но и быстро вызывать шорткатами, то что это, если не удобство? Их не надо запоминать все, используемые сами запомнятся.
>Напомню, что простой пользователь не будет никакие скрипты в AutoHotkey создавать и никакой питоновский скриптер тоже использовать не будет.
Ну я простой пользователь, и что?. Вопрос только в частоте повторения операции. Раз в неделю -- удобно мышкой, всё равно надо искать, где что находится. Раз в день -- удобнее через Alt. Раз в час -- удобнее шорткаты. Но если день за днём повторяются одни и те же цуги команд -- любой нормальный пользователь рано или поздно их запишет и будет уже эти последовательности вызывать шорткатами. Если же одна и та же операция повторяется постоянно год за годом -- тот же пользователь их просто заскриптует, лень -- это главный признак нормальности психики. Умение же написать на питоне двадцать строк -- это обычный уровень продвинутого пользователя. У меня жена врач-гинеколог, даже она может.
Schtunguerch Автор
28.11.2022 10:56+1Не совсем понял Ваш поток мыслей. Про клавишу WIN я ничего не говорил......
И тему удобства ракладок тоже не поднимал. Задача - поправить "кривоватость" MSKLC и всего-то.
Про набор шорткатов одной рукой: кому как, я всегда нажимаю модификаторы одной рукой, а символы - второй (тоже очень удобно).Я полностью согласен с тезисом "чтобы клавиши просто были на своём месте". Ради этого я и написал данный пост (просто не у всех всё так, как у вас)
sepuka
28.11.2022 14:37> Про клавишу WIN я ничего не говорил.
Все альтернативные раскладки, что обсуждались тут за последнее время, зачем-то убирают дополнительные клавиши. У вас WIN тоже нету. А это просто ещё один модификатор в дополнение к CTRL, ALT и SHIFT, причём, гарантированно не занятый интересующей нас программой.
Schtunguerch Автор
28.11.2022 20:12Смею Вас успокоить, клавиша Win в раскладке и на клавиатуре есть, просто MSKLC её не отображает.
Да и в посте я обозначил факт того, что MSKLC не позволяет менять расположение модификаторов; к Win это тоже относится.
Я сам много использую Win: (Win+Shift+S, Win+I, Win+E, Win+X, Win+цифра)
Medeyko
Ctrl-X, Ctrl-C и Ctrl-V находятся в том месте не потому что они соответствуют буквам X, C и V (найдите в слове "paste" букву "v"), а потому что они находятся рядом так, что их удобно запомнить и удобно нажимать одной рукой. Соответственно, при смене раскладки никуда их переносить не надо.
p07a1330
Vstavit` же)
.
"Саня Дрозд дошел до буквы "и" в слове "передовую" " (c) А. Б. С.
Schtunguerch Автор
Может быть, я такой неправильный, но мне гораздо важнее факт того, чтобы символ, которую я нажимаю при наборе текста, и символ в горячей клавише 100% совпадал (я использую обе руки на клавиатуре и стараюсь использовать мышь по-минимуму).
В противном случае, мозг включает медленный интерпретатор с QWERTY на Dvorak, а левая рука начинает ругаться.
IMHO: Одной рукой - это для графических редакторов и CAD'ов