Skip to content

Commit 7e5618d

Browse files
jellydnclaude
andauthored
Add Enthium v13 (PWF/;) keyboard layout (#551)
* Add Enthium v13 (PWF/;) keyboard layout - Add LAYOUT_EN_ENTHIUM_V13 character dictionary - Register Layout.EN_ENTHIUM_V13 with ID 0xba (Matrix geometry) - Add layout to loader and Layout.ALL list - Update layout-id.md documentation Based on v13 release from sunaku/enthium repository: - Improves pinky comfort with P on upper row - Optimizes punctuation: /; swapped based on frequency data - 52.5% reduction in long-distance row jumps - 30% reduction in right pinky SFB rate - 0.22%–0.55% SFBs, 45.82% rolls, 2.91% pinky off * Temporarily remove workflow for push * Restore workflow file * Fix Enthium v13 layout key mappings - Correct KeyH from 'k' to hyphen '-' - Correct KeyJ from 'h' to 'k' - Correct KeyK from 't' to 'h' - Correct KeyL from 'n' to 't' - Correct Semicolon from ';' to 's' - Correct Quote from apostrophe to ';' - Correct KeyB from ';' to 'w' Matches v13 ASCII layout with proper character placement * Remove workflow file for push * Restore workflow file locally * Fix Enthium v13 keyboard layout with proper JSON source - Created enthium_v13.json source file following v11 pattern - Added v13 entry to generate-layouts.ts - Regenerated en_enthium_v13.ts with correct home row mapping - Home row now correctly maps: b c i a e - k h t n s w - Fixes positioning of 'w' from CapsLock to Quote position Based on official Enthium v13 specification from: https://github.com/sunaku/enthium/releases/tag/v13 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * Temporarily remove workflow for push * chore: add ci back --------- Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent ba57406 commit 7e5618d

7 files changed

Lines changed: 120 additions & 4 deletions

File tree

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,4 @@ jobs:
2222
npm run test
2323
env:
2424
DATABASE_CLIENT: sqlite
25-
NODE_COMPILE_CACHE: /tmp/node-compile-cache
25+
NODE_COMPILE_CACHE: /tmp/node-compile-cache
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
{
2+
"Backquote": "`~",
3+
"Digit1": "1!",
4+
"Digit2": "2@",
5+
"Digit3": "3#",
6+
"Digit4": "4$",
7+
"Digit5": "5%",
8+
"Digit6": "6^",
9+
"Digit7": "7&",
10+
"Digit8": "8*",
11+
"Digit9": "9(",
12+
"Digit0": "0)",
13+
"Minus": "-_",
14+
"Equal": "=+",
15+
"KeyQ": "qQ",
16+
"KeyW": "yY",
17+
"KeyE": "oO",
18+
"KeyR": "uU",
19+
"KeyT": "=+",
20+
"KeyY": "xX",
21+
"KeyU": "lL",
22+
"KeyI": "dD",
23+
"KeyO": "pP",
24+
"KeyP": "zZ",
25+
"CapsLock": "bB",
26+
"KeyA": "cC",
27+
"KeyS": "iI",
28+
"KeyD": "aA",
29+
"KeyF": "eE",
30+
"KeyG": "-_",
31+
"KeyH": "kK",
32+
"KeyJ": "hH",
33+
"KeyK": "tT",
34+
"KeyL": "nN",
35+
"Semicolon": "sS",
36+
"Quote": "wW",
37+
"KeyZ": "'\"",
38+
"KeyX": ",<",
39+
"KeyC": ".>",
40+
"KeyV": "/?",
41+
"KeyB": ";:",
42+
"KeyN": "jJ",
43+
"KeyM": "mM",
44+
"Comma": "gG",
45+
"Period": "fF",
46+
"Slash": "vV",
47+
"Space": " ",
48+
"ThumbClusterRight1": "rR"
49+
}

packages/keybr-generators/lib/generate-layouts.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ for (const [id, layout] of [
4343
["en_enthium_v6", importKeymap("layouts/enthium_v6.json")],
4444
["en_enthium_v10", importKeymap("layouts/enthium_v10.json")],
4545
["en_enthium_v11", importKeymap("layouts/enthium_v11.json")],
46+
["en_enthium_v13", importKeymap("layouts/enthium_v13.json")],
4647
["en_focal", importKeymap("layouts/en_focal.json")],
4748
["en_gallium", importKlc("layouts/en_gallium.klc")],
4849
["en_gallium_matrix", importKlc("layouts/en_gallium_matrix.klc")],

packages/keybr-keyboard/lib/layout-id.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@
172172
- `0xb7`:
173173
- `0xb8`: English/Enthium V10 (Matrix)
174174
- `0xb9`: English/Enthium V11 (Matrix)
175-
- `0xba`:
175+
- `0xba`: English/Enthium V13 (Matrix)
176176
- `0xbb`:
177177
- `0xbc`:
178178
- `0xbd`:
@@ -243,7 +243,7 @@
243243
- `0xfe`:
244244
- `0xff`:
245245

246-
91 allocated identifiers
246+
92 allocated identifiers
247247

248-
149 free identifiers
248+
148 free identifiers
249249

packages/keybr-keyboard/lib/layout.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1229,6 +1229,15 @@ export class Layout implements XEnumItem {
12291229
/* emulate= */ false,
12301230
/* geometries= */ new Enum(Geometry.MATRIX),
12311231
);
1232+
static readonly EN_ENTHIUM_V13 = new Layout(
1233+
/* id= */ "en-enthium-v13",
1234+
/* xid= */ 0xba,
1235+
/* name= */ "Enthium V13 (Matrix)",
1236+
/* family= */ "enthium",
1237+
/* language= */ Language.EN,
1238+
/* emulate= */ false,
1239+
/* geometries= */ new Enum(Geometry.MATRIX),
1240+
);
12321241
static readonly EN_NIGHT_MATRIX = new Layout(
12331242
/* id= */ "en-night-matrix",
12341243
/* xid= */ 0xa9,
@@ -1355,6 +1364,7 @@ export class Layout implements XEnumItem {
13551364
Layout.EN_ENTHIUM_V6,
13561365
Layout.EN_ENTHIUM_V10,
13571366
Layout.EN_ENTHIUM_V11,
1367+
Layout.EN_ENTHIUM_V13,
13581368
Layout.EN_KUNTEM,
13591369
Layout.EN_UK,
13601370
Layout.EN_JP,
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
// Generated file, do not edit.
2+
3+
import { type CharacterDict } from "../types.ts";
4+
5+
// prettier-ignore
6+
export const LAYOUT_EN_ENTHIUM_V13: CharacterDict = {
7+
Backquote: [/* GRAVE ACCENT */ 0x0060, /* TILDE */ 0x007e],
8+
Digit1: [/* DIGIT ONE */ 0x0031, /* EXCLAMATION MARK */ 0x0021],
9+
Digit2: [/* DIGIT TWO */ 0x0032, /* COMMERCIAL AT */ 0x0040],
10+
Digit3: [/* DIGIT THREE */ 0x0033, /* NUMBER SIGN */ 0x0023],
11+
Digit4: [/* DIGIT FOUR */ 0x0034, /* DOLLAR SIGN */ 0x0024],
12+
Digit5: [/* DIGIT FIVE */ 0x0035, /* PERCENT SIGN */ 0x0025],
13+
Digit6: [/* DIGIT SIX */ 0x0036, /* CIRCUMFLEX ACCENT */ 0x005e],
14+
Digit7: [/* DIGIT SEVEN */ 0x0037, /* AMPERSAND */ 0x0026],
15+
Digit8: [/* DIGIT EIGHT */ 0x0038, /* ASTERISK */ 0x002a],
16+
Digit9: [/* DIGIT NINE */ 0x0039, /* LEFT PARENTHESIS */ 0x0028],
17+
Digit0: [/* DIGIT ZERO */ 0x0030, /* RIGHT PARENTHESIS */ 0x0029],
18+
Minus: [/* HYPHEN-MINUS */ 0x002d, /* LOW LINE */ 0x005f],
19+
Equal: [/* EQUALS SIGN */ 0x003d, /* PLUS SIGN */ 0x002b],
20+
KeyQ: [/* LATIN SMALL LETTER Q */ 0x0071, /* LATIN CAPITAL LETTER Q */ 0x0051],
21+
KeyW: [/* LATIN SMALL LETTER Y */ 0x0079, /* LATIN CAPITAL LETTER Y */ 0x0059],
22+
KeyE: [/* LATIN SMALL LETTER O */ 0x006f, /* LATIN CAPITAL LETTER O */ 0x004f],
23+
KeyR: [/* LATIN SMALL LETTER U */ 0x0075, /* LATIN CAPITAL LETTER U */ 0x0055],
24+
KeyT: [/* EQUALS SIGN */ 0x003d, /* PLUS SIGN */ 0x002b],
25+
KeyY: [/* LATIN SMALL LETTER X */ 0x0078, /* LATIN CAPITAL LETTER X */ 0x0058],
26+
KeyU: [/* LATIN SMALL LETTER L */ 0x006c, /* LATIN CAPITAL LETTER L */ 0x004c],
27+
KeyI: [/* LATIN SMALL LETTER D */ 0x0064, /* LATIN CAPITAL LETTER D */ 0x0044],
28+
KeyO: [/* LATIN SMALL LETTER P */ 0x0070, /* LATIN CAPITAL LETTER P */ 0x0050],
29+
KeyP: [/* LATIN SMALL LETTER Z */ 0x007a, /* LATIN CAPITAL LETTER Z */ 0x005a],
30+
KeyA: [/* LATIN SMALL LETTER C */ 0x0063, /* LATIN CAPITAL LETTER C */ 0x0043],
31+
KeyS: [/* LATIN SMALL LETTER I */ 0x0069, /* LATIN CAPITAL LETTER I */ 0x0049],
32+
KeyD: [/* LATIN SMALL LETTER A */ 0x0061, /* LATIN CAPITAL LETTER A */ 0x0041],
33+
KeyF: [/* LATIN SMALL LETTER E */ 0x0065, /* LATIN CAPITAL LETTER E */ 0x0045],
34+
KeyG: [/* HYPHEN-MINUS */ 0x002d, /* LOW LINE */ 0x005f],
35+
KeyH: [/* LATIN SMALL LETTER K */ 0x006b, /* LATIN CAPITAL LETTER K */ 0x004b],
36+
KeyJ: [/* LATIN SMALL LETTER H */ 0x0068, /* LATIN CAPITAL LETTER H */ 0x0048],
37+
KeyK: [/* LATIN SMALL LETTER T */ 0x0074, /* LATIN CAPITAL LETTER T */ 0x0054],
38+
KeyL: [/* LATIN SMALL LETTER N */ 0x006e, /* LATIN CAPITAL LETTER N */ 0x004e],
39+
Semicolon: [/* LATIN SMALL LETTER S */ 0x0073, /* LATIN CAPITAL LETTER S */ 0x0053],
40+
Quote: [/* LATIN SMALL LETTER W */ 0x0077, /* LATIN CAPITAL LETTER W */ 0x0057],
41+
KeyZ: [/* APOSTROPHE */ 0x0027, /* QUOTATION MARK */ 0x0022],
42+
KeyX: [/* COMMA */ 0x002c, /* LESS-THAN SIGN */ 0x003c],
43+
KeyC: [/* FULL STOP */ 0x002e, /* GREATER-THAN SIGN */ 0x003e],
44+
KeyV: [/* SOLIDUS */ 0x002f, /* QUESTION MARK */ 0x003f],
45+
KeyB: [/* SEMICOLON */ 0x003b, /* COLON */ 0x003a],
46+
KeyN: [/* LATIN SMALL LETTER J */ 0x006a, /* LATIN CAPITAL LETTER J */ 0x004a],
47+
KeyM: [/* LATIN SMALL LETTER M */ 0x006d, /* LATIN CAPITAL LETTER M */ 0x004d],
48+
Comma: [/* LATIN SMALL LETTER G */ 0x0067, /* LATIN CAPITAL LETTER G */ 0x0047],
49+
Period: [/* LATIN SMALL LETTER F */ 0x0066, /* LATIN CAPITAL LETTER F */ 0x0046],
50+
Slash: [/* LATIN SMALL LETTER V */ 0x0076, /* LATIN CAPITAL LETTER V */ 0x0056],
51+
Space: [/* SPACE */ 0x0020],
52+
CapsLock: [/* LATIN SMALL LETTER B */ 0x0062, /* LATIN CAPITAL LETTER B */ 0x0042],
53+
ThumbClusterRight1: [/* LATIN SMALL LETTER R */ 0x0072, /* LATIN CAPITAL LETTER R */ 0x0052],
54+
};

packages/keybr-keyboard/lib/load.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import { LAYOUT_EN_ENGRAM } from "./layout/en_engram.ts";
4141
import { LAYOUT_EN_ENTHIUM_V6 } from "./layout/en_enthium_v6.ts";
4242
import { LAYOUT_EN_ENTHIUM_V10 } from "./layout/en_enthium_v10.ts";
4343
import { LAYOUT_EN_ENTHIUM_V11 } from "./layout/en_enthium_v11.ts";
44+
import { LAYOUT_EN_ENTHIUM_V13 } from "./layout/en_enthium_v13.ts";
4445
import { LAYOUT_EN_FOCAL } from "./layout/en_focal.ts";
4546
import { LAYOUT_EN_GALLIUM } from "./layout/en_gallium.ts";
4647
import { LAYOUT_EN_GALLIUM_MATRIX } from "./layout/en_gallium_matrix.ts";
@@ -139,6 +140,7 @@ const layouts = new Map<Layout, CharacterDict>([
139140
[Layout.EN_ENTHIUM_V6, LAYOUT_EN_ENTHIUM_V6],
140141
[Layout.EN_ENTHIUM_V10, LAYOUT_EN_ENTHIUM_V10],
141142
[Layout.EN_ENTHIUM_V11, LAYOUT_EN_ENTHIUM_V11],
143+
[Layout.EN_ENTHIUM_V13, LAYOUT_EN_ENTHIUM_V13],
142144
[Layout.EN_FOCAL, LAYOUT_EN_FOCAL],
143145
[Layout.EN_GALLIUM, LAYOUT_EN_GALLIUM],
144146
[Layout.EN_GALLIUM_MATRIX, LAYOUT_EN_GALLIUM_MATRIX],

0 commit comments

Comments
 (0)