keymap-inspector 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,13 @@
1
+ import { Keymap, InspectionResult } from './types';
2
+ export declare class KeymapInspector {
3
+ private layouts;
4
+ private reversedLayouts;
5
+ constructor(layouts: {
6
+ [name: string]: Keymap;
7
+ });
8
+ inspect(char: string): InspectionResult | null;
9
+ inspectByCode(code: string): InspectionResult | null;
10
+ inspectByKeyCode(keyCode: number): InspectionResult | null;
11
+ private findCharByCode;
12
+ private findCharByKeyCode;
13
+ }
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KeymapInspector = void 0;
4
+ class KeymapInspector {
5
+ constructor(layouts) {
6
+ this.layouts = layouts;
7
+ this.reversedLayouts = {};
8
+ for (const layoutName in layouts) {
9
+ this.reversedLayouts[layoutName] = {};
10
+ const layout = layouts[layoutName];
11
+ for (const char in layout) {
12
+ const keyDef = layout[char];
13
+ // Сохраняем все символы, но с учетом Shift
14
+ const currentCode = keyDef.code;
15
+ // Если это символ без Shift, сохраняем как основной
16
+ if (!keyDef.shiftKey) {
17
+ this.reversedLayouts[layoutName][currentCode] = char;
18
+ }
19
+ // Если это символ с Shift, сохраняем с префиксом
20
+ else {
21
+ this.reversedLayouts[layoutName][currentCode + '_SHIFT'] = char;
22
+ }
23
+ }
24
+ }
25
+ }
26
+ inspect(char) {
27
+ let baseLayoutName = null;
28
+ let keyDefinition = null;
29
+ for (const layoutName in this.layouts) {
30
+ if (this.layouts[layoutName][char]) {
31
+ baseLayoutName = layoutName;
32
+ keyDefinition = this.layouts[layoutName][char];
33
+ break;
34
+ }
35
+ }
36
+ if (!keyDefinition || !baseLayoutName) {
37
+ return null;
38
+ }
39
+ const layouts = {};
40
+ for (const layoutName in this.reversedLayouts) {
41
+ // Ищем символ с учетом Shift
42
+ if (keyDefinition.shiftKey) {
43
+ layouts[layoutName] = this.reversedLayouts[layoutName][keyDefinition.code + '_SHIFT'] || null;
44
+ }
45
+ else {
46
+ layouts[layoutName] = this.reversedLayouts[layoutName][keyDefinition.code] || null;
47
+ }
48
+ }
49
+ return {
50
+ char,
51
+ keyDefinition,
52
+ layouts,
53
+ };
54
+ }
55
+ inspectByCode(code) {
56
+ const char = this.findCharByCode(code);
57
+ return char ? this.inspect(char) : null;
58
+ }
59
+ inspectByKeyCode(keyCode) {
60
+ const char = this.findCharByKeyCode(keyCode);
61
+ return char ? this.inspect(char) : null;
62
+ }
63
+ findCharByCode(code) {
64
+ // Сначала ищем символ без Shift
65
+ for (const layoutName in this.layouts) {
66
+ const layout = this.layouts[layoutName];
67
+ for (const char in layout) {
68
+ if (layout[char].code === code && !layout[char].shiftKey) {
69
+ return char;
70
+ }
71
+ }
72
+ }
73
+ // Если не нашли без Shift, ищем с Shift
74
+ for (const layoutName in this.layouts) {
75
+ const layout = this.layouts[layoutName];
76
+ for (const char in layout) {
77
+ if (layout[char].code === code && layout[char].shiftKey) {
78
+ return char;
79
+ }
80
+ }
81
+ }
82
+ return null;
83
+ }
84
+ findCharByKeyCode(keyCode) {
85
+ // Сначала ищем символ без Shift
86
+ for (const layoutName in this.layouts) {
87
+ const layout = this.layouts[layoutName];
88
+ for (const char in layout) {
89
+ if (layout[char].keyCode === keyCode && !layout[char].shiftKey) {
90
+ return char;
91
+ }
92
+ }
93
+ }
94
+ // Если не нашли без Shift, ищем с Shift
95
+ for (const layoutName in this.layouts) {
96
+ const layout = this.layouts[layoutName];
97
+ for (const char in layout) {
98
+ if (layout[char].keyCode === keyCode && layout[char].shiftKey) {
99
+ return char;
100
+ }
101
+ }
102
+ }
103
+ return null;
104
+ }
105
+ }
106
+ exports.KeymapInspector = KeymapInspector;
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const KeymapInspector_1 = require("../KeymapInspector");
5
+ const en_1 = require("../layouts/en");
6
+ const ru_1 = require("../layouts/ru");
7
+ const de_1 = require("../layouts/de");
8
+ const fr_1 = require("../layouts/fr");
9
+ const es_1 = require("../layouts/es");
10
+ const ua_1 = require("../layouts/ua");
11
+ const he_1 = require("../layouts/he");
12
+ const inspector = new KeymapInspector_1.KeymapInspector({ en: en_1.en, ru: ru_1.ru, de: de_1.de, fr: fr_1.fr, es: es_1.es, ua: ua_1.ua, he: he_1.he });
13
+ const args = process.argv.slice(2);
14
+ if (args.length === 0) {
15
+ console.log('Usage: keymap-inspector <char>');
16
+ process.exit(1);
17
+ }
18
+ const char = args[0];
19
+ const result = inspector.inspect(char);
20
+ if (result) {
21
+ console.log(JSON.stringify(result, null, 2));
22
+ }
23
+ else {
24
+ console.log(`Could not inspect character: ${char}`);
25
+ }
@@ -0,0 +1,10 @@
1
+ export { KeymapInspector } from './KeymapInspector';
2
+ export * from './types';
3
+ export { en } from './layouts/en';
4
+ export { ru } from './layouts/ru';
5
+ export { de } from './layouts/de';
6
+ export { fr } from './layouts/fr';
7
+ export { es } from './layouts/es';
8
+ export { ua } from './layouts/ua';
9
+ export { he } from './layouts/he';
10
+ export * from './layouts';
package/dist/index.js ADDED
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.he = exports.ua = exports.es = exports.fr = exports.de = exports.ru = exports.en = exports.KeymapInspector = void 0;
18
+ var KeymapInspector_1 = require("./KeymapInspector");
19
+ Object.defineProperty(exports, "KeymapInspector", { enumerable: true, get: function () { return KeymapInspector_1.KeymapInspector; } });
20
+ __exportStar(require("./types"), exports);
21
+ var en_1 = require("./layouts/en");
22
+ Object.defineProperty(exports, "en", { enumerable: true, get: function () { return en_1.en; } });
23
+ var ru_1 = require("./layouts/ru");
24
+ Object.defineProperty(exports, "ru", { enumerable: true, get: function () { return ru_1.ru; } });
25
+ var de_1 = require("./layouts/de");
26
+ Object.defineProperty(exports, "de", { enumerable: true, get: function () { return de_1.de; } });
27
+ var fr_1 = require("./layouts/fr");
28
+ Object.defineProperty(exports, "fr", { enumerable: true, get: function () { return fr_1.fr; } });
29
+ var es_1 = require("./layouts/es");
30
+ Object.defineProperty(exports, "es", { enumerable: true, get: function () { return es_1.es; } });
31
+ var ua_1 = require("./layouts/ua");
32
+ Object.defineProperty(exports, "ua", { enumerable: true, get: function () { return ua_1.ua; } });
33
+ var he_1 = require("./layouts/he");
34
+ Object.defineProperty(exports, "he", { enumerable: true, get: function () { return he_1.he; } });
35
+ __exportStar(require("./layouts"), exports);
@@ -0,0 +1,2 @@
1
+ import { Keymap } from '../types';
2
+ export declare const de: Keymap;
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.de = void 0;
4
+ exports.de = {
5
+ // Первый ряд (цифры)
6
+ '1': { key: '1', code: 'Digit1', keyCode: 49 },
7
+ '2': { key: '2', code: 'Digit2', keyCode: 50 },
8
+ '3': { key: '3', code: 'Digit3', keyCode: 51 },
9
+ '4': { key: '4', code: 'Digit4', keyCode: 52 },
10
+ '5': { key: '5', code: 'Digit5', keyCode: 53 },
11
+ '6': { key: '6', code: 'Digit6', keyCode: 54 },
12
+ '7': { key: '7', code: 'Digit7', keyCode: 55 },
13
+ '8': { key: '8', code: 'Digit8', keyCode: 56 },
14
+ '9': { key: '9', code: 'Digit9', keyCode: 57 },
15
+ '0': { key: '0', code: 'Digit0', keyCode: 48 },
16
+ 'ß': { key: 'ß', code: 'Minus', keyCode: 189 },
17
+ // Второй ряд (QWERTZ)
18
+ 'q': { key: 'q', code: 'KeyQ', keyCode: 81 },
19
+ 'w': { key: 'w', code: 'KeyW', keyCode: 87 },
20
+ 'e': { key: 'e', code: 'KeyE', keyCode: 69 },
21
+ 'r': { key: 'r', code: 'KeyR', keyCode: 82 },
22
+ 't': { key: 't', code: 'KeyT', keyCode: 84 },
23
+ 'z': { key: 'z', code: 'KeyY', keyCode: 89 }, // В немецкой Z и Y поменяны местами
24
+ 'u': { key: 'u', code: 'KeyU', keyCode: 85 },
25
+ 'i': { key: 'i', code: 'KeyI', keyCode: 73 },
26
+ 'o': { key: 'o', code: 'KeyO', keyCode: 79 },
27
+ 'p': { key: 'p', code: 'KeyP', keyCode: 80 },
28
+ 'ü': { key: 'ü', code: 'BracketLeft', keyCode: 219 },
29
+ '+': { key: '+', code: 'BracketRight', keyCode: 221 },
30
+ // Третий ряд (ASDF)
31
+ 'a': { key: 'a', code: 'KeyA', keyCode: 65 },
32
+ 's': { key: 's', code: 'KeyS', keyCode: 83 },
33
+ 'd': { key: 'd', code: 'KeyD', keyCode: 68 },
34
+ 'f': { key: 'f', code: 'KeyF', keyCode: 70 },
35
+ 'g': { key: 'g', code: 'KeyG', keyCode: 71 },
36
+ 'h': { key: 'h', code: 'KeyH', keyCode: 72 },
37
+ 'j': { key: 'j', code: 'KeyJ', keyCode: 74 },
38
+ 'k': { key: 'k', code: 'KeyK', keyCode: 75 },
39
+ 'l': { key: 'l', code: 'KeyL', keyCode: 76 },
40
+ 'ö': { key: 'ö', code: 'Semicolon', keyCode: 186 },
41
+ 'ä': { key: 'ä', code: 'Quote', keyCode: 222 },
42
+ '#': { key: '#', code: 'Backslash', keyCode: 220 },
43
+ // Четвертый ряд (YXCV)
44
+ 'y': { key: 'y', code: 'KeyZ', keyCode: 90 }, // В немецкой Y и Z поменяны местами
45
+ 'x': { key: 'x', code: 'KeyX', keyCode: 88 },
46
+ 'c': { key: 'c', code: 'KeyC', keyCode: 67 },
47
+ 'v': { key: 'v', code: 'KeyV', keyCode: 86 },
48
+ 'b': { key: 'b', code: 'KeyB', keyCode: 66 },
49
+ 'n': { key: 'n', code: 'KeyN', keyCode: 78 },
50
+ 'm': { key: 'm', code: 'KeyM', keyCode: 77 },
51
+ ',': { key: ',', code: 'Comma', keyCode: 188 },
52
+ '.': { key: '.', code: 'Period', keyCode: 190 },
53
+ '-': { key: '-', code: 'Slash', keyCode: 191 },
54
+ // Заглавные буквы (с Shift)
55
+ 'Q': { key: 'Q', code: 'KeyQ', keyCode: 81, shiftKey: true },
56
+ 'W': { key: 'W', code: 'KeyW', keyCode: 87, shiftKey: true },
57
+ 'E': { key: 'E', code: 'KeyE', keyCode: 69, shiftKey: true },
58
+ 'R': { key: 'R', code: 'KeyR', keyCode: 82, shiftKey: true },
59
+ 'T': { key: 'T', code: 'KeyT', keyCode: 84, shiftKey: true },
60
+ 'Z': { key: 'Z', code: 'KeyY', keyCode: 89, shiftKey: true },
61
+ 'U': { key: 'U', code: 'KeyU', keyCode: 85, shiftKey: true },
62
+ 'I': { key: 'I', code: 'KeyI', keyCode: 73, shiftKey: true },
63
+ 'O': { key: 'O', code: 'KeyO', keyCode: 79, shiftKey: true },
64
+ 'P': { key: 'P', code: 'KeyP', keyCode: 80, shiftKey: true },
65
+ 'Ü': { key: 'Ü', code: 'BracketLeft', keyCode: 219, shiftKey: true },
66
+ 'A': { key: 'A', code: 'KeyA', keyCode: 65, shiftKey: true },
67
+ 'S': { key: 'S', code: 'KeyS', keyCode: 83, shiftKey: true },
68
+ 'D': { key: 'D', code: 'KeyD', keyCode: 68, shiftKey: true },
69
+ 'F': { key: 'F', code: 'KeyF', keyCode: 70, shiftKey: true },
70
+ 'G': { key: 'G', code: 'KeyG', keyCode: 71, shiftKey: true },
71
+ 'H': { key: 'H', code: 'KeyH', keyCode: 72, shiftKey: true },
72
+ 'J': { key: 'J', code: 'KeyJ', keyCode: 74, shiftKey: true },
73
+ 'K': { key: 'K', code: 'KeyK', keyCode: 75, shiftKey: true },
74
+ 'L': { key: 'L', code: 'KeyL', keyCode: 76, shiftKey: true },
75
+ 'Ö': { key: 'Ö', code: 'Semicolon', keyCode: 186, shiftKey: true },
76
+ 'Ä': { key: 'Ä', code: 'Quote', keyCode: 222, shiftKey: true },
77
+ 'Y': { key: 'Y', code: 'KeyZ', keyCode: 90, shiftKey: true },
78
+ 'X': { key: 'X', code: 'KeyX', keyCode: 88, shiftKey: true },
79
+ 'C': { key: 'C', code: 'KeyC', keyCode: 67, shiftKey: true },
80
+ 'V': { key: 'V', code: 'KeyV', keyCode: 86, shiftKey: true },
81
+ 'B': { key: 'B', code: 'KeyB', keyCode: 66, shiftKey: true },
82
+ 'N': { key: 'N', code: 'KeyN', keyCode: 78, shiftKey: true },
83
+ 'M': { key: 'M', code: 'KeyM', keyCode: 77, shiftKey: true },
84
+ // Пробел
85
+ ' ': { key: ' ', code: 'Space', keyCode: 32 },
86
+ };
@@ -0,0 +1,2 @@
1
+ import { Keymap } from '../types';
2
+ export declare const en: Keymap;
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.en = void 0;
4
+ exports.en = {
5
+ // Первый ряд (цифры)
6
+ '1': { key: '1', code: 'Digit1', keyCode: 49 },
7
+ '2': { key: '2', code: 'Digit2', keyCode: 50 },
8
+ '3': { key: '3', code: 'Digit3', keyCode: 51 },
9
+ '4': { key: '4', code: 'Digit4', keyCode: 52 },
10
+ '5': { key: '5', code: 'Digit5', keyCode: 53 },
11
+ '6': { key: '6', code: 'Digit6', keyCode: 54 },
12
+ '7': { key: '7', code: 'Digit7', keyCode: 55 },
13
+ '8': { key: '8', code: 'Digit8', keyCode: 56 },
14
+ '9': { key: '9', code: 'Digit9', keyCode: 57 },
15
+ '0': { key: '0', code: 'Digit0', keyCode: 48 },
16
+ '-': { key: '-', code: 'Minus', keyCode: 189 },
17
+ '=': { key: '=', code: 'Equal', keyCode: 187 },
18
+ // Второй ряд (QWERTY)
19
+ 'q': { key: 'q', code: 'KeyQ', keyCode: 81 },
20
+ 'w': { key: 'w', code: 'KeyW', keyCode: 87 },
21
+ 'e': { key: 'e', code: 'KeyE', keyCode: 69 },
22
+ 'r': { key: 'r', code: 'KeyR', keyCode: 82 },
23
+ 't': { key: 't', code: 'KeyT', keyCode: 84 },
24
+ 'y': { key: 'y', code: 'KeyY', keyCode: 89 },
25
+ 'u': { key: 'u', code: 'KeyU', keyCode: 85 },
26
+ 'i': { key: 'i', code: 'KeyI', keyCode: 73 },
27
+ 'o': { key: 'o', code: 'KeyO', keyCode: 79 },
28
+ 'p': { key: 'p', code: 'KeyP', keyCode: 80 },
29
+ '[': { key: '[', code: 'BracketLeft', keyCode: 219 },
30
+ ']': { key: ']', code: 'BracketRight', keyCode: 221 },
31
+ // Третий ряд (ASDF)
32
+ 'a': { key: 'a', code: 'KeyA', keyCode: 65 },
33
+ 's': { key: 's', code: 'KeyS', keyCode: 83 },
34
+ 'd': { key: 'd', code: 'KeyD', keyCode: 68 },
35
+ 'f': { key: 'f', code: 'KeyF', keyCode: 70 },
36
+ 'g': { key: 'g', code: 'KeyG', keyCode: 71 },
37
+ 'h': { key: 'h', code: 'KeyH', keyCode: 72 },
38
+ 'j': { key: 'j', code: 'KeyJ', keyCode: 74 },
39
+ 'k': { key: 'k', code: 'KeyK', keyCode: 75 },
40
+ 'l': { key: 'l', code: 'KeyL', keyCode: 76 },
41
+ ';': { key: ';', code: 'Semicolon', keyCode: 186 },
42
+ "'": { key: "'", code: 'Quote', keyCode: 222 },
43
+ '\\': { key: '\\', code: 'Backslash', keyCode: 220 },
44
+ // Четвертый ряд (ZXCV)
45
+ 'z': { key: 'z', code: 'KeyZ', keyCode: 90 },
46
+ 'x': { key: 'x', code: 'KeyX', keyCode: 88 },
47
+ 'c': { key: 'c', code: 'KeyC', keyCode: 67 },
48
+ 'v': { key: 'v', code: 'KeyV', keyCode: 86 },
49
+ 'b': { key: 'b', code: 'KeyB', keyCode: 66 },
50
+ 'n': { key: 'n', code: 'KeyN', keyCode: 78 },
51
+ 'm': { key: 'm', code: 'KeyM', keyCode: 77 },
52
+ ',': { key: ',', code: 'Comma', keyCode: 188 },
53
+ '.': { key: '.', code: 'Period', keyCode: 190 },
54
+ '/': { key: '/', code: 'Slash', keyCode: 191 },
55
+ // Заглавные буквы (с Shift)
56
+ 'Q': { key: 'Q', code: 'KeyQ', keyCode: 81, shiftKey: true },
57
+ 'W': { key: 'W', code: 'KeyW', keyCode: 87, shiftKey: true },
58
+ 'E': { key: 'E', code: 'KeyE', keyCode: 69, shiftKey: true },
59
+ 'R': { key: 'R', code: 'KeyR', keyCode: 82, shiftKey: true },
60
+ 'T': { key: 'T', code: 'KeyT', keyCode: 84, shiftKey: true },
61
+ 'Y': { key: 'Y', code: 'KeyY', keyCode: 89, shiftKey: true },
62
+ 'U': { key: 'U', code: 'KeyU', keyCode: 85, shiftKey: true },
63
+ 'I': { key: 'I', code: 'KeyI', keyCode: 73, shiftKey: true },
64
+ 'O': { key: 'O', code: 'KeyO', keyCode: 79, shiftKey: true },
65
+ 'P': { key: 'P', code: 'KeyP', keyCode: 80, shiftKey: true },
66
+ 'A': { key: 'A', code: 'KeyA', keyCode: 65, shiftKey: true },
67
+ 'S': { key: 'S', code: 'KeyS', keyCode: 83, shiftKey: true },
68
+ 'D': { key: 'D', code: 'KeyD', keyCode: 68, shiftKey: true },
69
+ 'F': { key: 'F', code: 'KeyF', keyCode: 70, shiftKey: true },
70
+ 'G': { key: 'G', code: 'KeyG', keyCode: 71, shiftKey: true },
71
+ 'H': { key: 'H', code: 'KeyH', keyCode: 72, shiftKey: true },
72
+ 'J': { key: 'J', code: 'KeyJ', keyCode: 74, shiftKey: true },
73
+ 'K': { key: 'K', code: 'KeyK', keyCode: 75, shiftKey: true },
74
+ 'L': { key: 'L', code: 'KeyL', keyCode: 76, shiftKey: true },
75
+ 'Z': { key: 'Z', code: 'KeyZ', keyCode: 90, shiftKey: true },
76
+ 'X': { key: 'X', code: 'KeyX', keyCode: 88, shiftKey: true },
77
+ 'C': { key: 'C', code: 'KeyC', keyCode: 67, shiftKey: true },
78
+ 'V': { key: 'V', code: 'KeyV', keyCode: 86, shiftKey: true },
79
+ 'B': { key: 'B', code: 'KeyB', keyCode: 66, shiftKey: true },
80
+ 'N': { key: 'N', code: 'KeyN', keyCode: 78, shiftKey: true },
81
+ 'M': { key: 'M', code: 'KeyM', keyCode: 77, shiftKey: true },
82
+ // Символы с Shift
83
+ '!': { key: '!', code: 'Digit1', keyCode: 49, shiftKey: true },
84
+ '@': { key: '@', code: 'Digit2', keyCode: 50, shiftKey: true },
85
+ '#': { key: '#', code: 'Digit3', keyCode: 51, shiftKey: true },
86
+ '$': { key: '$', code: 'Digit4', keyCode: 52, shiftKey: true },
87
+ '%': { key: '%', code: 'Digit5', keyCode: 53, shiftKey: true },
88
+ '^': { key: '^', code: 'Digit6', keyCode: 54, shiftKey: true },
89
+ '&': { key: '&', code: 'Digit7', keyCode: 55, shiftKey: true },
90
+ '*': { key: '*', code: 'Digit8', keyCode: 56, shiftKey: true },
91
+ '(': { key: '(', code: 'Digit9', keyCode: 57, shiftKey: true },
92
+ ')': { key: ')', code: 'Digit0', keyCode: 48, shiftKey: true },
93
+ '_': { key: '_', code: 'Minus', keyCode: 189, shiftKey: true },
94
+ '+': { key: '+', code: 'Equal', keyCode: 187, shiftKey: true },
95
+ '{': { key: '{', code: 'BracketLeft', keyCode: 219, shiftKey: true },
96
+ '}': { key: '}', code: 'BracketRight', keyCode: 221, shiftKey: true },
97
+ ':': { key: ':', code: 'Semicolon', keyCode: 186, shiftKey: true },
98
+ '"': { key: '"', code: 'Quote', keyCode: 222, shiftKey: true },
99
+ '|': { key: '|', code: 'Backslash', keyCode: 220, shiftKey: true },
100
+ '<': { key: '<', code: 'Comma', keyCode: 188, shiftKey: true },
101
+ '>': { key: '>', code: 'Period', keyCode: 190, shiftKey: true },
102
+ '?': { key: '?', code: 'Slash', keyCode: 191, shiftKey: true },
103
+ // Пробел
104
+ ' ': { key: ' ', code: 'Space', keyCode: 32 },
105
+ };
@@ -0,0 +1,2 @@
1
+ import { Keymap } from '../types';
2
+ export declare const es: Keymap;
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.es = void 0;
4
+ exports.es = {
5
+ // Первый ряд (цифры)
6
+ '1': { key: '1', code: 'Digit1', keyCode: 49 },
7
+ '2': { key: '2', code: 'Digit2', keyCode: 50 },
8
+ '3': { key: '3', code: 'Digit3', keyCode: 51 },
9
+ '4': { key: '4', code: 'Digit4', keyCode: 52 },
10
+ '5': { key: '5', code: 'Digit5', keyCode: 53 },
11
+ '6': { key: '6', code: 'Digit6', keyCode: 54 },
12
+ '7': { key: '7', code: 'Digit7', keyCode: 55 },
13
+ '8': { key: '8', code: 'Digit8', keyCode: 56 },
14
+ '9': { key: '9', code: 'Digit9', keyCode: 57 },
15
+ '0': { key: '0', code: 'Digit0', keyCode: 48 },
16
+ "'": { key: "'", code: 'Minus', keyCode: 189 },
17
+ '¡': { key: '¡', code: 'Equal', keyCode: 187 },
18
+ // Второй ряд (QWERTY)
19
+ 'q': { key: 'q', code: 'KeyQ', keyCode: 81 },
20
+ 'w': { key: 'w', code: 'KeyW', keyCode: 87 },
21
+ 'e': { key: 'e', code: 'KeyE', keyCode: 69 },
22
+ 'r': { key: 'r', code: 'KeyR', keyCode: 82 },
23
+ 't': { key: 't', code: 'KeyT', keyCode: 84 },
24
+ 'y': { key: 'y', code: 'KeyY', keyCode: 89 },
25
+ 'u': { key: 'u', code: 'KeyU', keyCode: 85 },
26
+ 'i': { key: 'i', code: 'KeyI', keyCode: 73 },
27
+ 'o': { key: 'o', code: 'KeyO', keyCode: 79 },
28
+ 'p': { key: 'p', code: 'KeyP', keyCode: 80 },
29
+ '`': { key: '`', code: 'BracketLeft', keyCode: 219 },
30
+ '+': { key: '+', code: 'BracketRight', keyCode: 221 },
31
+ // Третий ряд (ASDF)
32
+ 'a': { key: 'a', code: 'KeyA', keyCode: 65 },
33
+ 's': { key: 's', code: 'KeyS', keyCode: 83 },
34
+ 'd': { key: 'd', code: 'KeyD', keyCode: 68 },
35
+ 'f': { key: 'f', code: 'KeyF', keyCode: 70 },
36
+ 'g': { key: 'g', code: 'KeyG', keyCode: 71 },
37
+ 'h': { key: 'h', code: 'KeyH', keyCode: 72 },
38
+ 'j': { key: 'j', code: 'KeyJ', keyCode: 74 },
39
+ 'k': { key: 'k', code: 'KeyK', keyCode: 75 },
40
+ 'l': { key: 'l', code: 'KeyL', keyCode: 76 },
41
+ 'ñ': { key: 'ñ', code: 'Semicolon', keyCode: 186 },
42
+ '´': { key: '´', code: 'Quote', keyCode: 222 },
43
+ 'ç': { key: 'ç', code: 'Backslash', keyCode: 220 },
44
+ // Четвертый ряд (ZXCV)
45
+ 'z': { key: 'z', code: 'KeyZ', keyCode: 90 },
46
+ 'x': { key: 'x', code: 'KeyX', keyCode: 88 },
47
+ 'c': { key: 'c', code: 'KeyC', keyCode: 67 },
48
+ 'v': { key: 'v', code: 'KeyV', keyCode: 86 },
49
+ 'b': { key: 'b', code: 'KeyB', keyCode: 66 },
50
+ 'n': { key: 'n', code: 'KeyN', keyCode: 78 },
51
+ 'm': { key: 'm', code: 'KeyM', keyCode: 77 },
52
+ ',': { key: ',', code: 'Comma', keyCode: 188 },
53
+ '.': { key: '.', code: 'Period', keyCode: 190 },
54
+ '-': { key: '-', code: 'Slash', keyCode: 191 },
55
+ // Заглавные буквы (с Shift)
56
+ 'Q': { key: 'Q', code: 'KeyQ', keyCode: 81, shiftKey: true },
57
+ 'W': { key: 'W', code: 'KeyW', keyCode: 87, shiftKey: true },
58
+ 'E': { key: 'E', code: 'KeyE', keyCode: 69, shiftKey: true },
59
+ 'R': { key: 'R', code: 'KeyR', keyCode: 82, shiftKey: true },
60
+ 'T': { key: 'T', code: 'KeyT', keyCode: 84, shiftKey: true },
61
+ 'Y': { key: 'Y', code: 'KeyY', keyCode: 89, shiftKey: true },
62
+ 'U': { key: 'U', code: 'KeyU', keyCode: 85, shiftKey: true },
63
+ 'I': { key: 'I', code: 'KeyI', keyCode: 73, shiftKey: true },
64
+ 'O': { key: 'O', code: 'KeyO', keyCode: 79, shiftKey: true },
65
+ 'P': { key: 'P', code: 'KeyP', keyCode: 80, shiftKey: true },
66
+ 'A': { key: 'A', code: 'KeyA', keyCode: 65, shiftKey: true },
67
+ 'S': { key: 'S', code: 'KeyS', keyCode: 83, shiftKey: true },
68
+ 'D': { key: 'D', code: 'KeyD', keyCode: 68, shiftKey: true },
69
+ 'F': { key: 'F', code: 'KeyF', keyCode: 70, shiftKey: true },
70
+ 'G': { key: 'G', code: 'KeyG', keyCode: 71, shiftKey: true },
71
+ 'H': { key: 'H', code: 'KeyH', keyCode: 72, shiftKey: true },
72
+ 'J': { key: 'J', code: 'KeyJ', keyCode: 74, shiftKey: true },
73
+ 'K': { key: 'K', code: 'KeyK', keyCode: 75, shiftKey: true },
74
+ 'L': { key: 'L', code: 'KeyL', keyCode: 76, shiftKey: true },
75
+ 'Ñ': { key: 'Ñ', code: 'Semicolon', keyCode: 186, shiftKey: true },
76
+ 'Z': { key: 'Z', code: 'KeyZ', keyCode: 90, shiftKey: true },
77
+ 'X': { key: 'X', code: 'KeyX', keyCode: 88, shiftKey: true },
78
+ 'C': { key: 'C', code: 'KeyC', keyCode: 67, shiftKey: true },
79
+ 'V': { key: 'V', code: 'KeyV', keyCode: 86, shiftKey: true },
80
+ 'B': { key: 'B', code: 'KeyB', keyCode: 66, shiftKey: true },
81
+ 'N': { key: 'N', code: 'KeyN', keyCode: 78, shiftKey: true },
82
+ 'M': { key: 'M', code: 'KeyM', keyCode: 77, shiftKey: true },
83
+ // Специальные символы с Shift
84
+ '!': { key: '!', code: 'Digit1', keyCode: 49, shiftKey: true },
85
+ '"': { key: '"', code: 'Digit2', keyCode: 50, shiftKey: true },
86
+ '·': { key: '·', code: 'Digit3', keyCode: 51, shiftKey: true },
87
+ '$': { key: '$', code: 'Digit4', keyCode: 52, shiftKey: true },
88
+ '%': { key: '%', code: 'Digit5', keyCode: 53, shiftKey: true },
89
+ '&': { key: '&', code: 'Digit6', keyCode: 54, shiftKey: true },
90
+ '/': { key: '/', code: 'Digit7', keyCode: 55, shiftKey: true },
91
+ '(': { key: '(', code: 'Digit8', keyCode: 56, shiftKey: true },
92
+ ')': { key: ')', code: 'Digit9', keyCode: 57, shiftKey: true },
93
+ '=': { key: '=', code: 'Digit0', keyCode: 48, shiftKey: true },
94
+ '?': { key: '?', code: 'Minus', keyCode: 189, shiftKey: true },
95
+ '¿': { key: '¿', code: 'Equal', keyCode: 187, shiftKey: true },
96
+ // Пробел
97
+ ' ': { key: ' ', code: 'Space', keyCode: 32 },
98
+ };
@@ -0,0 +1,2 @@
1
+ import { Keymap } from '../types';
2
+ export declare const fr: Keymap;
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fr = void 0;
4
+ exports.fr = {
5
+ // Первый ряд (AZERTY цифры)
6
+ '&': { key: '&', code: 'Digit1', keyCode: 49 },
7
+ 'é': { key: 'é', code: 'Digit2', keyCode: 50 },
8
+ '"': { key: '"', code: 'Digit3', keyCode: 51 },
9
+ "'": { key: "'", code: 'Digit4', keyCode: 52 },
10
+ '(': { key: '(', code: 'Digit5', keyCode: 53 },
11
+ '-': { key: '-', code: 'Digit6', keyCode: 54 },
12
+ 'è': { key: 'è', code: 'Digit7', keyCode: 55 },
13
+ '_': { key: '_', code: 'Digit8', keyCode: 56 },
14
+ 'ç': { key: 'ç', code: 'Digit9', keyCode: 57 },
15
+ 'à': { key: 'à', code: 'Digit0', keyCode: 48 },
16
+ ')': { key: ')', code: 'Minus', keyCode: 189 },
17
+ '=': { key: '=', code: 'Equal', keyCode: 187 },
18
+ // Второй ряд (AZERTY)
19
+ 'a': { key: 'a', code: 'KeyQ', keyCode: 81 }, // A на месте Q
20
+ 'z': { key: 'z', code: 'KeyW', keyCode: 87 }, // Z на месте W
21
+ 'e': { key: 'e', code: 'KeyE', keyCode: 69 },
22
+ 'r': { key: 'r', code: 'KeyR', keyCode: 82 },
23
+ 't': { key: 't', code: 'KeyT', keyCode: 84 },
24
+ 'y': { key: 'y', code: 'KeyY', keyCode: 89 },
25
+ 'u': { key: 'u', code: 'KeyU', keyCode: 85 },
26
+ 'i': { key: 'i', code: 'KeyI', keyCode: 73 },
27
+ 'o': { key: 'o', code: 'KeyO', keyCode: 79 },
28
+ 'p': { key: 'p', code: 'KeyP', keyCode: 80 },
29
+ '^': { key: '^', code: 'BracketLeft', keyCode: 219 },
30
+ '$': { key: '$', code: 'BracketRight', keyCode: 221 },
31
+ // Третий ряд
32
+ 'q': { key: 'q', code: 'KeyA', keyCode: 65 }, // Q на месте A
33
+ 's': { key: 's', code: 'KeyS', keyCode: 83 },
34
+ 'd': { key: 'd', code: 'KeyD', keyCode: 68 },
35
+ 'f': { key: 'f', code: 'KeyF', keyCode: 70 },
36
+ 'g': { key: 'g', code: 'KeyG', keyCode: 71 },
37
+ 'h': { key: 'h', code: 'KeyH', keyCode: 72 },
38
+ 'j': { key: 'j', code: 'KeyJ', keyCode: 74 },
39
+ 'k': { key: 'k', code: 'KeyK', keyCode: 75 },
40
+ 'l': { key: 'l', code: 'KeyL', keyCode: 76 },
41
+ 'm': { key: 'm', code: 'Semicolon', keyCode: 186 }, // M на месте ;
42
+ 'ù': { key: 'ù', code: 'Quote', keyCode: 222 },
43
+ '*': { key: '*', code: 'Backslash', keyCode: 220 },
44
+ // Четвертый ряд
45
+ 'w': { key: 'w', code: 'KeyZ', keyCode: 90 }, // W на месте Z
46
+ 'x': { key: 'x', code: 'KeyX', keyCode: 88 },
47
+ 'c': { key: 'c', code: 'KeyC', keyCode: 67 },
48
+ 'v': { key: 'v', code: 'KeyV', keyCode: 86 },
49
+ 'b': { key: 'b', code: 'KeyB', keyCode: 66 },
50
+ 'n': { key: 'n', code: 'KeyN', keyCode: 78 },
51
+ ',': { key: ',', code: 'KeyM', keyCode: 77 }, // , на месте M
52
+ ';': { key: ';', code: 'Comma', keyCode: 188 },
53
+ ':': { key: ':', code: 'Period', keyCode: 190 },
54
+ '!': { key: '!', code: 'Slash', keyCode: 191 },
55
+ // Заглавные буквы (с Shift)
56
+ 'A': { key: 'A', code: 'KeyQ', keyCode: 81, shiftKey: true },
57
+ 'Z': { key: 'Z', code: 'KeyW', keyCode: 87, shiftKey: true },
58
+ 'E': { key: 'E', code: 'KeyE', keyCode: 69, shiftKey: true },
59
+ 'R': { key: 'R', code: 'KeyR', keyCode: 82, shiftKey: true },
60
+ 'T': { key: 'T', code: 'KeyT', keyCode: 84, shiftKey: true },
61
+ 'Y': { key: 'Y', code: 'KeyY', keyCode: 89, shiftKey: true },
62
+ 'U': { key: 'U', code: 'KeyU', keyCode: 85, shiftKey: true },
63
+ 'I': { key: 'I', code: 'KeyI', keyCode: 73, shiftKey: true },
64
+ 'O': { key: 'O', code: 'KeyO', keyCode: 79, shiftKey: true },
65
+ 'P': { key: 'P', code: 'KeyP', keyCode: 80, shiftKey: true },
66
+ 'Q': { key: 'Q', code: 'KeyA', keyCode: 65, shiftKey: true },
67
+ 'S': { key: 'S', code: 'KeyS', keyCode: 83, shiftKey: true },
68
+ 'D': { key: 'D', code: 'KeyD', keyCode: 68, shiftKey: true },
69
+ 'F': { key: 'F', code: 'KeyF', keyCode: 70, shiftKey: true },
70
+ 'G': { key: 'G', code: 'KeyG', keyCode: 71, shiftKey: true },
71
+ 'H': { key: 'H', code: 'KeyH', keyCode: 72, shiftKey: true },
72
+ 'J': { key: 'J', code: 'KeyJ', keyCode: 74, shiftKey: true },
73
+ 'K': { key: 'K', code: 'KeyK', keyCode: 75, shiftKey: true },
74
+ 'L': { key: 'L', code: 'KeyL', keyCode: 76, shiftKey: true },
75
+ 'M': { key: 'M', code: 'Semicolon', keyCode: 186, shiftKey: true },
76
+ 'W': { key: 'W', code: 'KeyZ', keyCode: 90, shiftKey: true },
77
+ 'X': { key: 'X', code: 'KeyX', keyCode: 88, shiftKey: true },
78
+ 'C': { key: 'C', code: 'KeyC', keyCode: 67, shiftKey: true },
79
+ 'V': { key: 'V', code: 'KeyV', keyCode: 86, shiftKey: true },
80
+ 'B': { key: 'B', code: 'KeyB', keyCode: 66, shiftKey: true },
81
+ 'N': { key: 'N', code: 'KeyN', keyCode: 78, shiftKey: true },
82
+ // Цифры с Shift
83
+ '1': { key: '1', code: 'Digit1', keyCode: 49, shiftKey: true },
84
+ '2': { key: '2', code: 'Digit2', keyCode: 50, shiftKey: true },
85
+ '3': { key: '3', code: 'Digit3', keyCode: 51, shiftKey: true },
86
+ '4': { key: '4', code: 'Digit4', keyCode: 52, shiftKey: true },
87
+ '5': { key: '5', code: 'Digit5', keyCode: 53, shiftKey: true },
88
+ '6': { key: '6', code: 'Digit6', keyCode: 54, shiftKey: true },
89
+ '7': { key: '7', code: 'Digit7', keyCode: 55, shiftKey: true },
90
+ '8': { key: '8', code: 'Digit8', keyCode: 56, shiftKey: true },
91
+ '9': { key: '9', code: 'Digit9', keyCode: 57, shiftKey: true },
92
+ '0': { key: '0', code: 'Digit0', keyCode: 48, shiftKey: true },
93
+ // Пробел
94
+ ' ': { key: ' ', code: 'Space', keyCode: 32 },
95
+ };
@@ -0,0 +1,2 @@
1
+ import { Keymap } from '../types';
2
+ export declare const he: Keymap;
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.he = void 0;
4
+ exports.he = {
5
+ // Первый ряд (цифры)
6
+ '1': { key: '1', code: 'Digit1', keyCode: 49 },
7
+ '2': { key: '2', code: 'Digit2', keyCode: 50 },
8
+ '3': { key: '3', code: 'Digit3', keyCode: 51 },
9
+ '4': { key: '4', code: 'Digit4', keyCode: 52 },
10
+ '5': { key: '5', code: 'Digit5', keyCode: 53 },
11
+ '6': { key: '6', code: 'Digit6', keyCode: 54 },
12
+ '7': { key: '7', code: 'Digit7', keyCode: 55 },
13
+ '8': { key: '8', code: 'Digit8', keyCode: 56 },
14
+ '9': { key: '9', code: 'Digit9', keyCode: 57 },
15
+ '0': { key: '0', code: 'Digit0', keyCode: 48 },
16
+ '-': { key: '-', code: 'Minus', keyCode: 189 },
17
+ '=': { key: '=', code: 'Equal', keyCode: 187 },
18
+ // Второй ряд (иврит - справа налево, но клавиши в том же порядке)
19
+ '/': { key: '/', code: 'KeyQ', keyCode: 81 }, // ק на Q
20
+ "'": { key: "'", code: 'KeyW', keyCode: 87 }, // ר на W
21
+ 'ק': { key: 'ק', code: 'KeyE', keyCode: 69 }, // א на E
22
+ 'ר': { key: 'ר', code: 'KeyR', keyCode: 82 }, // ט на R
23
+ 'א': { key: 'א', code: 'KeyT', keyCode: 84 }, // ו на T
24
+ 'ט': { key: 'ט', code: 'KeyY', keyCode: 89 }, // ן на Y
25
+ 'ו': { key: 'ו', code: 'KeyU', keyCode: 85 }, // ם на U
26
+ 'ן': { key: 'ן', code: 'KeyI', keyCode: 73 }, // פ на I
27
+ 'ם': { key: 'ם', code: 'KeyO', keyCode: 79 }, // ף на O
28
+ 'פ': { key: 'פ', code: 'KeyP', keyCode: 80 }, // פ на P
29
+ ']': { key: ']', code: 'BracketLeft', keyCode: 219 },
30
+ '[': { key: '[', code: 'BracketRight', keyCode: 221 },
31
+ // Третий ряд
32
+ 'ש': { key: 'ש', code: 'KeyA', keyCode: 65 }, // ש на A
33
+ 'ד': { key: 'ד', code: 'KeyS', keyCode: 83 }, // ד на S
34
+ 'ג': { key: 'ג', code: 'KeyD', keyCode: 68 }, // ג на D
35
+ 'כ': { key: 'כ', code: 'KeyF', keyCode: 70 }, // כ на F
36
+ 'ע': { key: 'ע', code: 'KeyG', keyCode: 71 }, // ע на G
37
+ 'י': { key: 'י', code: 'KeyH', keyCode: 72 }, // י на H
38
+ 'ח': { key: 'ח', code: 'KeyJ', keyCode: 74 }, // ח на J
39
+ 'ל': { key: 'ל', code: 'KeyK', keyCode: 75 }, // ל на K
40
+ 'ך': { key: 'ך', code: 'KeyL', keyCode: 76 }, // ך на L
41
+ 'ף': { key: 'ף', code: 'Semicolon', keyCode: 186 }, // ף на ;
42
+ ',': { key: ',', code: 'Quote', keyCode: 222 },
43
+ '\\': { key: '\\', code: 'Backslash', keyCode: 220 },
44
+ // Четвертый ряд
45
+ 'ז': { key: 'ז', code: 'KeyZ', keyCode: 90 }, // ז на Z
46
+ 'ס': { key: 'ס', code: 'KeyX', keyCode: 88 }, // ס на X
47
+ 'ב': { key: 'ב', code: 'KeyC', keyCode: 67 }, // ב на C
48
+ 'ה': { key: 'ה', code: 'KeyV', keyCode: 86 }, // ה на V
49
+ 'נ': { key: 'נ', code: 'KeyB', keyCode: 66 }, // נ на B
50
+ 'מ': { key: 'מ', code: 'KeyN', keyCode: 78 }, // מ на N
51
+ 'צ': { key: 'צ', code: 'KeyM', keyCode: 77 }, // צ на M
52
+ 'ת': { key: 'ת', code: 'Comma', keyCode: 188 }, // ת на ,
53
+ 'ץ': { key: 'ץ', code: 'Period', keyCode: 190 }, // ץ на .
54
+ '.': { key: '.', code: 'Slash', keyCode: 191 },
55
+ // Символы с Shift (английские символы при нажатии Shift)
56
+ '!': { key: '!', code: 'Digit1', keyCode: 49, shiftKey: true },
57
+ '@': { key: '@', code: 'Digit2', keyCode: 50, shiftKey: true },
58
+ '#': { key: '#', code: 'Digit3', keyCode: 51, shiftKey: true },
59
+ '$': { key: '$', code: 'Digit4', keyCode: 52, shiftKey: true },
60
+ '%': { key: '%', code: 'Digit5', keyCode: 53, shiftKey: true },
61
+ '^': { key: '^', code: 'Digit6', keyCode: 54, shiftKey: true },
62
+ '&': { key: '&', code: 'Digit7', keyCode: 55, shiftKey: true },
63
+ '*': { key: '*', code: 'Digit8', keyCode: 56, shiftKey: true },
64
+ '(': { key: '(', code: 'Digit9', keyCode: 57, shiftKey: true },
65
+ ')': { key: ')', code: 'Digit0', keyCode: 48, shiftKey: true },
66
+ '_': { key: '_', code: 'Minus', keyCode: 189, shiftKey: true },
67
+ '+': { key: '+', code: 'Equal', keyCode: 187, shiftKey: true },
68
+ // Английские буквы с Shift (двуязычная клавиатура)
69
+ 'Q': { key: 'Q', code: 'KeyQ', keyCode: 81, shiftKey: true },
70
+ 'W': { key: 'W', code: 'KeyW', keyCode: 87, shiftKey: true },
71
+ 'E': { key: 'E', code: 'KeyE', keyCode: 69, shiftKey: true },
72
+ 'R': { key: 'R', code: 'KeyR', keyCode: 82, shiftKey: true },
73
+ 'T': { key: 'T', code: 'KeyT', keyCode: 84, shiftKey: true },
74
+ 'Y': { key: 'Y', code: 'KeyY', keyCode: 89, shiftKey: true },
75
+ 'U': { key: 'U', code: 'KeyU', keyCode: 85, shiftKey: true },
76
+ 'I': { key: 'I', code: 'KeyI', keyCode: 73, shiftKey: true },
77
+ 'O': { key: 'O', code: 'KeyO', keyCode: 79, shiftKey: true },
78
+ 'P': { key: 'P', code: 'KeyP', keyCode: 80, shiftKey: true },
79
+ 'A': { key: 'A', code: 'KeyA', keyCode: 65, shiftKey: true },
80
+ 'S': { key: 'S', code: 'KeyS', keyCode: 83, shiftKey: true },
81
+ 'D': { key: 'D', code: 'KeyD', keyCode: 68, shiftKey: true },
82
+ 'F': { key: 'F', code: 'KeyF', keyCode: 70, shiftKey: true },
83
+ 'G': { key: 'G', code: 'KeyG', keyCode: 71, shiftKey: true },
84
+ 'H': { key: 'H', code: 'KeyH', keyCode: 72, shiftKey: true },
85
+ 'J': { key: 'J', code: 'KeyJ', keyCode: 74, shiftKey: true },
86
+ 'K': { key: 'K', code: 'KeyK', keyCode: 75, shiftKey: true },
87
+ 'L': { key: 'L', code: 'KeyL', keyCode: 76, shiftKey: true },
88
+ 'Z': { key: 'Z', code: 'KeyZ', keyCode: 90, shiftKey: true },
89
+ 'X': { key: 'X', code: 'KeyX', keyCode: 88, shiftKey: true },
90
+ 'C': { key: 'C', code: 'KeyC', keyCode: 67, shiftKey: true },
91
+ 'V': { key: 'V', code: 'KeyV', keyCode: 86, shiftKey: true },
92
+ 'B': { key: 'B', code: 'KeyB', keyCode: 66, shiftKey: true },
93
+ 'N': { key: 'N', code: 'KeyN', keyCode: 78, shiftKey: true },
94
+ 'M': { key: 'M', code: 'KeyM', keyCode: 77, shiftKey: true },
95
+ // Пробел
96
+ ' ': { key: ' ', code: 'Space', keyCode: 32 },
97
+ };
@@ -0,0 +1,13 @@
1
+ export { en } from './en';
2
+ export { ru } from './ru';
3
+ export { de } from './de';
4
+ export { fr } from './fr';
5
+ export { es } from './es';
6
+ export { ua } from './ua';
7
+ export { he } from './he';
8
+ export type LayoutPackage = {
9
+ name: string;
10
+ layouts: {
11
+ [key: string]: any;
12
+ };
13
+ };
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.he = exports.ua = exports.es = exports.fr = exports.de = exports.ru = exports.en = void 0;
4
+ // Экспорт всех встроенных раскладок
5
+ var en_1 = require("./en");
6
+ Object.defineProperty(exports, "en", { enumerable: true, get: function () { return en_1.en; } });
7
+ var ru_1 = require("./ru");
8
+ Object.defineProperty(exports, "ru", { enumerable: true, get: function () { return ru_1.ru; } });
9
+ var de_1 = require("./de");
10
+ Object.defineProperty(exports, "de", { enumerable: true, get: function () { return de_1.de; } });
11
+ var fr_1 = require("./fr");
12
+ Object.defineProperty(exports, "fr", { enumerable: true, get: function () { return fr_1.fr; } });
13
+ var es_1 = require("./es");
14
+ Object.defineProperty(exports, "es", { enumerable: true, get: function () { return es_1.es; } });
15
+ var ua_1 = require("./ua");
16
+ Object.defineProperty(exports, "ua", { enumerable: true, get: function () { return ua_1.ua; } });
17
+ var he_1 = require("./he");
18
+ Object.defineProperty(exports, "he", { enumerable: true, get: function () { return he_1.he; } });
@@ -0,0 +1,2 @@
1
+ import { Keymap } from '../types';
2
+ export declare const ru: Keymap;
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ru = void 0;
4
+ exports.ru = {
5
+ // Первый ряд (цифры)
6
+ '1': { key: '1', code: 'Digit1', keyCode: 49 },
7
+ '2': { key: '2', code: 'Digit2', keyCode: 50 },
8
+ '3': { key: '3', code: 'Digit3', keyCode: 51 },
9
+ '4': { key: '4', code: 'Digit4', keyCode: 52 },
10
+ '5': { key: '5', code: 'Digit5', keyCode: 53 },
11
+ '6': { key: '6', code: 'Digit6', keyCode: 54 },
12
+ '7': { key: '7', code: 'Digit7', keyCode: 55 },
13
+ '8': { key: '8', code: 'Digit8', keyCode: 56 },
14
+ '9': { key: '9', code: 'Digit9', keyCode: 57 },
15
+ '0': { key: '0', code: 'Digit0', keyCode: 48 },
16
+ '-': { key: '-', code: 'Minus', keyCode: 189 },
17
+ '=': { key: '=', code: 'Equal', keyCode: 187 },
18
+ // Второй ряд (русская ЙЦУКЕН)
19
+ 'й': { key: 'й', code: 'KeyQ', keyCode: 81 },
20
+ 'ц': { key: 'ц', code: 'KeyW', keyCode: 87 },
21
+ 'у': { key: 'у', code: 'KeyE', keyCode: 69 },
22
+ 'к': { key: 'к', code: 'KeyR', keyCode: 82 },
23
+ 'е': { key: 'е', code: 'KeyT', keyCode: 84 },
24
+ 'н': { key: 'н', code: 'KeyY', keyCode: 89 },
25
+ 'г': { key: 'г', code: 'KeyU', keyCode: 85 },
26
+ 'ш': { key: 'ш', code: 'KeyI', keyCode: 73 },
27
+ 'щ': { key: 'щ', code: 'KeyO', keyCode: 79 },
28
+ 'з': { key: 'з', code: 'KeyP', keyCode: 80 },
29
+ 'х': { key: 'х', code: 'BracketLeft', keyCode: 219 },
30
+ 'ъ': { key: 'ъ', code: 'BracketRight', keyCode: 221 },
31
+ // Третий ряд
32
+ 'ф': { key: 'ф', code: 'KeyA', keyCode: 65 },
33
+ 'ы': { key: 'ы', code: 'KeyS', keyCode: 83 },
34
+ 'в': { key: 'в', code: 'KeyD', keyCode: 68 },
35
+ 'а': { key: 'а', code: 'KeyF', keyCode: 70 },
36
+ 'п': { key: 'п', code: 'KeyG', keyCode: 71 },
37
+ 'р': { key: 'р', code: 'KeyH', keyCode: 72 },
38
+ 'о': { key: 'о', code: 'KeyJ', keyCode: 74 },
39
+ 'л': { key: 'л', code: 'KeyK', keyCode: 75 },
40
+ 'д': { key: 'д', code: 'KeyL', keyCode: 76 },
41
+ 'ж': { key: 'ж', code: 'Semicolon', keyCode: 186 },
42
+ 'э': { key: 'э', code: 'Quote', keyCode: 222 },
43
+ '\\': { key: '\\', code: 'Backslash', keyCode: 220 },
44
+ // Четвертый ряд
45
+ 'я': { key: 'я', code: 'KeyZ', keyCode: 90 },
46
+ 'ч': { key: 'ч', code: 'KeyX', keyCode: 88 },
47
+ 'с': { key: 'с', code: 'KeyC', keyCode: 67 },
48
+ 'м': { key: 'м', code: 'KeyV', keyCode: 86 },
49
+ 'и': { key: 'и', code: 'KeyB', keyCode: 66 },
50
+ 'т': { key: 'т', code: 'KeyN', keyCode: 78 },
51
+ 'ь': { key: 'ь', code: 'KeyM', keyCode: 77 },
52
+ 'б': { key: 'б', code: 'Comma', keyCode: 188 },
53
+ 'ю': { key: 'ю', code: 'Period', keyCode: 190 },
54
+ '.': { key: '.', code: 'Slash', keyCode: 191 },
55
+ // Заглавные буквы (с Shift)
56
+ 'Й': { key: 'Й', code: 'KeyQ', keyCode: 81, shiftKey: true },
57
+ 'Ц': { key: 'Ц', code: 'KeyW', keyCode: 87, shiftKey: true },
58
+ 'У': { key: 'У', code: 'KeyE', keyCode: 69, shiftKey: true },
59
+ 'К': { key: 'К', code: 'KeyR', keyCode: 82, shiftKey: true },
60
+ 'Е': { key: 'Е', code: 'KeyT', keyCode: 84, shiftKey: true },
61
+ 'Н': { key: 'Н', code: 'KeyY', keyCode: 89, shiftKey: true },
62
+ 'Г': { key: 'Г', code: 'KeyU', keyCode: 85, shiftKey: true },
63
+ 'Ш': { key: 'Ш', code: 'KeyI', keyCode: 73, shiftKey: true },
64
+ 'Щ': { key: 'Щ', code: 'KeyO', keyCode: 79, shiftKey: true },
65
+ 'З': { key: 'З', code: 'KeyP', keyCode: 80, shiftKey: true },
66
+ 'Х': { key: 'Х', code: 'BracketLeft', keyCode: 219, shiftKey: true },
67
+ 'Ъ': { key: 'Ъ', code: 'BracketRight', keyCode: 221, shiftKey: true },
68
+ 'Ф': { key: 'Ф', code: 'KeyA', keyCode: 65, shiftKey: true },
69
+ 'Ы': { key: 'Ы', code: 'KeyS', keyCode: 83, shiftKey: true },
70
+ 'В': { key: 'В', code: 'KeyD', keyCode: 68, shiftKey: true },
71
+ 'А': { key: 'А', code: 'KeyF', keyCode: 70, shiftKey: true },
72
+ 'П': { key: 'П', code: 'KeyG', keyCode: 71, shiftKey: true },
73
+ 'Р': { key: 'Р', code: 'KeyH', keyCode: 72, shiftKey: true },
74
+ 'О': { key: 'О', code: 'KeyJ', keyCode: 74, shiftKey: true },
75
+ 'Л': { key: 'Л', code: 'KeyK', keyCode: 75, shiftKey: true },
76
+ 'Д': { key: 'Д', code: 'KeyL', keyCode: 76, shiftKey: true },
77
+ 'Ж': { key: 'Ж', code: 'Semicolon', keyCode: 186, shiftKey: true },
78
+ 'Э': { key: 'Э', code: 'Quote', keyCode: 222, shiftKey: true },
79
+ 'Я': { key: 'Я', code: 'KeyZ', keyCode: 90, shiftKey: true },
80
+ 'Ч': { key: 'Ч', code: 'KeyX', keyCode: 88, shiftKey: true },
81
+ 'С': { key: 'С', code: 'KeyC', keyCode: 67, shiftKey: true },
82
+ 'М': { key: 'М', code: 'KeyV', keyCode: 86, shiftKey: true },
83
+ 'И': { key: 'И', code: 'KeyB', keyCode: 66, shiftKey: true },
84
+ 'Т': { key: 'Т', code: 'KeyN', keyCode: 78, shiftKey: true },
85
+ 'Ь': { key: 'Ь', code: 'KeyM', keyCode: 77, shiftKey: true },
86
+ 'Б': { key: 'Б', code: 'Comma', keyCode: 188, shiftKey: true },
87
+ 'Ю': { key: 'Ю', code: 'Period', keyCode: 190, shiftKey: true },
88
+ // Символы с Shift
89
+ '!': { key: '!', code: 'Digit1', keyCode: 49, shiftKey: true },
90
+ '"': { key: '"', code: 'Digit2', keyCode: 50, shiftKey: true },
91
+ '№': { key: '№', code: 'Digit3', keyCode: 51, shiftKey: true },
92
+ ';': { key: ';', code: 'Digit4', keyCode: 52, shiftKey: true },
93
+ '%': { key: '%', code: 'Digit5', keyCode: 53, shiftKey: true },
94
+ ':': { key: ':', code: 'Digit6', keyCode: 54, shiftKey: true },
95
+ '?': { key: '?', code: 'Digit7', keyCode: 55, shiftKey: true },
96
+ '*': { key: '*', code: 'Digit8', keyCode: 56, shiftKey: true },
97
+ '(': { key: '(', code: 'Digit9', keyCode: 57, shiftKey: true },
98
+ ')': { key: ')', code: 'Digit0', keyCode: 48, shiftKey: true },
99
+ '_': { key: '_', code: 'Minus', keyCode: 189, shiftKey: true },
100
+ '+': { key: '+', code: 'Equal', keyCode: 187, shiftKey: true },
101
+ '/': { key: '/', code: 'Backslash', keyCode: 220, shiftKey: true },
102
+ ',': { key: ',', code: 'Slash', keyCode: 191, shiftKey: true },
103
+ // Пробел
104
+ ' ': { key: ' ', code: 'Space', keyCode: 32 },
105
+ };
@@ -0,0 +1,2 @@
1
+ import { Keymap } from '../types';
2
+ export declare const ua: Keymap;
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ua = void 0;
4
+ exports.ua = {
5
+ // Первый ряд (цифры)
6
+ '1': { key: '1', code: 'Digit1', keyCode: 49 },
7
+ '2': { key: '2', code: 'Digit2', keyCode: 50 },
8
+ '3': { key: '3', code: 'Digit3', keyCode: 51 },
9
+ '4': { key: '4', code: 'Digit4', keyCode: 52 },
10
+ '5': { key: '5', code: 'Digit5', keyCode: 53 },
11
+ '6': { key: '6', code: 'Digit6', keyCode: 54 },
12
+ '7': { key: '7', code: 'Digit7', keyCode: 55 },
13
+ '8': { key: '8', code: 'Digit8', keyCode: 56 },
14
+ '9': { key: '9', code: 'Digit9', keyCode: 57 },
15
+ '0': { key: '0', code: 'Digit0', keyCode: 48 },
16
+ '-': { key: '-', code: 'Minus', keyCode: 189 },
17
+ '=': { key: '=', code: 'Equal', keyCode: 187 },
18
+ // Второй ряд (украинская ЙЦУКЕН)
19
+ 'й': { key: 'й', code: 'KeyQ', keyCode: 81 },
20
+ 'ц': { key: 'ц', code: 'KeyW', keyCode: 87 },
21
+ 'у': { key: 'у', code: 'KeyE', keyCode: 69 },
22
+ 'к': { key: 'к', code: 'KeyR', keyCode: 82 },
23
+ 'е': { key: 'е', code: 'KeyT', keyCode: 84 },
24
+ 'н': { key: 'н', code: 'KeyY', keyCode: 89 },
25
+ 'г': { key: 'г', code: 'KeyU', keyCode: 85 },
26
+ 'ш': { key: 'ш', code: 'KeyI', keyCode: 73 },
27
+ 'щ': { key: 'щ', code: 'KeyO', keyCode: 79 },
28
+ 'з': { key: 'з', code: 'KeyP', keyCode: 80 },
29
+ 'х': { key: 'х', code: 'BracketLeft', keyCode: 219 },
30
+ 'ї': { key: 'ї', code: 'BracketRight', keyCode: 221 }, // украинская ї
31
+ // Третий ряд
32
+ 'ф': { key: 'ф', code: 'KeyA', keyCode: 65 },
33
+ 'і': { key: 'і', code: 'KeyS', keyCode: 83 }, // украинская і
34
+ 'в': { key: 'в', code: 'KeyD', keyCode: 68 },
35
+ 'а': { key: 'а', code: 'KeyF', keyCode: 70 },
36
+ 'п': { key: 'п', code: 'KeyG', keyCode: 71 },
37
+ 'р': { key: 'р', code: 'KeyH', keyCode: 72 },
38
+ 'о': { key: 'о', code: 'KeyJ', keyCode: 74 },
39
+ 'л': { key: 'л', code: 'KeyK', keyCode: 75 },
40
+ 'д': { key: 'д', code: 'KeyL', keyCode: 76 },
41
+ 'ж': { key: 'ж', code: 'Semicolon', keyCode: 186 },
42
+ 'є': { key: 'є', code: 'Quote', keyCode: 222 }, // украинская є
43
+ '\\': { key: '\\', code: 'Backslash', keyCode: 220 },
44
+ // Четвертый ряд
45
+ 'я': { key: 'я', code: 'KeyZ', keyCode: 90 },
46
+ 'ч': { key: 'ч', code: 'KeyX', keyCode: 88 },
47
+ 'с': { key: 'с', code: 'KeyC', keyCode: 67 },
48
+ 'м': { key: 'м', code: 'KeyV', keyCode: 86 },
49
+ 'и': { key: 'и', code: 'KeyB', keyCode: 66 },
50
+ 'т': { key: 'т', code: 'KeyN', keyCode: 78 },
51
+ 'ь': { key: 'ь', code: 'KeyM', keyCode: 77 },
52
+ 'б': { key: 'б', code: 'Comma', keyCode: 188 },
53
+ 'ю': { key: 'ю', code: 'Period', keyCode: 190 },
54
+ '.': { key: '.', code: 'Slash', keyCode: 191 },
55
+ // Заглавные буквы (с Shift)
56
+ 'Й': { key: 'Й', code: 'KeyQ', keyCode: 81, shiftKey: true },
57
+ 'Ц': { key: 'Ц', code: 'KeyW', keyCode: 87, shiftKey: true },
58
+ 'У': { key: 'У', code: 'KeyE', keyCode: 69, shiftKey: true },
59
+ 'К': { key: 'К', code: 'KeyR', keyCode: 82, shiftKey: true },
60
+ 'Е': { key: 'Е', code: 'KeyT', keyCode: 84, shiftKey: true },
61
+ 'Н': { key: 'Н', code: 'KeyY', keyCode: 89, shiftKey: true },
62
+ 'Г': { key: 'Г', code: 'KeyU', keyCode: 85, shiftKey: true },
63
+ 'Ш': { key: 'Ш', code: 'KeyI', keyCode: 73, shiftKey: true },
64
+ 'Щ': { key: 'Щ', code: 'KeyO', keyCode: 79, shiftKey: true },
65
+ 'З': { key: 'З', code: 'KeyP', keyCode: 80, shiftKey: true },
66
+ 'Х': { key: 'Х', code: 'BracketLeft', keyCode: 219, shiftKey: true },
67
+ 'Ї': { key: 'Ї', code: 'BracketRight', keyCode: 221, shiftKey: true },
68
+ 'Ф': { key: 'Ф', code: 'KeyA', keyCode: 65, shiftKey: true },
69
+ 'І': { key: 'І', code: 'KeyS', keyCode: 83, shiftKey: true },
70
+ 'В': { key: 'В', code: 'KeyD', keyCode: 68, shiftKey: true },
71
+ 'А': { key: 'А', code: 'KeyF', keyCode: 70, shiftKey: true },
72
+ 'П': { key: 'П', code: 'KeyG', keyCode: 71, shiftKey: true },
73
+ 'Р': { key: 'Р', code: 'KeyH', keyCode: 72, shiftKey: true },
74
+ 'О': { key: 'О', code: 'KeyJ', keyCode: 74, shiftKey: true },
75
+ 'Л': { key: 'Л', code: 'KeyK', keyCode: 75, shiftKey: true },
76
+ 'Д': { key: 'Д', code: 'KeyL', keyCode: 76, shiftKey: true },
77
+ 'Ж': { key: 'Ж', code: 'Semicolon', keyCode: 186, shiftKey: true },
78
+ 'Є': { key: 'Є', code: 'Quote', keyCode: 222, shiftKey: true },
79
+ 'Я': { key: 'Я', code: 'KeyZ', keyCode: 90, shiftKey: true },
80
+ 'Ч': { key: 'Ч', code: 'KeyX', keyCode: 88, shiftKey: true },
81
+ 'С': { key: 'С', code: 'KeyC', keyCode: 67, shiftKey: true },
82
+ 'М': { key: 'М', code: 'KeyV', keyCode: 86, shiftKey: true },
83
+ 'И': { key: 'И', code: 'KeyB', keyCode: 66, shiftKey: true },
84
+ 'Т': { key: 'Т', code: 'KeyN', keyCode: 78, shiftKey: true },
85
+ 'Ь': { key: 'Ь', code: 'KeyM', keyCode: 77, shiftKey: true },
86
+ 'Б': { key: 'Б', code: 'Comma', keyCode: 188, shiftKey: true },
87
+ 'Ю': { key: 'Ю', code: 'Period', keyCode: 190, shiftKey: true },
88
+ // Символы с Shift
89
+ '!': { key: '!', code: 'Digit1', keyCode: 49, shiftKey: true },
90
+ '@': { key: '@', code: 'Digit2', keyCode: 50, shiftKey: true },
91
+ '#': { key: '#', code: 'Digit3', keyCode: 51, shiftKey: true },
92
+ '$': { key: '$', code: 'Digit4', keyCode: 52, shiftKey: true },
93
+ '%': { key: '%', code: 'Digit5', keyCode: 53, shiftKey: true },
94
+ '^': { key: '^', code: 'Digit6', keyCode: 54, shiftKey: true },
95
+ '&': { key: '&', code: 'Digit7', keyCode: 55, shiftKey: true },
96
+ '*': { key: '*', code: 'Digit8', keyCode: 56, shiftKey: true },
97
+ '(': { key: '(', code: 'Digit9', keyCode: 57, shiftKey: true },
98
+ ')': { key: ')', code: 'Digit0', keyCode: 48, shiftKey: true },
99
+ '_': { key: '_', code: 'Minus', keyCode: 189, shiftKey: true },
100
+ '+': { key: '+', code: 'Equal', keyCode: 187, shiftKey: true },
101
+ // Пробел
102
+ ' ': { key: ' ', code: 'Space', keyCode: 32 },
103
+ };
@@ -0,0 +1,17 @@
1
+ export interface KeyDefinition {
2
+ key?: string;
3
+ code: string;
4
+ keyCode: number;
5
+ shiftKey?: boolean;
6
+ location?: number;
7
+ }
8
+ export interface Keymap {
9
+ [key: string]: KeyDefinition;
10
+ }
11
+ export interface InspectionResult {
12
+ char: string;
13
+ keyDefinition: KeyDefinition;
14
+ layouts: {
15
+ [layoutName: string]: string | null;
16
+ };
17
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/package.json ADDED
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "keymap-inspector",
3
+ "version": "0.1.0",
4
+ "description": "Inspect keyboard events and characters across different layouts.",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "bin": {
8
+ "keymap-inspector": "dist/cli/index.js"
9
+ },
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "start": "ts-node src/index.ts",
13
+ "dev": "ts-node-dev --respawn src/index.ts",
14
+ "cli": "npm run build && node dist/cli/index.js",
15
+ "prepublishOnly": "npm run build",
16
+ "test": "echo \"No tests yet\" && exit 0"
17
+ },
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "git+https://github.com/MikyViz/keymap-inspector.git"
21
+ },
22
+ "keywords": [
23
+ "keymap",
24
+ "keyboard",
25
+ "layout",
26
+ "inspector",
27
+ "i18n"
28
+ ],
29
+ "author": "vizenovsky@gmail.com",
30
+ "license": "MIT",
31
+ "files": [
32
+ "dist/**/*",
33
+ "README.md",
34
+ "LICENSE"
35
+ ],
36
+ "devDependencies": {
37
+ "@types/node": "^20.11.24",
38
+ "ts-node": "^10.9.2",
39
+ "ts-node-dev": "^2.0.0",
40
+ "typescript": "^5.3.3"
41
+ }
42
+ }