Skip to content

Commit c27a557

Browse files
committed
feat: turkish language
1 parent 30f07c8 commit c27a557

File tree

13 files changed

+3203
-93
lines changed

13 files changed

+3203
-93
lines changed

packages/keybr-content-words/lib/data/words-tr.json

+3,002
Large diffs are not rendered by default.

packages/keybr-content-words/lib/load.ts

+41-91
Original file line numberDiff line numberDiff line change
@@ -5,130 +5,80 @@ export async function loadWordList(language: Language): Promise<WordList> {
55
switch (language) {
66
case Language.BE:
77
return (
8-
await import(
9-
/* webpackChunkName: "words-be" */
10-
"./data/words-be.json"
11-
)
12-
).default as unknown as WordList;
8+
await import(/* webpackChunkName: "words-be" */ "./data/words-be.json")
9+
).default as WordList;
1310
case Language.CS:
1411
return (
15-
await import(
16-
/* webpackChunkName: "words-cs" */
17-
"./data/words-cs.json"
18-
)
19-
).default as unknown as WordList;
12+
await import(/* webpackChunkName: "words-cs" */ "./data/words-cs.json")
13+
).default as WordList;
2014
case Language.DE:
2115
return (
22-
await import(
23-
/* webpackChunkName: "words-de" */
24-
"./data/words-de.json"
25-
)
26-
).default as unknown as WordList;
16+
await import(/* webpackChunkName: "words-de" */ "./data/words-de.json")
17+
).default as WordList;
2718
case Language.EL:
2819
return (
29-
await import(
30-
/* webpackChunkName: "words-el" */
31-
"./data/words-el.json"
32-
)
33-
).default as unknown as WordList;
20+
await import(/* webpackChunkName: "words-el" */ "./data/words-el.json")
21+
).default as WordList;
3422
case Language.EN:
3523
return (
36-
await import(
37-
/* webpackChunkName: "words-en" */
38-
"./data/words-en.json"
39-
)
40-
).default as unknown as WordList;
24+
await import(/* webpackChunkName: "words-en" */ "./data/words-en.json")
25+
).default as WordList;
4126
case Language.ES:
4227
return (
43-
await import(
44-
/* webpackChunkName: "words-es" */
45-
"./data/words-es.json"
46-
)
47-
).default as unknown as WordList;
28+
await import(/* webpackChunkName: "words-es" */ "./data/words-es.json")
29+
).default as WordList;
4830
case Language.FR:
4931
return (
50-
await import(
51-
/* webpackChunkName: "words-fr" */
52-
"./data/words-fr.json"
53-
)
54-
).default as unknown as WordList;
32+
await import(/* webpackChunkName: "words-fr" */ "./data/words-fr.json")
33+
).default as WordList;
5534
case Language.HE:
5635
return (
57-
await import(
58-
/* webpackChunkName: "words-he" */
59-
"./data/words-he.json"
60-
)
61-
).default as unknown as WordList;
36+
await import(/* webpackChunkName: "words-he" */ "./data/words-he.json")
37+
).default as WordList;
6238
case Language.HU:
6339
return (
64-
await import(
65-
/* webpackChunkName: "words-hu" */
66-
"./data/words-hu.json"
67-
)
68-
).default as unknown as WordList;
40+
await import(/* webpackChunkName: "words-hu" */ "./data/words-hu.json")
41+
).default as WordList;
6942
case Language.IT:
7043
return (
71-
await import(
72-
/* webpackChunkName: "words-it" */
73-
"./data/words-it.json"
74-
)
75-
).default as unknown as WordList;
44+
await import(/* webpackChunkName: "words-it" */ "./data/words-it.json")
45+
).default as WordList;
46+
case Language.NB:
47+
return (
48+
await import(/* webpackChunkName: "words-nb" */ "./data/words-nb.json")
49+
).default as WordList;
7650
case Language.NL:
7751
return (
78-
await import(
79-
/* webpackChunkName: "words-nl" */
80-
"./data/words-nl.json"
81-
)
82-
).default as unknown as WordList;
52+
await import(/* webpackChunkName: "words-nl" */ "./data/words-nl.json")
53+
).default as WordList;
8354
case Language.PL:
8455
return (
85-
await import(
86-
/* webpackChunkName: "words-pl" */
87-
"./data/words-pl.json"
88-
)
89-
).default as unknown as WordList;
56+
await import(/* webpackChunkName: "words-pl" */ "./data/words-pl.json")
57+
).default as WordList;
9058
case Language.PT:
9159
return (
92-
await import(
93-
/* webpackChunkName: "words-pt" */
94-
"./data/words-pt.json"
95-
)
96-
).default as unknown as WordList;
60+
await import(/* webpackChunkName: "words-pt" */ "./data/words-pt.json")
61+
).default as WordList;
9762
case Language.RU:
9863
return (
99-
await import(
100-
/* webpackChunkName: "words-ru" */
101-
"./data/words-ru.json"
102-
)
103-
).default as unknown as WordList;
64+
await import(/* webpackChunkName: "words-ru" */ "./data/words-ru.json")
65+
).default as WordList;
10466
case Language.SL:
10567
return (
106-
await import(
107-
/* webpackChunkName: "words-sl" */
108-
"./data/words-sl.json"
109-
)
110-
).default as unknown as WordList;
68+
await import(/* webpackChunkName: "words-sl" */ "./data/words-sl.json")
69+
).default as WordList;
11170
case Language.SV:
11271
return (
113-
await import(
114-
/* webpackChunkName: "words-sv" */
115-
"./data/words-sv.json"
116-
)
117-
).default as unknown as WordList;
118-
case Language.NB:
72+
await import(/* webpackChunkName: "words-sv" */ "./data/words-sv.json")
73+
).default as WordList;
74+
case Language.TR:
11975
return (
120-
await import(
121-
/* webpackChunkName: "words-nb" */
122-
"./data/words-nb.json"
123-
)
124-
).default as unknown as WordList;
76+
await import(/* webpackChunkName: "words-tr" */ "./data/words-tr.json")
77+
).default as WordList;
12578
case Language.UK:
12679
return (
127-
await import(
128-
/* webpackChunkName: "words-uk" */
129-
"./data/words-uk.json"
130-
)
131-
).default as unknown as WordList;
80+
await import(/* webpackChunkName: "words-uk" */ "./data/words-uk.json")
81+
).default as WordList;
13282
default:
13383
throw new Error();
13484
}

