Skip to content

Commit e191e23

Browse files
authored
Add Focal layout (#403)
1 parent 57b6975 commit e191e23

File tree

5 files changed

+132
-0
lines changed

5 files changed

+132
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
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": "vV",
16+
"KeyW": "lL",
17+
"KeyE": "hH",
18+
"KeyR": "gG",
19+
"KeyT": "kK",
20+
"KeyY": "qQ",
21+
"KeyU": "fF",
22+
"KeyI": "oO",
23+
"KeyO": "uU",
24+
"KeyP": "jJ",
25+
"BracketLeft": "[{",
26+
"BracketRight": "]}",
27+
"Backslash": "\\|",
28+
"KeyA": "sS",
29+
"KeyS": "rR",
30+
"KeyD": "nN",
31+
"KeyF": "tT",
32+
"KeyG": "bB",
33+
"KeyH": "yY",
34+
"KeyJ": "cC",
35+
"KeyK": "aA",
36+
"KeyL": "eE",
37+
"Semicolon": "iI",
38+
"Quote": "/?",
39+
"IntlBackslash": "\\|",
40+
"KeyZ": "zZ",
41+
"KeyX": "xX",
42+
"KeyC": "mM",
43+
"KeyV": "dD",
44+
"KeyB": "pP",
45+
"KeyN": "'\"",
46+
"KeyM": "wW",
47+
"Comma": ".>",
48+
"Period": ";:",
49+
"Slash": ",<",
50+
"Space": " ",
51+
"ThumbClusterLeft1": "=+",
52+
"ThumbClusterLeft2": "/?",
53+
"ThumbClusterRight1": "-_"
54+
}

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

