Skip to content

Commit 37c63b7

Browse files
authored
feat(layout): add Ergopti French layout (#381)
1 parent 9896310 commit 37c63b7

File tree

5 files changed

+126
-0
lines changed

5 files changed

+126
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
{
2+
"Backquote": "=+}",
3+
"Digit1": "1111",
4+
"Digit2": "2222",
5+
"Digit3": "3333",
6+
"Digit4": "4444",
7+
"Digit5": "5555",
8+
"Digit6": "6666",
9+
"Digit7": "7777",
10+
"Digit8": "8888",
11+
"Digit9": "9999",
12+
"Digit0": "0º°ª",
13+
"Minus": "€€£",
14+
"Equal": "%%‰‱",
15+
"KeyQ": "èÈ`„",
16+
"KeyW": "yY@„",
17+
"KeyE": "oOœŒ",
18+
"KeyR": "wWùÙ",
19+
"KeyT": "bB«“",
20+
"KeyY": "fF»”",
21+
"KeyU": "gG~≈",
22+
"KeyI": "hH#",
23+
"KeyO": "cCçÇ",
24+
"KeyP": "xX*×",
25+
"BracketLeft": "zZ%‰",
26+
"BracketRight": ["", "", " ", "£"],
27+
"Backslash": ["*^", "!", "!", "¡"],
28+
"KeyA": "aA<⩽",
29+
"KeyS": "iI>⩾",
30+
"KeyD": "eE{ᵉ",
31+
"KeyF": "uU}☻",
32+
"KeyG": ".::·",
33+
"KeyH": "vV|¦",
34+
"KeyJ": "sS(—",
35+
"KeyK": "nN)–",
36+
"KeyL": ["t", "T", "[", ""],
37+
"Semicolon": "rR]ℝ",
38+
"Quote": "qQ’€",
39+
"IntlBackslash": "êÊ^",
40+
"KeyZ": "éÉ/÷",
41+
"KeyX": "àÀ\\",
42+
"KeyC": "jJ\"δ",
43+
"KeyV": ",;;’",
44+
"KeyB": "kK…",
45+
"KeyN": "mM&−",
46+
"KeyM": "dD$§",
47+
"Comma": "lL=≠",
48+
"Period": "pP+±",
49+
"Slash": "'??¿",
50+
"Space": " -_ "
51+
}

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

+1
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ for (const [id, layout] of [
6262
["fr_ergo_l", importKeymap("layouts/fr_ergo_l.json")],
6363
["fr_fr", importCldr("cldr-keyboards-43.0/keyboards/windows/fr-t-k0-windows.xml")],
6464
["fr_optimot_ergo", importKeymap("layouts/fr_optimot_ergo.json")],
65+
["fr_ergopti", importKeymap("layouts/fr_ergopti.json")],
6566
["he_il", importCldr("layouts/he_il.xml")],
6667
["he_il_arkn", importCldr("layouts/he_il_arkn.xml")],
6768
["hu_hu", importCldr("cldr-keyboards-43.0/keyboards/windows/hu-t-k0-windows.xml")],

packages/keybr-keyboard/lib/layout.ts

+16
Original file line numberDiff line numberDiff line change
@@ -393,6 +393,21 @@ export class Layout implements XEnumItem {
393393
Geometry.MATRIX,
394394
),
395395
);
396+
static readonly FR_ERGOPTI = new Layout(
397+
/* id= */ "fr-ergopti",
398+
/* xid= */ 0x37,
399+
/* name= */ "Ergopti",
400+
/* family= */ "fr-ergopti",
401+
/* language= */ Language.FR,
402+
/* emulate= */ false,
403+
/* geometries= */ new Enum(
404+
Geometry.ISO_102,
405+
Geometry.ISO_102_FULL,
406+
Geometry.ANSI_101,
407+
Geometry.ANSI_101_FULL,
408+
Geometry.MATRIX,
409+
),
410+
);
396411
static readonly IT_IT = new Layout(
397412
/* id= */ "it-it",
398413
/* xid= */ 0x40,
@@ -1096,6 +1111,7 @@ export class Layout implements XEnumItem {
10961111
Layout.FR_CH,
10971112
Layout.FR_BEPO,
10981113
Layout.FR_ERGO_L,
1114+
Layout.FR_ERGOPTI,
10991115
Layout.FR_ERGLACE,
11001116
Layout.FR_OPTIMOT_ERGO,
11011117
Layout.HE_IL,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
// Generated file, do not edit.
2+
3+
import { type CharacterDict } from "../types.ts";
4+
5+
// prettier-ignore
6+
export const LAYOUT_FR_ERGOPTI: CharacterDict = {
7+
Backquote: [/* EQUALS SIGN */ 0x003d, /* PLUS SIGN */ 0x002b, /* RIGHT CURLY BRACKET */ 0x007d],
8+
Digit1: [/* DIGIT ONE */ 0x0031, /* DIGIT ONE */ 0x0031, /* DIGIT ONE */ 0x0031, /* DIGIT ONE */ 0x0031],
9+
Digit2: [/* DIGIT TWO */ 0x0032, /* DIGIT TWO */ 0x0032, /* DIGIT TWO */ 0x0032, /* DIGIT TWO */ 0x0032],
10+
Digit3: [/* DIGIT THREE */ 0x0033, /* DIGIT THREE */ 0x0033, /* DIGIT THREE */ 0x0033, /* DIGIT THREE */ 0x0033],
11+
Digit4: [/* DIGIT FOUR */ 0x0034, /* DIGIT FOUR */ 0x0034, /* DIGIT FOUR */ 0x0034, /* DIGIT FOUR */ 0x0034],
12+
Digit5: [/* DIGIT FIVE */ 0x0035, /* DIGIT FIVE */ 0x0035, /* DIGIT FIVE */ 0x0035, /* DIGIT FIVE */ 0x0035],
13+
Digit6: [/* DIGIT SIX */ 0x0036, /* DIGIT SIX */ 0x0036, /* DIGIT SIX */ 0x0036, /* DIGIT SIX */ 0x0036],
14+
Digit7: [/* DIGIT SEVEN */ 0x0037, /* DIGIT SEVEN */ 0x0037, /* DIGIT SEVEN */ 0x0037, /* DIGIT SEVEN */ 0x0037],
15+
Digit8: [/* DIGIT EIGHT */ 0x0038, /* DIGIT EIGHT */ 0x0038, /* DIGIT EIGHT */ 0x0038, /* DIGIT EIGHT */ 0x0038],
16+
Digit9: [/* DIGIT NINE */ 0x0039, /* DIGIT NINE */ 0x0039, /* DIGIT NINE */ 0x0039, /* DIGIT NINE */ 0x0039],
17+
Digit0: [/* DIGIT ZERO */ 0x0030, /* MASCULINE ORDINAL INDICATOR */ 0x00ba, /* DEGREE SIGN */ 0x00b0, /* FEMININE ORDINAL INDICATOR */ 0x00aa],
18+
Minus: [/* EURO SIGN */ 0x20ac, /* EURO SIGN */ 0x20ac, /* POUND SIGN */ 0x00a3],
19+
Equal: [/* PERCENT SIGN */ 0x0025, /* PERCENT SIGN */ 0x0025, /* PER MILLE SIGN */ 0x2030, /* PER TEN THOUSAND SIGN */ 0x2031],
20+
KeyQ: [/* LATIN SMALL LETTER E WITH GRAVE */ 0x00e8, /* LATIN CAPITAL LETTER E WITH GRAVE */ 0x00c8, /* GRAVE ACCENT */ 0x0060, /* DOUBLE LOW-9 QUOTATION MARK */ 0x201e],
21+
KeyW: [/* LATIN SMALL LETTER Y */ 0x0079, /* LATIN CAPITAL LETTER Y */ 0x0059, /* COMMERCIAL AT */ 0x0040, /* DOUBLE LOW-9 QUOTATION MARK */ 0x201e],
22+
KeyE: [/* LATIN SMALL LETTER O */ 0x006f, /* LATIN CAPITAL LETTER O */ 0x004f, /* LATIN SMALL LIGATURE OE */ 0x0153, /* LATIN CAPITAL LIGATURE OE */ 0x0152],
23+
KeyR: [/* LATIN SMALL LETTER W */ 0x0077, /* LATIN CAPITAL LETTER W */ 0x0057, /* LATIN SMALL LETTER U WITH GRAVE */ 0x00f9, /* LATIN CAPITAL LETTER U WITH GRAVE */ 0x00d9],
24+
KeyT: [/* LATIN SMALL LETTER B */ 0x0062, /* LATIN CAPITAL LETTER B */ 0x0042, /* LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ 0x00ab, /* LEFT DOUBLE QUOTATION MARK */ 0x201c],
25+
KeyY: [/* LATIN SMALL LETTER F */ 0x0066, /* LATIN CAPITAL LETTER F */ 0x0046, /* RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ 0x00bb, /* RIGHT DOUBLE QUOTATION MARK */ 0x201d],
26+
KeyU: [/* LATIN SMALL LETTER G */ 0x0067, /* LATIN CAPITAL LETTER G */ 0x0047, /* TILDE */ 0x007e, /* ALMOST EQUAL TO */ 0x2248],
27+
KeyI: [/* LATIN SMALL LETTER H */ 0x0068, /* LATIN CAPITAL LETTER H */ 0x0048, /* NUMBER SIGN */ 0x0023],
28+
KeyO: [/* LATIN SMALL LETTER C */ 0x0063, /* LATIN CAPITAL LETTER C */ 0x0043, /* LATIN SMALL LETTER C WITH CEDILLA */ 0x00e7, /* LATIN CAPITAL LETTER C WITH CEDILLA */ 0x00c7],
29+
KeyP: [/* LATIN SMALL LETTER X */ 0x0078, /* LATIN CAPITAL LETTER X */ 0x0058, /* ASTERISK */ 0x002a, /* MULTIPLICATION SIGN */ 0x00d7],
30+
BracketLeft: [/* LATIN SMALL LETTER Z */ 0x007a, /* LATIN CAPITAL LETTER Z */ 0x005a, /* PERCENT SIGN */ 0x0025, /* PER MILLE SIGN */ 0x2030],
31+
BracketRight: [{ dead: /* COMBINING DIAERESIS */ 0x0308 }, /* NARROW NO-BREAK SPACE */ 0x202f, /* NO-BREAK SPACE */ 0x00a0, /* POUND SIGN */ 0x00a3],
32+
Backslash: [{ dead: /* COMBINING CIRCUMFLEX ACCENT */ 0x0302 }, /* EXCLAMATION MARK */ 0x0021, /* EXCLAMATION MARK */ 0x0021, /* INVERTED EXCLAMATION MARK */ 0x00a1],
33+
KeyA: [/* LATIN SMALL LETTER A */ 0x0061, /* LATIN CAPITAL LETTER A */ 0x0041, /* LESS-THAN SIGN */ 0x003c, /* LESS-THAN OR SLANTED EQUAL TO */ 0x2a7d],
34+
KeyS: [/* LATIN SMALL LETTER I */ 0x0069, /* LATIN CAPITAL LETTER I */ 0x0049, /* GREATER-THAN SIGN */ 0x003e, /* GREATER-THAN OR SLANTED EQUAL TO */ 0x2a7e],
35+
KeyD: [/* LATIN SMALL LETTER E */ 0x0065, /* LATIN CAPITAL LETTER E */ 0x0045, /* LEFT CURLY BRACKET */ 0x007b, /* MODIFIER LETTER SMALL E */ 0x1d49],
36+
KeyF: [/* LATIN SMALL LETTER U */ 0x0075, /* LATIN CAPITAL LETTER U */ 0x0055, /* RIGHT CURLY BRACKET */ 0x007d, /* BLACK SMILING FACE */ 0x263b],
37+
KeyG: [/* FULL STOP */ 0x002e, /* COLON */ 0x003a, /* COLON */ 0x003a, /* MIDDLE DOT */ 0x00b7],
38+
KeyH: [/* LATIN SMALL LETTER V */ 0x0076, /* LATIN CAPITAL LETTER V */ 0x0056, /* VERTICAL LINE */ 0x007c, /* BROKEN BAR */ 0x00a6],
39+
KeyJ: [/* LATIN SMALL LETTER S */ 0x0073, /* LATIN CAPITAL LETTER S */ 0x0053, /* LEFT PARENTHESIS */ 0x0028, /* EM DASH */ 0x2014],
40+
KeyK: [/* LATIN SMALL LETTER N */ 0x006e, /* LATIN CAPITAL LETTER N */ 0x004e, /* RIGHT PARENTHESIS */ 0x0029, /* EN DASH */ 0x2013],
41+
KeyL: [/* LATIN SMALL LETTER T */ 0x0074, /* LATIN CAPITAL LETTER T */ 0x0054, /* LEFT SQUARE BRACKET */ 0x005b, { dead: /* COMBINING DIAERESIS */ 0x0308 }],
42+
Semicolon: [/* LATIN SMALL LETTER R */ 0x0072, /* LATIN CAPITAL LETTER R */ 0x0052, /* RIGHT SQUARE BRACKET */ 0x005d, /* DOUBLE-STRUCK CAPITAL R */ 0x211d],
43+
Quote: [/* LATIN SMALL LETTER Q */ 0x0071, /* LATIN CAPITAL LETTER Q */ 0x0051, /* RIGHT SINGLE QUOTATION MARK */ 0x2019, /* EURO SIGN */ 0x20ac],
44+
IntlBackslash: [/* LATIN SMALL LETTER E WITH CIRCUMFLEX */ 0x00ea, /* LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ 0x00ca, /* CIRCUMFLEX ACCENT */ 0x005e],
45+
KeyZ: [/* LATIN SMALL LETTER E WITH ACUTE */ 0x00e9, /* LATIN CAPITAL LETTER E WITH ACUTE */ 0x00c9, /* SOLIDUS */ 0x002f, /* DIVISION SIGN */ 0x00f7],
46+
KeyX: [/* LATIN SMALL LETTER A WITH GRAVE */ 0x00e0, /* LATIN CAPITAL LETTER A WITH GRAVE */ 0x00c0, /* REVERSE SOLIDUS */ 0x005c, /* LATIN SUBSCRIPT SMALL LETTER I */ 0x1d62],
47+
KeyC: [/* LATIN SMALL LETTER J */ 0x006a, /* LATIN CAPITAL LETTER J */ 0x004a, /* QUOTATION MARK */ 0x0022, /* GREEK SMALL LETTER DELTA */ 0x03b4],
48+
KeyV: [/* COMMA */ 0x002c, /* SEMICOLON */ 0x003b, /* SEMICOLON */ 0x003b, /* RIGHT SINGLE QUOTATION MARK */ 0x2019],
49+
KeyB: [/* LATIN SMALL LETTER K */ 0x006b, /* LATIN CAPITAL LETTER K */ 0x004b, /* HORIZONTAL ELLIPSIS */ 0x2026],
50+
KeyN: [/* LATIN SMALL LETTER M */ 0x006d, /* LATIN CAPITAL LETTER M */ 0x004d, /* AMPERSAND */ 0x0026, /* MINUS SIGN */ 0x2212],
51+
KeyM: [/* LATIN SMALL LETTER D */ 0x0064, /* LATIN CAPITAL LETTER D */ 0x0044, /* DOLLAR SIGN */ 0x0024, /* SECTION SIGN */ 0x00a7],
52+
Comma: [/* LATIN SMALL LETTER L */ 0x006c, /* LATIN CAPITAL LETTER L */ 0x004c, /* EQUALS SIGN */ 0x003d, /* NOT EQUAL TO */ 0x2260],
53+
Period: [/* LATIN SMALL LETTER P */ 0x0070, /* LATIN CAPITAL LETTER P */ 0x0050, /* PLUS SIGN */ 0x002b, /* PLUS-MINUS SIGN */ 0x00b1],
54+
Slash: [/* APOSTROPHE */ 0x0027, /* QUESTION MARK */ 0x003f, /* QUESTION MARK */ 0x003f, /* INVERTED QUESTION MARK */ 0x00bf],
55+
Space: [/* SPACE */ 0x0020],
56+
};

packages/keybr-keyboard/lib/load.ts

+2
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ import { LAYOUT_FR_CA } from "./layout/fr_ca.ts";
5757
import { LAYOUT_FR_CH } from "./layout/fr_ch.ts";
5858
import { LAYOUT_FR_ERGLACE } from "./layout/fr_erglace.ts";
5959
import { LAYOUT_FR_ERGO_L } from "./layout/fr_ergo_l.ts";
60+
import { LAYOUT_FR_ERGOPTI } from "./layout/fr_ergopti.ts";
6061
import { LAYOUT_FR_FR } from "./layout/fr_fr.ts";
6162
import { LAYOUT_FR_OPTIMOT_ERGO } from "./layout/fr_optimot_ergo.ts";
6263
import { LAYOUT_HE_IL } from "./layout/he_il.ts";
@@ -135,6 +136,7 @@ const layouts = new Map<Layout, CharacterDict>([
135136
[Layout.FR_CH, LAYOUT_FR_CH],
136137
[Layout.FR_ERGLACE, LAYOUT_FR_ERGLACE],
137138
[Layout.FR_ERGO_L, LAYOUT_FR_ERGO_L],
139+
[Layout.FR_ERGOPTI, LAYOUT_FR_ERGOPTI],
138140
[Layout.FR_FR, LAYOUT_FR_FR],
139141
[Layout.FR_OPTIMOT_ERGO, LAYOUT_FR_OPTIMOT_ERGO],
140142
[Layout.HE_IL, LAYOUT_HE_IL],

0 commit comments

Comments
 (0)