diff --git a/web/src/pages/desktop/keyboard/mappings.ts b/web/src/pages/desktop/keyboard/mappings.ts index c783f73..04976aa 100644 --- a/web/src/pages/desktop/keyboard/mappings.ts +++ b/web/src/pages/desktop/keyboard/mappings.ts @@ -26,6 +26,42 @@ export const KeyboardCodes: Map = new Map([ ['KeyY', 28], ['KeyZ', 29], + ['RusA', 4], + ['RusB', 5], + ['RusC', 6], + ['RusD', 7], + ['RusE', 8], + ['RusF', 9], + ['RusG', 10], + ['RusH', 11], + ['RusI', 12], + ['RusJ', 13], + ['RusK', 14], + ['RusL', 15], + ['RusM', 16], + ['RusN', 17], + ['RusO', 18], + ['RusP', 19], + ['RusQ', 20], + ['RusR', 21], + ['RusS', 22], + ['RusT', 23], + ['RusU', 24], + ['RusV', 25], + ['RusW', 26], + ['RusX', 27], + ['RusY', 28], + ['RusZ', 29], + + ['RusBracketLeft', 47], + ['RusBracketRight', 48], + ['RusBackslash', 49], + ['RusSemicolon', 51], + ['RusQuote', 52], + ['RusComma', 54], + ['RusPeriod', 55], + ['RusSlash', 56], + ['Digit1', 30], ['Digit2', 31], ['Digit3', 32], diff --git a/web/src/pages/desktop/keyboard/virtual-keyboard.tsx b/web/src/pages/desktop/keyboard/virtual-keyboard.tsx index 1dad1a1..e0a6b3f 100644 --- a/web/src/pages/desktop/keyboard/virtual-keyboard.tsx +++ b/web/src/pages/desktop/keyboard/virtual-keyboard.tsx @@ -38,7 +38,7 @@ export const VirtualKeyboard = () => { useEffect(() => { const keyboardLayout = getKeyboardLayout(); - if (keyboardLayout && ['default', 'mac'].includes(keyboardLayout)) { + if (keyboardLayout && ['default', 'mac', 'rus'].includes(keyboardLayout)) { setLayout(keyboardLayout); } }, []); @@ -157,7 +157,8 @@ export const VirtualKeyboard = () => { }, - { label: 'Mac', value: 'mac', icon: } + { label: 'Mac', value: 'mac', icon: }, + { label: 'Rus', value: 'rus', icon: }, ]} value={layout} onChange={selectLayout} diff --git a/web/src/pages/desktop/keyboard/virtual-keys.ts b/web/src/pages/desktop/keyboard/virtual-keys.ts index 15ed6ef..13c8346 100644 --- a/web/src/pages/desktop/keyboard/virtual-keys.ts +++ b/web/src/pages/desktop/keyboard/virtual-keys.ts @@ -18,6 +18,14 @@ export const keyboardOptions = { '{capslock} KeyA KeyS KeyD KeyF KeyG KeyH KeyJ KeyK KeyL Semicolon Quote {enter}', '{shiftleft} KeyZ KeyX KeyC KeyV KeyB KeyN KeyM Comma Period Slash {shiftright}', '{controlleft} {altleft} {metaleft} {space} {metaright} {altright}' + ], + rus: [ + '{escape} F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12', + 'Backquote Digit1 Digit2 Digit3 Digit4 Digit5 Digit6 Digit7 Digit8 Digit9 Digit0 Minus Equal {backspace}', + '{tab} RusQ RusW RusE RusR RusT RusY RusU RusI RusO RusP RusBracketLeft RusBracketRight RusBackslash', + '{capslock} RusA RusS RusD RusF RusG RusH RusJ RusK RusL RusSemicolon RusQuote {enter}', + '{shiftleft} RusZ RusX RusC RusV RusB RusN RusM RusComma RusPeriod RusSlash {shiftright}', + '{controlleft} {winleft} {altleft} {space} {altright} {winright} {menu} {controlright}' ] }, display: { @@ -88,7 +96,44 @@ export const keyboardOptions = { '{winright}': 'Win', '{altright}': 'Alt', '{menu}': 'Menu', - '{controlright}': 'Ctrl' + '{controlright}': 'Ctrl', + + RusQ: 'Й', + RusW: 'Ц', + RusE: 'У', + RusR: 'К', + RusT: 'Е', + RusY: 'Н', + RusU: 'Г', + RusI: 'Ш', + RusO: 'Щ', + RusP: 'З', + RusBracketLeft: 'Х', + RusBracketRight: 'Ъ', + RusBackslash: '/
\\', + + RusA: 'Ф', + RusS: 'Ы', + RusD: 'В', + RusF: 'А', + RusG: 'П', + RusH: 'Р', + RusJ: 'О', + RusK: 'Л', + RusL: 'Д', + RusSemicolon: 'Ж', + RusQuote: 'Э', + + RusZ: 'Я', + RusX: 'Ч', + RusC: 'С', + RusV: 'М', + RusB: 'И', + RusN: 'Т', + RusM: 'Ь', + RusComma: 'Б', + RusPeriod: 'Ю', + RusSlash: ',
.', } };