Каждый, кто создавал кастомную не-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-раскладки
KBDLayout01"US" COPYRIGHT"(c) 2022 Company" COMPANY"Company" LOCALENAME"en-US" LOCALEID"00000409" VERSION1.0 SHIFTSTATE 0//Column 4 1//Column 5 : Shft 2//Column 6 : Ctrl LAYOUT;an extra '@' at the end is a dead key //SCVK_Cap012 //---------------------- 021010021-1// DIGIT ONE, EXCLAMATION MARK, <none> 032020040-1// DIGIT TWO, COMMERCIAL AT, <none> 043030023-1// DIGIT THREE, NUMBER SIGN, <none> 054040024-1// DIGIT FOUR, DOLLAR SIGN, <none> 065050025-1// DIGIT FIVE, PERCENT SIGN, <none> 07606005e-1// DIGIT SIX, CIRCUMFLEX ACCENT, <none> 087070026-1// DIGIT SEVEN, AMPERSAND, <none> 09808002a-1// DIGIT EIGHT, ASTERISK, <none> 0a9090028-1// DIGIT NINE, LEFT PARENTHESIS, <none> 0b0000029-1// DIGIT ZERO, RIGHT PARENTHESIS, <none> 0cOEM_MINUS0002d005f-1// HYPHEN-MINUS, LOW LINE, <none> 0dOEM_PLUS0003d002b-1// EQUALS SIGN, PLUS SIGN, <none> 10Q1qQ-1// LATIN SMALL LETTER Q, LATIN CAPITAL LETTER Q, <none> 11W1wW-1// LATIN SMALL LETTER W, LATIN CAPITAL LETTER W, <none> 12E1eE-1// LATIN SMALL LETTER E, LATIN CAPITAL LETTER E, <none> 13R1rR-1// LATIN SMALL LETTER R, LATIN CAPITAL LETTER R, <none> 14T1tT-1// LATIN SMALL LETTER T, LATIN CAPITAL LETTER T, <none> 15Y1yY-1// LATIN SMALL LETTER Y, LATIN CAPITAL LETTER Y, <none> 16U1uU-1// LATIN SMALL LETTER U, LATIN CAPITAL LETTER U, <none> 17I1iI-1// LATIN SMALL LETTER I, LATIN CAPITAL LETTER I, <none> 18O1oO-1// LATIN SMALL LETTER O, LATIN CAPITAL LETTER O, <none> 19P1pP-1// LATIN SMALL LETTER P, LATIN CAPITAL LETTER P, <none> 1aOEM_40005b007b001b// LEFT SQUARE BRACKET, LEFT CURLY BRACKET, ESCAPE 1bOEM_60005d007d001d// RIGHT SQUARE BRACKET, RIGHT CURLY BRACKET, INFORMATION SEPARATOR THREE 1eA1aA-1// LATIN SMALL LETTER A, LATIN CAPITAL LETTER A, <none> 1fS1sS-1// LATIN SMALL LETTER S, LATIN CAPITAL LETTER S, <none> 20D1dD-1// LATIN SMALL LETTER D, LATIN CAPITAL LETTER D, <none> 21F1fF-1// LATIN SMALL LETTER F, LATIN CAPITAL LETTER F, <none> 22G1gG-1// LATIN SMALL LETTER G, LATIN CAPITAL LETTER G, <none> 23H1hH-1// LATIN SMALL LETTER H, LATIN CAPITAL LETTER H, <none> 24J1jJ-1// LATIN SMALL LETTER J, LATIN CAPITAL LETTER J, <none> 25K1kK-1// LATIN SMALL LETTER K, LATIN CAPITAL LETTER K, <none> 26L1lL-1// LATIN SMALL LETTER L, LATIN CAPITAL LETTER L, <none> 27OEM_10003b003a-1// SEMICOLON, COLON, <none> 28OEM_7000270022-1// APOSTROPHE, QUOTATION MARK, <none> 29OEM_300060007e-1// GRAVE ACCENT, TILDE, <none> 2bOEM_50005c007c001c// REVERSE SOLIDUS, VERTICAL LINE, INFORMATION SEPARATOR FOUR 2cZ1zZ-1// LATIN SMALL LETTER Z, LATIN CAPITAL LETTER Z, <none> 2dX1xX-1// LATIN SMALL LETTER X, LATIN CAPITAL LETTER X, <none> 2eC1cC-1// LATIN SMALL LETTER C, LATIN CAPITAL LETTER C, <none> 2fV1vV-1// LATIN SMALL LETTER V, LATIN CAPITAL LETTER V, <none> 30B1bB-1// LATIN SMALL LETTER B, LATIN CAPITAL LETTER B, <none> 31N1nN-1// LATIN SMALL LETTER N, LATIN CAPITAL LETTER N, <none> 32M1mM-1// LATIN SMALL LETTER M, LATIN CAPITAL LETTER M, <none> 33OEM_COMMA0002c003c-1// COMMA, LESS-THAN SIGN, <none> 34OEM_PERIOD0002e003e-1// FULL STOP, GREATER-THAN SIGN, <none> 35OEM_20002f003f-1// SOLIDUS, QUESTION MARK, <none> 39SPACE0002000200020// SPACE, SPACE, SPACE 56OEM_1020005c007c001c// REVERSE SOLIDUS, VERTICAL LINE, INFORMATION SEPARATOR FOUR 53DECIMAL0002e002e-1// FULL STOP, FULL STOP, KEYNAME 01Esc 0eBackspace 0fTab 1cEnter 1dCtrl 2aShift 36"Right Shift" 37"Num *" 38Alt 39Space 3a"Caps Lock" 3bF1 3cF2 3dF3 3eF4 3fF5 40F6 41F7 42F8 43F9 44F10 45Pause 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" 57F11 58F12 7cF13 7dF14 7eF15 7fF16 80F17 81F18 82F19 83F20 84F21 85F22 86F23 87F24 KEYNAME_EXT 1c"Num Enter" 1d"Right Ctrl" 35"Num /" 37"Prnt Scrn" 38"Right Alt" 45"Num Lock" 46Break 47Home 48Up 49"Page Up" 4bLeft 4dRight 4fEnd 50Down 51"Page Down" 52Insert 53Delete 54<00> 56Help 5b"Left Windows" 5c"Right Windows" 5dApplication DESCRIPTIONS 0409US LANGUAGENAMES 0409English (United States) ENDKBD
Следует отметить тот факт, что данные служебных клавиш в KEYNAME, KEYNAME_EXT (tab, enter и т.п.) изменить никак нельзя; даже манипуляции в .klc-файле не приведут к результату.
Работа будет просходить в секции LAYOUT, где можно обнаружить и отсутствие Caps Lock в нужных клавишах, и несовпадающие символы с виртуальными клавишами.
Пример из .klc-файла моей раскладки (клавиши: 'QJK, при этом виртуальные клавиши помечены, как ZXCV). Тут же и ненужное срабатывание Caps Lock (на месте апострофа (2c) значение должно быть = 0)
//SCVK_Cap0126 //-------------------- 2cZ100270022-1-1// APOSTROPHE, QUOTATION MARK, <none>, <none> 2dX1qQ-1005b// LATIN SMALL LETTER Q, LATIN CAPITAL LETTER Q, <none>, LEFT SQUARE BRACKET 2eC1jJ-1005d// LATIN SMALL LETTER J, LATIN CAPITAL LETTER J, <none>, RIGHT SQUARE BRACKET 2fV1kK-1005f// LATIN SMALL LETTER K, LATIN CAPITAL LETTER K, <none>, LOW LINE
Лечение раскладки
Шаг 1. Отредактировать .klc-файл так, чтобы коды клавиш и символы совпадали (ну или так, как хочется).
Клавиши букв и цифр обозначаются соответствующим образом (A-Z, 0-9). Клавиши знаков препинания обозначаются иначе, через OEM_
|
Код виртуальной клавиши |
Символ на клавиатуре |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.klc-файл ДО
KBDschtaoeu"US SchtinguêrDvorak" COPYRIGHT"Meh" COMPANY"Schtinguêrch" LOCALENAME"en-US" LOCALEID"00000409" VERSION1.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 //SCVK_Cap0126 //-------------------------- 02101003f-1-1// DIGIT ONE, QUESTION MARK, <none>, <none> 032020040-1-1// DIGIT TWO, COMMERCIAL AT, <none>, <none> 043030023-1-1// DIGIT THREE, NUMBER SIGN, <none>, <none> 054040024-1-1// DIGIT FOUR, DOLLAR SIGN, <none>, <none> 065050025-1-1// DIGIT FIVE, PERCENT SIGN, <none>, <none> 07606005e-1-1// DIGIT SIX, CIRCUMFLEX ACCENT, <none>, <none> 087070026-1-1// DIGIT SEVEN, AMPERSAND, <none>, <none> 09808002a-1-1// DIGIT EIGHT, ASTERISK, <none>, <none> 0a9090028-1-1// DIGIT NINE, LEFT PARENTHESIS, <none>, <none> 0b0000029-1-1// DIGIT ZERO, RIGHT PARENTHESIS, <none>, <none> 0cOEM_MINUS0002d005f-1-1// HYPHEN-MINUS, LOW LINE, <none>, <none> 0dOEM_PLUS0003d002b-1-1// EQUALS SIGN, PLUS SIGN, <none>, <none> 10Q1003b003a-1-1// SEMICOLON, COLON, <none>, <none> 11W1002c0021-1003c// COMMA, EXCLAMATION MARK, <none>, LESS-THAN SIGN 12E1002e003d-1003e// FULL STOP, EQUALS SIGN, <none>, GREATER-THAN SIGN 13R1pP-1007e// LATIN SMALL LETTER P, LATIN CAPITAL LETTER P, <none>, TILDE 14T1yY-1-1// LATIN SMALL LETTER Y, LATIN CAPITAL LETTER Y, <none>, <none> 15Y1fF-1-1// LATIN SMALL LETTER F, LATIN CAPITAL LETTER F, <none>, <none> 16U1gG-100e6// LATIN SMALL LETTER G, LATIN CAPITAL LETTER G, <none>, LATIN SMALL LETTER AE (ash) * 17I1lL-1005e// LATIN SMALL LETTER L, LATIN CAPITAL LETTER L, <none>, CIRCUMFLEX ACCENT 18O1rR-10023// LATIN SMALL LETTER R, LATIN CAPITAL LETTER R, <none>, NUMBER SIGN 19P1cC-1007c// LATIN SMALL LETTER C, LATIN CAPITAL LETTER C, <none>, VERTICAL LINE 1aOEM_400301@0302@001b00c6// COMBINING ACUTE ACCENT (Oxia, Tonos), COMBINING CIRCUMFLEX ACCENT, ESCAPE, LATIN CAPITAL LETTER AE (ash) * 1bOEM_600300@0308@001d-1// COMBINING GRAVE ACCENT (Varia), COMBINING DIAERESIS (Dialytika), INFORMATION SEPARATOR THREE, <none> 1eA1aA-1007b// LATIN SMALL LETTER A, LATIN CAPITAL LETTER A, <none>, LEFT CURLY BRACKET 1fS1oO-10028// LATIN SMALL LETTER O, LATIN CAPITAL LETTER O, <none>, LEFT PARENTHESIS 20D1eE-10029// LATIN SMALL LETTER E, LATIN CAPITAL LETTER E, <none>, RIGHT PARENTHESIS 21F1uU-1007d// LATIN SMALL LETTER U, LATIN CAPITAL LETTER U, <none>, RIGHT CURLY BRACKET 22G1iI-10024// LATIN SMALL LETTER I, LATIN CAPITAL LETTER I, <none>, DOLLAR SIGN 23H1dD-10025// LATIN SMALL LETTER D, LATIN CAPITAL LETTER D, <none>, PERCENT SIGN 24J1hH-1002b// LATIN SMALL LETTER H, LATIN CAPITAL LETTER H, <none>, PLUS SIGN 25K1tT-1002d// LATIN SMALL LETTER T, LATIN CAPITAL LETTER T, <none>, HYPHEN-MINUS 26L1nN-1002a// LATIN SMALL LETTER N, LATIN CAPITAL LETTER N, <none>, ASTERISK 27OEM_10sS-1002f// LATIN SMALL LETTER S, LATIN CAPITAL LETTER S, <none>, SOLIDUS 28OEM_70zZ-10026// LATIN SMALL LETTER Z, LATIN CAPITAL LETTER Z, <none>, AMPERSAND 29OEM_300060007e-1-1// GRAVE ACCENT, TILDE, <none>, <none> 2bOEM_50-1-1001c-1// <none>, <none>, INFORMATION SEPARATOR FOUR, <none> 2cZ100270022-1-1// APOSTROPHE, QUOTATION MARK, <none>, <none> 2dX1qQ-1005b// LATIN SMALL LETTER Q, LATIN CAPITAL LETTER Q, <none>, LEFT SQUARE BRACKET 2eC1jJ-1005d// LATIN SMALL LETTER J, LATIN CAPITAL LETTER J, <none>, RIGHT SQUARE BRACKET 2fV1kK-1005f// LATIN SMALL LETTER K, LATIN CAPITAL LETTER K, <none>, LOW LINE 30B1xX-1-1// LATIN SMALL LETTER X, LATIN CAPITAL LETTER X, <none>, <none> 31N1bB-1-1// LATIN SMALL LETTER B, LATIN CAPITAL LETTER B, <none>, <none> 32M1mM-10153// LATIN SMALL LETTER M, LATIN CAPITAL LETTER M, <none>, LATIN SMALL LIGATURE OE 33OEM_COMMA0wW-1005f// LATIN SMALL LETTER W, LATIN CAPITAL LETTER W, <none>, LOW LINE 34OEM_PERIOD0vV-1007e// LATIN SMALL LETTER V, LATIN CAPITAL LETTER V, <none>, TILDE 35OEM_20002f005c-10152// SOLIDUS, REVERSE SOLIDUS, <none>, LATIN CAPITAL LIGATURE OE 39SPACE0002000200020-1// SPACE, SPACE, SPACE, <none> 56OEM_1020005c007c001c-1// REVERSE SOLIDUS, VERTICAL LINE, INFORMATION SEPARATOR FOUR, <none> 53DECIMAL0002e002e-1-1// FULL STOP, FULL STOP, , DEADKEY0301 006200df// b -> ß 006100e1// a -> á 006400f0// d -> ð 006900ed// i -> í 007500fa// u -> ú 006500e9// e -> é 006f00f3// o -> ó 006e00f1// n -> ñ 006300e7// c -> ç 007900fd// y -> ý 004100c1// A -> Á 004400d0// D -> Ð 004900cd// I -> Í 005500da// U -> Ú 004500c9// E -> É 004f00d3// O -> Ó 004e00d1// N -> Ñ 002100a1// ! -> ¡ 004300c7// C -> Ç 005900dd// Y -> Ý 003f00bf// ? -> ¿ DEADKEY0302 006100e2// a -> â 006900ee// i -> î 007500fb// u -> û 006500ea// e -> ê 006f00f4// o -> ô 004100c2// A -> Â 004900ce// I -> Î 005500db// U -> Û 004500ca// E -> Ê 004f00d4// O -> Ô DEADKEY0300 006100e0// a -> à 006900ec// i -> ì 007500f9// u -> ù 006500e8// e -> è 006f00f2// o -> ò 007900fe// y -> þ 004100c0// A -> À 004900cc// I -> Ì 005500d9// U -> Ù 004500c8// E -> È 004f00d2// O -> Ò 005900ff// Y -> ÿ DEADKEY0308 006100e4// a -> ä 006900ef// i -> ï 007500fc// u -> ü 006500eb// e -> ë 006f00f6// o -> ö 007900ff// y -> ÿ 004100c4// A -> Ä 004900cf// I -> Ï 005500dc// U -> Ü 004500cb// E -> Ë 004f00d6// O -> Ö KEYNAME 01Esc 0eBackspace 0fTab 1cEnter 1dCtrl 2aShift 36"Right Shift" 37"Num *" 38Alt 39Space 3a"Caps Lock" 3bF1 3cF2 3dF3 3eF4 3fF5 40F6 41F7 42F8 43F9 44F10 45Pause 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" 57F11 58F12 7cF13 7dF14 7eF15 7fF16 80F17 81F18 82F19 83F20 84F21 85F22 86F23 87F24 KEYNAME_EXT 1c"Num Enter" 1d"Right Ctrl" 35"Num /" 37"Prnt Scrn" 38"Right Alt" 45"Num Lock" 46Break 47Home 48Up 49"Page Up" 4bLeft 4dRight 4fEnd 50Down 51"Page Down" 52Insert 53Delete 54<00> 56Help 5b"Left Windows" 5c"Right Windows" 5dApplication KEYNAME_DEAD 0301"COMBINING ACUTE ACCENT (Oxia, Tonos)" 0302"COMBINING CIRCUMFLEX ACCENT" 0300"COMBINING GRAVE ACCENT (Varia)" 0308"COMBINING DIAERESIS (Dialytika)" DESCRIPTIONS 0409US SchtinguêrDvorak LANGUAGENAMES 0409English (United States) ENDKBD
.klc-файл ПОСЛЕ
KBDschtaoeu"US SchtinguêrDvorak" COPYRIGHT"Meh" COMPANY"Schtinguêrch" LOCALENAME"en-US" LOCALEID"00000409" VERSION1.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 //SCVK_Cap0126 //-------------------------- 02101003f-1-1// DIGIT ONE, QUESTION MARK, <none>, <none> 032020040-1-1// DIGIT TWO, COMMERCIAL AT, <none>, <none> 043030023-1-1// DIGIT THREE, NUMBER SIGN, <none>, <none> 054040024-1-1// DIGIT FOUR, DOLLAR SIGN, <none>, <none> 065050025-1-1// DIGIT FIVE, PERCENT SIGN, <none>, <none> 07606005e-1-1// DIGIT SIX, CIRCUMFLEX ACCENT, <none>, <none> 087070026-1-1// DIGIT SEVEN, AMPERSAND, <none>, <none> 09808002a-1-1// DIGIT EIGHT, ASTERISK, <none>, <none> 0a9090028-1-1// DIGIT NINE, LEFT PARENTHESIS, <none>, <none> 0b0000029-1-1// DIGIT ZERO, RIGHT PARENTHESIS, <none>, <none> 0cOEM_MINUS0002d005f-1-1// HYPHEN-MINUS, LOW LINE, <none>, <none> 0dOEM_PLUS0003d002b-1-1// EQUALS SIGN, PLUS SIGN, <none>, <none> 10OEM_10003b003a-1-1// SEMICOLON, COLON, <none>, <none> 11OEM_COMMA0002c0021-1003c// COMMA, EXCLAMATION MARK, <none>, LESS-THAN SIGN 12OEM_PERIOD0002e003d-1003e// FULL STOP, EQUALS SIGN, <none>, GREATER-THAN SIGN 13P1pP-1007e// LATIN SMALL LETTER P, LATIN CAPITAL LETTER P, <none>, TILDE 14Y1yY-1-1// LATIN SMALL LETTER Y, LATIN CAPITAL LETTER Y, <none>, <none> 15F1fF-1-1// LATIN SMALL LETTER F, LATIN CAPITAL LETTER F, <none>, <none> 16G1gG-100e6// LATIN SMALL LETTER G, LATIN CAPITAL LETTER G, <none>, LATIN SMALL LETTER AE (ash) * 17L1lL-1005e// LATIN SMALL LETTER L, LATIN CAPITAL LETTER L, <none>, CIRCUMFLEX ACCENT 18R1rR-10023// LATIN SMALL LETTER R, LATIN CAPITAL LETTER R, <none>, NUMBER SIGN 19C1cC-1007c// LATIN SMALL LETTER C, LATIN CAPITAL LETTER C, <none>, VERTICAL LINE 1aOEM_400301@0302@001b00c6// COMBINING ACUTE ACCENT (Oxia, Tonos), COMBINING CIRCUMFLEX ACCENT, ESCAPE, LATIN CAPITAL LETTER AE (ash) * 1bOEM_600300@0308@001d-1// COMBINING GRAVE ACCENT (Varia), COMBINING DIAERESIS (Dialytika), INFORMATION SEPARATOR THREE, <none> 1eA1aA-1007b// LATIN SMALL LETTER A, LATIN CAPITAL LETTER A, <none>, LEFT CURLY BRACKET 1fO1oO-10028// LATIN SMALL LETTER O, LATIN CAPITAL LETTER O, <none>, LEFT PARENTHESIS 20E1eE-10029// LATIN SMALL LETTER E, LATIN CAPITAL LETTER E, <none>, RIGHT PARENTHESIS 21U1uU-1007d// LATIN SMALL LETTER U, LATIN CAPITAL LETTER U, <none>, RIGHT CURLY BRACKET 22I1iI-10024// LATIN SMALL LETTER I, LATIN CAPITAL LETTER I, <none>, DOLLAR SIGN 23D1dD-10025// LATIN SMALL LETTER D, LATIN CAPITAL LETTER D, <none>, PERCENT SIGN 24H1hH-1002b// LATIN SMALL LETTER H, LATIN CAPITAL LETTER H, <none>, PLUS SIGN 25T1tT-1002d// LATIN SMALL LETTER T, LATIN CAPITAL LETTER T, <none>, HYPHEN-MINUS 26N1nN-1002a// LATIN SMALL LETTER N, LATIN CAPITAL LETTER N, <none>, ASTERISK 27S1sS-1002f// LATIN SMALL LETTER S, LATIN CAPITAL LETTER S, <none>, SOLIDUS 28Z1zZ-10026// LATIN SMALL LETTER Z, LATIN CAPITAL LETTER Z, <none>, AMPERSAND 29OEM_300060007e-1-1// GRAVE ACCENT, TILDE, <none>, <none> 2bOEM_50-1-1001c-1// <none>, <none>, INFORMATION SEPARATOR FOUR, <none> 2cOEM_7000270022-1-1// APOSTROPHE, QUOTATION MARK, <none>, <none> 2dQ1qQ-1005b// LATIN SMALL LETTER Q, LATIN CAPITAL LETTER Q, <none>, LEFT SQUARE BRACKET 2eJ1jJ-1005d// LATIN SMALL LETTER J, LATIN CAPITAL LETTER J, <none>, RIGHT SQUARE BRACKET 2fK1kK-1005f// LATIN SMALL LETTER K, LATIN CAPITAL LETTER K, <none>, LOW LINE 30X1xX-1-1// LATIN SMALL LETTER X, LATIN CAPITAL LETTER X, <none>, <none> 31B1bB-1-1// LATIN SMALL LETTER B, LATIN CAPITAL LETTER B, <none>, <none> 32M1mM-10153// LATIN SMALL LETTER M, LATIN CAPITAL LETTER M, <none>, LATIN SMALL LIGATURE OE 33W1wW-1005f// LATIN SMALL LETTER W, LATIN CAPITAL LETTER W, <none>, LOW LINE 34V1vV-1007e// LATIN SMALL LETTER V, LATIN CAPITAL LETTER V, <none>, TILDE 35OEM_20002f005c-10152// SOLIDUS, REVERSE SOLIDUS, <none>, LATIN CAPITAL LIGATURE OE 39SPACE0002000200020-1// SPACE, SPACE, SPACE, <none> 56OEM_1020005c007c001c-1// REVERSE SOLIDUS, VERTICAL LINE, INFORMATION SEPARATOR FOUR, <none> 53DECIMAL0002e002e-1-1// FULL STOP, FULL STOP, , DEADKEY0301 006200df// b -> ß 006100e1// a -> á 006400f0// d -> ð 006900ed// i -> í 007500fa// u -> ú 006500e9// e -> é 006f00f3// o -> ó 006e00f1// n -> ñ 006300e7// c -> ç 007900fd// y -> ý 004100c1// A -> Á 004400d0// D -> Ð 004900cd// I -> Í 005500da// U -> Ú 004500c9// E -> É 004f00d3// O -> Ó 004e00d1// N -> Ñ 002100a1// ! -> ¡ 004300c7// C -> Ç 005900dd// Y -> Ý 003f00bf// ? -> ¿ DEADKEY0302 006100e2// a -> â 006900ee// i -> î 007500fb// u -> û 006500ea// e -> ê 006f00f4// o -> ô 004100c2// A -> Â 004900ce// I -> Î 005500db// U -> Û 004500ca// E -> Ê 004f00d4// O -> Ô DEADKEY0300 006100e0// a -> à 006900ec// i -> ì 007500f9// u -> ù 006500e8// e -> è 006f00f2// o -> ò 007900fe// y -> þ 004100c0// A -> À 004900cc// I -> Ì 005500d9// U -> Ù 004500c8// E -> È 004f00d2// O -> Ò 005900ff// Y -> ÿ DEADKEY0308 006100e4// a -> ä 006900ef// i -> ï 007500fc// u -> ü 006500eb// e -> ë 006f00f6// o -> ö 007900ff// y -> ÿ 004100c4// A -> Ä 004900cf// I -> Ï 005500dc// U -> Ü 004500cb// E -> Ë 004f00d6// O -> Ö KEYNAME 01Esc 0eBackspace 0fTab 1cEnter 1dCtrl 2aShift 36"Right Shift" 37"Num *" 38Alt 39Space 3a"Caps Lock" 3bF1 3cF2 3dF3 3eF4 3fF5 40F6 41F7 42F8 43F9 44F10 45Pause 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" 57F11 58F12 7cF13 7dF14 7eF15 7fF16 80F17 81F18 82F19 83F20 84F21 85F22 86F23 87F24 KEYNAME_EXT 1c"Num Enter" 1d"Right Ctrl" 35"Num /" 37"Prnt Scrn" 38"Right Alt" 45"Num Lock" 46Break 47Home 48Up 49"Page Up" 4bLeft 4dRight 4fEnd 50Down 51"Page Down" 52Insert 53Delete 54<00> 56Help 5b"Left Windows" 5c"Right Windows" 5dApplication KEYNAME_DEAD 0301"COMBINING ACUTE ACCENT (Oxia, Tonos)" 0302"COMBINING CIRCUMFLEX ACCENT" 0300"COMBINING GRAVE ACCENT (Varia)" 0308"COMBINING DIAERESIS (Dialytika)" DESCRIPTIONS 0409US SchtinguêrDvorak LANGUAGENAMES 0409English (United States) ENDKBD
Шаг 2. Открыть отредактированный файл в MSKLC, собрать раскладку и установить её
Перед тем, как открывать MSKLC, необходимо удалить проблемную раскладку из системы (то же, что и удалять программы через панель управления). Про бэкапы не забываем..
После того, как был открыт .klc-файл, можно сразу убедиться в правильной настройке переключения Caps Lock

Затем выбираем Project > Build DLL and Setup Package, открываем полученные исходники и запускаем установщик (setup.exe), перезагружаем ПК и радуемся

Немного послесловия
Всё, как всегда, криво, но решаемо. Таким же макаром, можно настроить русскоязычную раскладку, чтобы система воспринимала ЙЦУКЕН или Диктор как Dvorak или Workman или что-то ещё, а не QWERTY.
ссылка на оригинал статьи https://habr.com/ru/post/701876/
Добавить комментарий