From 1031cc82103bc04381ede2807beaad747664ed8b Mon Sep 17 00:00:00 2001 From: aoieop Date: Tue, 10 Feb 2026 08:26:19 -0500 Subject: [PATCH 1/6] Added vitrimak layout --- frontend/static/layouts/vitrimak.json | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 frontend/static/layouts/vitrimak.json diff --git a/frontend/static/layouts/vitrimak.json b/frontend/static/layouts/vitrimak.json new file mode 100644 index 000000000000..e69de29bb2d1 From bbd975cd976156b800c39f8e1f663c3a2b53a426 Mon Sep 17 00:00:00 2001 From: aoieop Date: Tue, 10 Feb 2026 08:35:33 -0500 Subject: [PATCH 2/6] feat(layout): Add vitrimak layout --- frontend/static/layouts/vitrimak.json | 62 +++++++++++++++++++++++++++ packages/schemas/src/layouts.ts | 1 + 2 files changed, 63 insertions(+) diff --git a/frontend/static/layouts/vitrimak.json b/frontend/static/layouts/vitrimak.json index e69de29bb2d1..5e81506a3da4 100644 --- a/frontend/static/layouts/vitrimak.json +++ b/frontend/static/layouts/vitrimak.json @@ -0,0 +1,62 @@ +{ + "keymapShowTopRow": false, + "type": "ansi", + "keys": { + "row1": [ + ["`", "~"], + ["1", "!"], + ["2", "@"], + ["3", "#"], + ["4", "$"], + ["5", "%"], + ["6", "^"], + ["7", "&"], + ["8", "*"], + ["9", "("], + ["0", ")"], + ["[", "{"], + ["]", "}"] + ], + "row2": [ + ["t", "T"], + ["k", "K"], + ["v", "V"], + ["u", "U"], + ["m", "M"], + ["i", "I"], + ["a", "A"], + ["j", "J"], + ["b", "B"], + ["r", "R"], + ["[", "{"], + ["]", "}"], + ["\\", "|"] + ], + "row3": [ + ["w", "W"], + ["x", "X"], + ["/", "?"], + ["f", "F"], + ["p", "P"], + ["d", "D"], + ["g", "G"], + ["q", "Q"], + [",", "<"], + ["s", "S"], + [";", ":"] + ], + "row4": [ + ["h", "H"], + [".", ">"], + ["'", "\""], + ["c", "C"], + ["o", "O"], + ["l", "L"], + ["n", "N"], + ["z", "Z"], + ["y", "Y"], + ["e", "E"] + ], + "row5": [[" "]] + } +} \ No newline at end of file diff --git a/packages/schemas/src/layouts.ts b/packages/schemas/src/layouts.ts index 94de81ef32df..a885cc069f19 100644 --- a/packages/schemas/src/layouts.ts +++ b/packages/schemas/src/layouts.ts @@ -232,6 +232,7 @@ export const LayoutNameSchema = z.enum( "persian_standard_colemak", "ergo_split46", "tamil99", + "vitrimak", ], { errorMap: customEnumErrorHandler("Must be a supported layout"), From a2c191307a20f5c2df4e3e63c5e92f2e64a5b919 Mon Sep 17 00:00:00 2001 From: aoieop Date: Tue, 10 Feb 2026 08:46:36 -0500 Subject: [PATCH 3/6] Fixed duplicate --- frontend/static/layouts/vitrimak.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/static/layouts/vitrimak.json b/frontend/static/layouts/vitrimak.json index 5e81506a3da4..41410e8a2eb2 100644 --- a/frontend/static/layouts/vitrimak.json +++ b/frontend/static/layouts/vitrimak.json @@ -14,8 +14,8 @@ ["8", "*"], ["9", "("], ["0", ")"], - ["[", "{"], - ["]", "}"] + ["-", "_"], + ["+", "="] ], "row2": [ ["t", "T"], From ba264ba54417e9bab06a7c1efa20fd09299ffff2 Mon Sep 17 00:00:00 2001 From: aoieop Date: Tue, 10 Feb 2026 08:51:27 -0500 Subject: [PATCH 4/6] swap shift-layer for =/+ --- frontend/static/layouts/vitrimak.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/static/layouts/vitrimak.json b/frontend/static/layouts/vitrimak.json index 41410e8a2eb2..36395a0ac98e 100644 --- a/frontend/static/layouts/vitrimak.json +++ b/frontend/static/layouts/vitrimak.json @@ -15,7 +15,7 @@ ["9", "("], ["0", ")"], ["-", "_"], - ["+", "="] + ["=", "+"] ], "row2": [ ["t", "T"], From 3b60be277818d5a8acd3e3d66a141a102b7d2604 Mon Sep 17 00:00:00 2001 From: fehmer <3728838+fehmer@users.noreply.github.com> Date: Tue, 10 Feb 2026 13:56:30 +0000 Subject: [PATCH 5/6] fix formatting --- frontend/static/layouts/vitrimak.json | 2 +- pnpm-lock.yaml | 21 +++++++++++++-------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/frontend/static/layouts/vitrimak.json b/frontend/static/layouts/vitrimak.json index 36395a0ac98e..86f64e41536a 100644 --- a/frontend/static/layouts/vitrimak.json +++ b/frontend/static/layouts/vitrimak.json @@ -59,4 +59,4 @@ ], "row5": [[" "]] } -} \ No newline at end of file +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 59bda0b9f6db..eb30fb59eccb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -224,7 +224,7 @@ importers: version: 10.0.0 '@vitest/coverage-v8': specifier: 4.0.15 - version: 4.0.15(vitest@4.0.15(@opentelemetry/api@1.8.0)(@types/node@24.9.1)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.70.0)(terser@5.46.0)(tsx@4.16.2)(yaml@2.8.1)) + version: 4.0.15(vitest@4.0.15(@types/node@24.9.1)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.70.0)(terser@5.46.0)(tsx@4.16.2)(yaml@2.8.1)) concurrently: specifier: 8.2.2 version: 8.2.2 @@ -429,7 +429,7 @@ importers: version: 5.0.2 '@vitest/coverage-v8': specifier: 4.0.15 - version: 4.0.15(vitest@4.0.15(@opentelemetry/api@1.8.0)(@types/node@24.9.1)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.70.0)(terser@5.46.0)(tsx@4.16.2)(yaml@2.8.1)) + version: 4.0.15(vitest@4.0.15(@types/node@24.9.1)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.70.0)(terser@5.46.0)(tsx@4.16.2)(yaml@2.8.1)) autoprefixer: specifier: 10.4.20 version: 10.4.20(postcss@8.4.31) @@ -5876,25 +5876,28 @@ packages: glob@10.4.5: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true glob@11.0.3: resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==} engines: {node: 20 || >=22} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me glob@8.1.0: resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} engines: {node: '>=12'} - deprecated: Glob versions prior to v9 are no longer supported + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me glob@9.3.5: resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} engines: {node: '>=16 || 14 >=14.17'} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me global-dirs@0.1.1: resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} @@ -6652,6 +6655,7 @@ packages: json-ptr@3.1.1: resolution: {integrity: sha512-SiSJQ805W1sDUCD1+/t1/1BIrveq2Fe9HJqENxZmMCILmrPI7WhS/pePpIOx85v6/H2z1Vy7AI08GV2TzfXocg==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. json-schema-to-ts@2.7.2: resolution: {integrity: sha512-R1JfqKqbBR4qE8UyBR56Ms30LL62/nlhoz+1UkfI/VE7p54Awu919FZ6ZUPG8zIa3XB65usPJgr1ONVncUGSaQ==} @@ -9192,6 +9196,7 @@ packages: tar@6.2.1: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me tcp-port-used@1.0.2: resolution: {integrity: sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA==} @@ -13560,7 +13565,7 @@ snapshots: '@typescript-eslint/types': 8.52.0 eslint-visitor-keys: 4.2.1 - '@vitest/coverage-v8@4.0.15(vitest@4.0.15(@opentelemetry/api@1.8.0)(@types/node@24.9.1)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.70.0)(terser@5.46.0)(tsx@4.16.2)(yaml@2.8.1))': + '@vitest/coverage-v8@4.0.15(vitest@4.0.15(@types/node@20.5.1)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.70.0)(terser@5.46.0)(tsx@4.16.2)(yaml@2.8.1))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.15 @@ -13573,11 +13578,11 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.15(@opentelemetry/api@1.8.0)(@types/node@24.9.1)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.70.0)(terser@5.46.0)(tsx@4.16.2)(yaml@2.8.1) + vitest: 4.0.15(@types/node@20.5.1)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.70.0)(terser@5.46.0)(tsx@4.16.2)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@4.0.15(vitest@4.0.15(@types/node@20.5.1)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.70.0)(terser@5.46.0)(tsx@4.16.2)(yaml@2.8.1))': + '@vitest/coverage-v8@4.0.15(vitest@4.0.15(@types/node@24.9.1)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.70.0)(terser@5.46.0)(tsx@4.16.2)(yaml@2.8.1))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.15 @@ -13590,7 +13595,7 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.15(@types/node@20.5.1)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.70.0)(terser@5.46.0)(tsx@4.16.2)(yaml@2.8.1) + vitest: 4.0.15(@opentelemetry/api@1.8.0)(@types/node@24.9.1)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.70.0)(terser@5.46.0)(tsx@4.16.2)(yaml@2.8.1) transitivePeerDependencies: - supports-color From 8ba23fb7a317ffbd43acbe8dcc4891f9ff376f82 Mon Sep 17 00:00:00 2001 From: aoieop Date: Tue, 10 Feb 2026 08:56:57 -0500 Subject: [PATCH 6/6] Fix formatting? --- frontend/static/layouts/vitrimak.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/static/layouts/vitrimak.json b/frontend/static/layouts/vitrimak.json index 36395a0ac98e..86f64e41536a 100644 --- a/frontend/static/layouts/vitrimak.json +++ b/frontend/static/layouts/vitrimak.json @@ -59,4 +59,4 @@ ], "row5": [[" "]] } -} \ No newline at end of file +}