mirror of
https://github.com/sipeed/NanoKVM.git
synced 2026-09-11 00:22:56 -05:00
Merge pull request #472 from pekishev/main
Add Russian virtual keyboard layout when UI language is 'ru'
This commit is contained in:
@@ -26,6 +26,42 @@ export const KeyboardCodes: Map<string, number> = 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],
|
||||
|
||||
@@ -12,7 +12,7 @@ import '@/assets/styles/keyboard.css';
|
||||
|
||||
import { useMediaQuery } from 'react-responsive';
|
||||
|
||||
import { getKeyboardLayout, setKeyboardLayout } from '@/lib/localstorage.ts';
|
||||
import { getKeyboardLayout, setKeyboardLayout, getLanguage } from '@/lib/localstorage.ts';
|
||||
import { client } from '@/lib/websocket.ts';
|
||||
import { isKeyboardOpenAtom } from '@/jotai/keyboard.ts';
|
||||
|
||||
@@ -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 = () => {
|
||||
<Segmented
|
||||
options={[
|
||||
{ label: 'Win', value: 'default', icon: <WindowsOutlined /> },
|
||||
{ label: 'Mac', value: 'mac', icon: <AppleOutlined /> }
|
||||
{ label: 'Mac', value: 'mac', icon: <AppleOutlined /> },
|
||||
...(getLanguage() === 'ru' ? [{ label: 'Rus', value: 'rus', icon: <WindowsOutlined /> }] : [])
|
||||
]}
|
||||
value={layout}
|
||||
onChange={selectLayout}
|
||||
|
||||
@@ -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: '/<br>\\',
|
||||
|
||||
RusA: 'Ф',
|
||||
RusS: 'Ы',
|
||||
RusD: 'В',
|
||||
RusF: 'А',
|
||||
RusG: 'П',
|
||||
RusH: 'Р',
|
||||
RusJ: 'О',
|
||||
RusK: 'Л',
|
||||
RusL: 'Д',
|
||||
RusSemicolon: 'Ж',
|
||||
RusQuote: 'Э',
|
||||
|
||||
RusZ: 'Я',
|
||||
RusX: 'Ч',
|
||||
RusC: 'С',
|
||||
RusV: 'М',
|
||||
RusB: 'И',
|
||||
RusN: 'Т',
|
||||
RusM: 'Ь',
|
||||
RusComma: 'Б',
|
||||
RusPeriod: 'Ю',
|
||||
RusSlash: ',<br/>.',
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user