packages/keybr-keyboard-generator/lib/index.ts

+2
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ for (const [output, keymap] of [
6969
["ru_ru-win.ts", convertCldr("cldr-keyboards-43.0/keyboards/windows/ru-t-k0-windows.xml")],
7070
["sl_si-win.ts", convertCldr("cldr-keyboards-43.0/keyboards/windows/sl-t-k0-windows.xml")],
7171
["sv_se-win.ts", convertCldr("cldr-keyboards-43.0/keyboards/windows/sv-t-k0-windows.xml")],
72+
["tr_tr_f-win.ts", convertCldr("cldr-keyboards-43.0/keyboards/windows/tr-t-k0-windows-legacy.xml")],
73+
["tr_tr_q-win.ts", convertCldr("cldr-keyboards-43.0/keyboards/windows/tr-t-k0-windows.xml")],
7274
["uk_ua-win.ts", convertCldr("cldr-keyboards-43.0/keyboards/windows/uk-t-k0-windows.xml")],
7375
] as [string, KeyMap][]) {
7476
const filename = join(__dirname, "../../keybr-keyboard/lib/data/layout", output);

packages/keybr-keyboard/lib/data/layout.ts

+2
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,6 @@ export { LAYOUT_PT_PT_WIN } from "./layout/pt_pt-win.ts";
4141
export { LAYOUT_RU_RU_WIN } from "./layout/ru_ru-win.ts";
4242
export { LAYOUT_SL_SI_WIN } from "./layout/sl_si-win.ts";
4343
export { LAYOUT_SV_SE_WIN } from "./layout/sv_se-win.ts";
44+
export { LAYOUT_TR_TR_F_WIN } from "./layout/tr_tr_f-win.ts";
45+
export { LAYOUT_TR_TR_Q_WIN } from "./layout/tr_tr_q-win.ts";
4446
export { LAYOUT_UK_UA_WIN } from "./layout/uk_ua-win.ts";
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
// Generated file, do not edit.
2+
3+
import { type CodePointDict } from "../../types.ts";
4+
5+
// prettier-ignore
6+
export const LAYOUT_TR_TR_F_WIN: CodePointDict = {
7+
Backquote: [/* + */ 0x002b, /* * */ 0x002a, /* ¬ */ 0x00ac],
8+
Digit1: [/* 1 */ 0x0031, /* ! */ 0x0021, /* ¹ */ 0x00b9, /* ¡ */ 0x00a1],
9+
Digit2: [/* 2 */ 0x0032, /* " */ 0x0022, /* ² */ 0x00b2],
10+
Digit3: [/* 3 */ 0x0033, /* DEAD CIRCUMFLEX ACCENT */ 0x0302, /* # */ 0x0023, /* ³ */ 0x00b3],
11+
Digit4: [/* 4 */ 0x0034, /* $ */ 0x0024, /* ¼ */ 0x00bc, /* ¤ */ 0x00a4],
12+
Digit5: [/* 5 */ 0x0035, /* % */ 0x0025, /* ½ */ 0x00bd],
13+
Digit6: [/* 6 */ 0x0036, /* & */ 0x0026, /* ¾ */ 0x00be],
14+
Digit7: [/* 7 */ 0x0037, /* ' */ 0x0027, /* { */ 0x007b],
15+
Digit8: [/* 8 */ 0x0038, /* ( */ 0x0028, /* [ */ 0x005b],
16+
Digit9: [/* 9 */ 0x0039, /* ) */ 0x0029, /* ] */ 0x005d],
17+
Digit0: [/* 0 */ 0x0030, /* = */ 0x003d, /* } */ 0x007d],
18+
Minus: [/* / */ 0x002f, /* ? */ 0x003f, /* \ */ 0x005c, /* ¿ */ 0x00bf],
19+
Equal: [/* - */ 0x002d, /* _ */ 0x005f, /* | */ 0x007c],
20+
KeyQ: [/* f */ 0x0066, /* F */ 0x0046, /* @ */ 0x0040],
21+
KeyW: [/* g */ 0x0067, /* G */ 0x0047],
22+
KeyE: [/* ğ */ 0x011f, /* Ğ */ 0x011e],
23+
KeyR: [/* ı */ 0x0131, /* I */ 0x0049, /* ¶ */ 0x00b6, /* ® */ 0x00ae],
24+
KeyT: [/* o */ 0x006f, /* O */ 0x004f],
25+
KeyY: [/* d */ 0x0064, /* D */ 0x0044, /* ¥ */ 0x00a5],
26+
KeyU: [/* r */ 0x0072, /* R */ 0x0052],
27+
KeyI: [/* n */ 0x006e, /* N */ 0x004e],
28+
KeyO: [/* h */ 0x0068, /* H */ 0x0048, /* ø */ 0x00f8, /* Ø */ 0x00d8],
29+
KeyP: [/* p */ 0x0070, /* P */ 0x0050, /* £ */ 0x00a3],
30+
BracketLeft: [/* q */ 0x0071, /* Q */ 0x0051, /* DEAD DIAERESIS */ 0x0308],
31+
BracketRight: [/* w */ 0x0077, /* W */ 0x0057, /* DEAD TILDE */ 0x0303],
32+
Backslash: [/* x */ 0x0078, /* X */ 0x0058, /* DEAD GRAVE ACCENT */ 0x0300],
33+
KeyA: [/* u */ 0x0075, /* U */ 0x0055, /* æ */ 0x00e6, /* Æ */ 0x00c6],
34+
KeyS: [/* i */ 0x0069, /* İ */ 0x0130, /* ß */ 0x00df, /* § */ 0x00a7],
35+
KeyD: [/* e */ 0x0065, /* E */ 0x0045, /* € */ 0x20ac],
36+
KeyF: [/* a */ 0x0061, /* A */ 0x0041, /* ª */ 0x00aa],
37+
KeyG: [/* ü */ 0x00fc, /* Ü */ 0x00dc],
38+
KeyH: [/* t */ 0x0074, /* T */ 0x0054, /* ₺ */ 0x20ba],
39+
KeyJ: [/* k */ 0x006b, /* K */ 0x004b],
40+
KeyK: [/* m */ 0x006d, /* M */ 0x004d],
41+
KeyL: [/* l */ 0x006c, /* L */ 0x004c],
42+
Semicolon: [/* y */ 0x0079, /* Y */ 0x0059, /* DEAD ACUTE ACCENT */ 0x0301],
43+
Quote: [/* ş */ 0x015f, /* Ş */ 0x015e],
44+
IntlBackslash: [/* < */ 0x003c, /* > */ 0x003e, /* | */ 0x007c, /* ¦ */ 0x00a6],
45+
KeyZ: [/* j */ 0x006a, /* J */ 0x004a, /* « */ 0x00ab, /* < */ 0x003c],
46+
KeyX: [/* ö */ 0x00f6, /* Ö */ 0x00d6, /* » */ 0x00bb, /* > */ 0x003e],
47+
KeyC: [/* v */ 0x0076, /* V */ 0x0056, /* ¢ */ 0x00a2, /* © */ 0x00a9],
48+
KeyV: [/* c */ 0x0063, /* C */ 0x0043],
49+
KeyB: [/* ç */ 0x00e7, /* Ç */ 0x00c7],
50+
KeyN: [/* z */ 0x007a, /* Z */ 0x005a],
51+
KeyM: [/* s */ 0x0073, /* S */ 0x0053, /* µ */ 0x00b5, /* º */ 0x00ba],
52+
Comma: [/* b */ 0x0062, /* B */ 0x0042, /* × */ 0x00d7],
53+
Period: [/* . */ 0x002e, /* : */ 0x003a, /* ÷ */ 0x00f7],
54+
Slash: [/* , */ 0x002c, /* ; */ 0x003b, /* ­ */ 0x00ad],
55+
Space: [/* SPACE */ 0x0020],
56+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
// Generated file, do not edit.
2+
3+
import { type CodePointDict } from "../../types.ts";
4+
5+
// prettier-ignore
6+
export const LAYOUT_TR_TR_Q_WIN: CodePointDict = {
7+
Backquote: [/* " */ 0x0022, /* é */ 0x00e9, /* < */ 0x003c],
8+
Digit1: [/* 1 */ 0x0031, /* ! */ 0x0021, /* > */ 0x003e],
9+
Digit2: [/* 2 */ 0x0032, /* ' */ 0x0027, /* £ */ 0x00a3],
10+
Digit3: [/* 3 */ 0x0033, /* DEAD CIRCUMFLEX ACCENT */ 0x0302, /* # */ 0x0023],
11+
Digit4: [/* 4 */ 0x0034, /* + */ 0x002b, /* $ */ 0x0024],
12+
Digit5: [/* 5 */ 0x0035, /* % */ 0x0025, /* ½ */ 0x00bd],
13+
Digit6: [/* 6 */ 0x0036, /* & */ 0x0026],
14+
Digit7: [/* 7 */ 0x0037, /* / */ 0x002f, /* { */ 0x007b],
15+
Digit8: [/* 8 */ 0x0038, /* ( */ 0x0028, /* [ */ 0x005b],
16+
Digit9: [/* 9 */ 0x0039, /* ) */ 0x0029, /* ] */ 0x005d],
17+
Digit0: [/* 0 */ 0x0030, /* = */ 0x003d, /* } */ 0x007d],
18+
Minus: [/* * */ 0x002a, /* ? */ 0x003f, /* \ */ 0x005c],
19+
Equal: [/* - */ 0x002d, /* _ */ 0x005f, /* | */ 0x007c],
20+
KeyQ: [/* q */ 0x0071, /* Q */ 0x0051, /* @ */ 0x0040],
21+
KeyW: [/* w */ 0x0077, /* W */ 0x0057],
22+
KeyE: [/* e */ 0x0065, /* E */ 0x0045, /* € */ 0x20ac],
23+
KeyR: [/* r */ 0x0072, /* R */ 0x0052],
24+
KeyT: [/* t */ 0x0074, /* T */ 0x0054, /* ₺ */ 0x20ba],
25+
KeyY: [/* y */ 0x0079, /* Y */ 0x0059],
26+
KeyU: [/* u */ 0x0075, /* U */ 0x0055],
27+
KeyI: [/* ı */ 0x0131, /* I */ 0x0049, /* i */ 0x0069, /* İ */ 0x0130],
28+
KeyO: [/* o */ 0x006f, /* O */ 0x004f],
29+
KeyP: [/* p */ 0x0070, /* P */ 0x0050],
30+
BracketLeft: [/* ğ */ 0x011f, /* Ğ */ 0x011e, /* DEAD DIAERESIS */ 0x0308],
31+
BracketRight: [/* ü */ 0x00fc, /* Ü */ 0x00dc, /* DEAD TILDE */ 0x0303],
32+
Backslash: [/* , */ 0x002c, /* ; */ 0x003b, /* DEAD GRAVE ACCENT */ 0x0300],
33+
KeyA: [/* a */ 0x0061, /* A */ 0x0041, /* æ */ 0x00e6, /* Æ */ 0x00c6],
34+
KeyS: [/* s */ 0x0073, /* S */ 0x0053, /* ß */ 0x00df],
35+
KeyD: [/* d */ 0x0064, /* D */ 0x0044],
36+
KeyF: [/* f */ 0x0066, /* F */ 0x0046],
37+
KeyG: [/* g */ 0x0067, /* G */ 0x0047],
38+
KeyH: [/* h */ 0x0068, /* H */ 0x0048],
39+
KeyJ: [/* j */ 0x006a, /* J */ 0x004a],
40+
KeyK: [/* k */ 0x006b, /* K */ 0x004b],
41+
KeyL: [/* l */ 0x006c, /* L */ 0x004c],
42+
Semicolon: [/* ş */ 0x015f, /* Ş */ 0x015e, /* DEAD ACUTE ACCENT */ 0x0301],
43+
Quote: [/* i */ 0x0069, /* İ */ 0x0130],
44+
IntlBackslash: [/* < */ 0x003c, /* > */ 0x003e, /* | */ 0x007c],
45+
KeyZ: [/* z */ 0x007a, /* Z */ 0x005a],
46+
KeyX: [/* x */ 0x0078, /* X */ 0x0058],
47+
KeyC: [/* c */ 0x0063, /* C */ 0x0043],
48+
KeyV: [/* v */ 0x0076, /* V */ 0x0056],
49+
KeyB: [/* b */ 0x0062, /* B */ 0x0042],
50+
KeyN: [/* n */ 0x006e, /* N */ 0x004e],
51+
KeyM: [/* m */ 0x006d, /* M */ 0x004d],
52+
Comma: [/* ö */ 0x00f6, /* Ö */ 0x00d6],
53+
Period: [/* ç */ 0x00e7, /* Ç */ 0x00c7],
54+
Slash: [/* . */ 0x002e, /* : */ 0x003a],
55+
Space: [/* SPACE */ 0x0020],
56+
};

packages/keybr-keyboard/lib/language.ts

+2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export class Language implements EnumItem {
1818
static readonly RU = new Language("ru", "cyrillic", "ltr");
1919
static readonly SL = new Language("sl", "latin", "ltr");
2020
static readonly SV = new Language("sv", "latin", "ltr");
21+
static readonly TR = new Language("tr", "latin", "ltr");
2122
static readonly UK = new Language("uk", "cyrillic", "ltr");
2223

2324
static readonly ALL = new Enum<Language>(
@@ -38,6 +39,7 @@ export class Language implements EnumItem {
3839
Language.RU,
3940
Language.SL,
4041
Language.SV,
42+
Language.TR,
4143
Language.UK,
4244
);
4345

packages/keybr-keyboard/lib/layout.ts

+32
Original file line numberDiff line numberDiff line change
@@ -590,6 +590,36 @@ export class Layout implements XEnumItem {
590590
Geometry.MATRIX,
591591
),
592592
);
593+
static readonly TR_TR_Q = new Layout(
594+
/* id= */ "tr-tr-q",
595+
/* xid= */ 0x89,
596+
/* name= */ "{TR} Q",
597+
/* family= */ "qwerty",
598+
/* language= */ Language.TR,
599+
/* emulate= */ false,
600+
/* geometries= */ new Enum(
601+
Geometry.STANDARD_102,
602+
Geometry.STANDARD_102_FULL,
603+
Geometry.STANDARD_101,
604+
Geometry.STANDARD_101_FULL,
605+
Geometry.MATRIX,
606+
),
607+
);
608+
static readonly TR_TR_F = new Layout(
609+
/* id= */ "tr-tr-f",
610+
/* xid= */ 0x8a,
611+
/* name= */ "{TR} F",
612+
/* family= */ "tr-tr-f",
613+
/* language= */ Language.TR,
614+
/* emulate= */ false,
615+
/* geometries= */ new Enum(
616+
Geometry.STANDARD_102,
617+
Geometry.STANDARD_102_FULL,
618+
Geometry.STANDARD_101,
619+
Geometry.STANDARD_101_FULL,
620+
Geometry.MATRIX,
621+
),
622+
);
593623

594624
static readonly ALL = new XEnum<Layout>(
595625
Layout.EN_US,
@@ -632,6 +662,8 @@ export class Layout implements XEnumItem {
632662
Layout.SV_SE,
633663
Layout.UK_UA,
634664
Layout.RU_RU,
665+
Layout.TR_TR_Q,
666+
Layout.TR_TR_F,
635667
);
636668

637669
static findLayout(localeId: string): Layout | null {

packages/keybr-keyboard/lib/load.ts

+4
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ import {
5151
LAYOUT_RU_RU_WIN,
5252
LAYOUT_SL_SI_WIN,
5353
LAYOUT_SV_SE_WIN,
54+
LAYOUT_TR_TR_F_WIN,
55+
LAYOUT_TR_TR_Q_WIN,
5456
LAYOUT_UK_UA_WIN,
5557
} from "./data/layout.ts";
5658
import { Geometry } from "./geometry.ts";
@@ -99,6 +101,8 @@ const layoutDict = new Map<Layout, CodePointDict>([
99101
[Layout.RU_RU, LAYOUT_RU_RU_WIN],
100102
[Layout.SL_SI, LAYOUT_SL_SI_WIN],
101103
[Layout.SV_SE, LAYOUT_SV_SE_WIN],
104+
[Layout.TR_TR_F, LAYOUT_TR_TR_F_WIN],
105+
[Layout.TR_TR_Q, LAYOUT_TR_TR_Q_WIN],
102106
[Layout.UK_UA, LAYOUT_UK_UA_WIN],
103107
]);
104108

0 commit comments

Comments
 (0)