+1
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ for (const [id, layout] of [
5252
["en_workman", importKeymap("layouts/en_workman.json")],
5353
["en_workman_prog", importKeymap("layouts/en_workman_prog.json")],
5454
["en-aptv3", importKeymap("layouts/en_aptv3.json")],
55+
["en_focal", importKeymap("layouts/en_focal.json")],
5556
["es_es", importCldr("cldr-keyboards-43.0/keyboards/windows/es-t-k0-windows.xml")],
5657
["es_mx", importCldr("cldr-keyboards-43.0/keyboards/windows/es-419-t-k0-windows.xml")],
5758
["fa_ir", importCldr("cldr-keyboards-43.0/keyboards/windows/fa-t-k0-windows-extended.xml")],

packages/keybr-keyboard/lib/layout.ts

+16
Original file line numberDiff line numberDiff line change
@@ -1085,6 +1085,21 @@ export class Layout implements XEnumItem {
10851085
Geometry.MATRIX,
10861086
),
10871087
);
1088+
static readonly EN_FOCAL = new Layout(
1089+
/* id= */ "en_focal",
1090+
/* xid= */ 0xa5,
1091+
/* name= */ "Focal",
1092+
/* family= */ "focal",
1093+
/* language= */ Language.EN,
1094+
/* emulate= */ true,
1095+
/* geometries= */ new Enum(
1096+
Geometry.ANSI_101,
1097+
Geometry.ANSI_101_FULL,
1098+
Geometry.ISO_102,
1099+
Geometry.ISO_102_FULL,
1100+
Geometry.MATRIX,
1101+
),
1102+
);
10881103

10891104
static readonly ALL = new XEnum<Layout>(
10901105
Layout.EN_US,
@@ -1111,6 +1126,7 @@ export class Layout implements XEnumItem {
11111126
Layout.EN_GALLIUM_MATRIX,
11121127
Layout.EN_GRAPHITE,
11131128
Layout.EN_APT_v3,
1129+
Layout.EN_FOCAL,
11141130
Layout.EN_UK,
11151131
Layout.EN_JP,
11161132
Layout.EL_GR,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
// Generated file, do not edit.
2+
3+
import { type CharacterDict } from "../types.ts";
4+
5+
// prettier-ignore
6+
export const LAYOUT_EN_FOCAL: 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 V */ 0x0076, /* LATIN CAPITAL LETTER V */ 0x0056],
21+
KeyW: [/* LATIN SMALL LETTER L */ 0x006c, /* LATIN CAPITAL LETTER L */ 0x004c],
22+
KeyE: [/* LATIN SMALL LETTER H */ 0x0068, /* LATIN CAPITAL LETTER H */ 0x0048],
23+
KeyR: [/* LATIN SMALL LETTER G */ 0x0067, /* LATIN CAPITAL LETTER G */ 0x0047],
24+
KeyT: [/* LATIN SMALL LETTER K */ 0x006b, /* LATIN CAPITAL LETTER K */ 0x004b],
25+
KeyY: [/* LATIN SMALL LETTER Q */ 0x0071, /* LATIN CAPITAL LETTER Q */ 0x0051],
26+
KeyU: [/* LATIN SMALL LETTER F */ 0x0066, /* LATIN CAPITAL LETTER F */ 0x0046],
27+
KeyI: [/* LATIN SMALL LETTER O */ 0x006f, /* LATIN CAPITAL LETTER O */ 0x004f],
28+
KeyO: [/* LATIN SMALL LETTER U */ 0x0075, /* LATIN CAPITAL LETTER U */ 0x0055],
29+
KeyP: [/* LATIN SMALL LETTER J */ 0x006a, /* LATIN CAPITAL LETTER J */ 0x004a],
30+
BracketLeft: [/* LEFT SQUARE BRACKET */ 0x005b, /* LEFT CURLY BRACKET */ 0x007b],
31+
BracketRight: [/* RIGHT SQUARE BRACKET */ 0x005d, /* RIGHT CURLY BRACKET */ 0x007d],
32+
Backslash: [/* REVERSE SOLIDUS */ 0x005c, /* VERTICAL LINE */ 0x007c],
33+
KeyA: [/* LATIN SMALL LETTER S */ 0x0073, /* LATIN CAPITAL LETTER S */ 0x0053],
34+
KeyS: [/* LATIN SMALL LETTER R */ 0x0072, /* LATIN CAPITAL LETTER R */ 0x0052],
35+
KeyD: [/* LATIN SMALL LETTER N */ 0x006e, /* LATIN CAPITAL LETTER N */ 0x004e],
36+
KeyF: [/* LATIN SMALL LETTER T */ 0x0074, /* LATIN CAPITAL LETTER T */ 0x0054],
37+
KeyG: [/* LATIN SMALL LETTER B */ 0x0062, /* LATIN CAPITAL LETTER B */ 0x0042],
38+
KeyH: [/* LATIN SMALL LETTER Y */ 0x0079, /* LATIN CAPITAL LETTER Y */ 0x0059],
39+
KeyJ: [/* LATIN SMALL LETTER C */ 0x0063, /* LATIN CAPITAL LETTER C */ 0x0043],
40+
KeyK: [/* LATIN SMALL LETTER A */ 0x0061, /* LATIN CAPITAL LETTER A */ 0x0041],
41+
KeyL: [/* LATIN SMALL LETTER E */ 0x0065, /* LATIN CAPITAL LETTER E */ 0x0045],
42+
Semicolon: [/* LATIN SMALL LETTER I */ 0x0069, /* LATIN CAPITAL LETTER I */ 0x0049],
43+
Quote: [/* SOLIDUS */ 0x002f, /* QUESTION MARK */ 0x003f],
44+
IntlBackslash: [/* REVERSE SOLIDUS */ 0x005c, /* VERTICAL LINE */ 0x007c],
45+
KeyZ: [/* LATIN SMALL LETTER Z */ 0x007a, /* LATIN CAPITAL LETTER Z */ 0x005a],
46+
KeyX: [/* LATIN SMALL LETTER X */ 0x0078, /* LATIN CAPITAL LETTER X */ 0x0058],
47+
KeyC: [/* LATIN SMALL LETTER M */ 0x006d, /* LATIN CAPITAL LETTER M */ 0x004d],
48+
KeyV: [/* LATIN SMALL LETTER D */ 0x0064, /* LATIN CAPITAL LETTER D */ 0x0044],
49+
KeyB: [/* LATIN SMALL LETTER P */ 0x0070, /* LATIN CAPITAL LETTER P */ 0x0050],
50+
KeyN: [/* APOSTROPHE */ 0x0027, /* QUOTATION MARK */ 0x0022],
51+
KeyM: [/* LATIN SMALL LETTER W */ 0x0077, /* LATIN CAPITAL LETTER W */ 0x0057],
52+
Comma: [/* FULL STOP */ 0x002e, /* GREATER-THAN SIGN */ 0x003e],
53+
Period: [/* SEMICOLON */ 0x003b, /* COLON */ 0x003a],
54+
Slash: [/* COMMA */ 0x002c, /* LESS-THAN SIGN */ 0x003c],
55+
Space: [/* SPACE */ 0x0020],
56+
ThumbClusterLeft1: [/* EQUALS SIGN */ 0x003d, /* PLUS SIGN */ 0x002b],
57+
ThumbClusterLeft2: [/* SOLIDUS */ 0x002f, /* QUESTION MARK */ 0x003f],
58+
ThumbClusterRight1: [/* HYPHEN-MINUS */ 0x002d, /* LOW LINE */ 0x005f],
59+
};

packages/keybr-keyboard/lib/load.ts

+2
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import { LAYOUT_EN_COLEMAK_DH_MATRIX } from "./layout/en_colemak_dh_matrix.ts";
3636
import { LAYOUT_EN_DVORAK } from "./layout/en_dvorak.ts";
3737
import { LAYOUT_EN_DVORAK_PROG } from "./layout/en_dvorak_prog.ts";
3838
import { LAYOUT_EN_ENGRAM } from "./layout/en_engram.ts";
39+
import { LAYOUT_EN_FOCAL } from "./layout/en_focal.ts";
3940
import { LAYOUT_EN_GALLIUM } from "./layout/en_gallium.ts";
4041
import { LAYOUT_EN_GALLIUM_MATRIX } from "./layout/en_gallium_matrix.ts";
4142
import { LAYOUT_EN_GRAPHITE } from "./layout/en_graphite.ts";
@@ -114,6 +115,7 @@ const layouts = new Map<Layout, CharacterDict>([
114115
[Layout.EN_DVORAK, LAYOUT_EN_DVORAK],
115116
[Layout.EN_DVORAK_PROG, LAYOUT_EN_DVORAK_PROG],
116117
[Layout.EN_ENGRAM, LAYOUT_EN_ENGRAM],
118+
[Layout.EN_FOCAL, LAYOUT_EN_FOCAL],
117119
[Layout.EN_GALLIUM, LAYOUT_EN_GALLIUM],
118120
[Layout.EN_GALLIUM_MATRIX, LAYOUT_EN_GALLIUM_MATRIX],
119121
[Layout.EN_GRAPHITE, LAYOUT_EN_GRAPHITE],

0 commit comments

Comments
 (0)