From ecdec19505915fe35fa7bc4fbf06e6e2b5706e62 Mon Sep 17 00:00:00 2001 From: Saamkhaih Kyakya <70475761+hiohlan@users.noreply.github.com> Date: Thu, 28 Oct 2021 19:34:05 +0700 Subject: [PATCH] feat: added support for .kcm, fix: beautified genXkb, removed BOM, klc ctrl layer. (#4) --- README.md | 1 + cli.ts | 35 +- generateKcm.ts | 167 +++++ generateKlc.ts | 225 +++--- generateXkb.ts | 20 +- input/Manoonchai-ColemakDH-Mod.json | 6 +- input/Manoonchai-WittNV.json | 4 +- input/Manoonchai-v0.2.json | 4 +- input/Manoonchai.json | 4 +- input/Manoonchai_Laos.json | 65 ++ main.ts | 7 +- output/Manoonchai-ColemakDH-Mod.klc | Bin 2764 -> 0 bytes .../Manoonchai-ColemakDH-Mod.kcm | 506 +++++++++++++ .../Manoonchai-ColemakDH-Mod.keylayout | 2 +- .../Manoonchai-ColemakDH-Mod_xkb | 8 +- output/Manoonchai-ColemakDH-Mod/Mnc-DH.klc | Bin 0 -> 3866 bytes output/Manoonchai-WittNV.klc | Bin 2776 -> 0 bytes .../Manoonchai-WittNV/Manoonchai-WittNV.kcm | 507 +++++++++++++ .../Manoonchai-WittNV.keylayout | 0 .../Manoonchai-WittNV_xkb | 8 +- output/Manoonchai-WittNV/WittNV.klc | Bin 0 -> 3870 bytes output/Manoonchai-v0.2.klc | Bin 2800 -> 0 bytes output/Manoonchai-v0.2/Manoonchai-v0.2.kcm | 492 +++++++++++++ .../Manoonchai-v0.2.keylayout | 0 .../{ => Manoonchai-v0.2}/Manoonchai-v0.2_xkb | 8 +- output/Manoonchai-v0.2/Mnc02.klc | Bin 0 -> 3804 bytes output/Manoonchai.klc | Bin 2794 -> 0 bytes output/Manoonchai/Manoonchai.kcm | 492 +++++++++++++ output/{ => Manoonchai}/Manoonchai.keylayout | 0 output/{ => Manoonchai}/Manoonchai_xkb | 8 +- output/Manoonchai/ThaiMnc.klc | Bin 0 -> 3798 bytes output/Manoonchai_Lao/LaoMnc.klc | Bin 0 -> 3868 bytes output/Manoonchai_Lao/Manoonchai_Lao.kcm | 506 +++++++++++++ .../Manoonchai_Lao/Manoonchai_Lao.keylayout | 683 ++++++++++++++++++ output/Manoonchai_Lao/Manoonchai_Lao_xkb | 60 ++ test/main.test.ts | 24 +- 36 files changed, 3712 insertions(+), 130 deletions(-) create mode 100644 generateKcm.ts create mode 100644 input/Manoonchai_Laos.json delete mode 100644 output/Manoonchai-ColemakDH-Mod.klc create mode 100644 output/Manoonchai-ColemakDH-Mod/Manoonchai-ColemakDH-Mod.kcm rename output/{ => Manoonchai-ColemakDH-Mod}/Manoonchai-ColemakDH-Mod.keylayout (99%) rename output/{ => Manoonchai-ColemakDH-Mod}/Manoonchai-ColemakDH-Mod_xkb (93%) create mode 100644 output/Manoonchai-ColemakDH-Mod/Mnc-DH.klc delete mode 100644 output/Manoonchai-WittNV.klc create mode 100644 output/Manoonchai-WittNV/Manoonchai-WittNV.kcm rename output/{ => Manoonchai-WittNV}/Manoonchai-WittNV.keylayout (100%) rename output/{ => Manoonchai-WittNV}/Manoonchai-WittNV_xkb (93%) create mode 100644 output/Manoonchai-WittNV/WittNV.klc delete mode 100644 output/Manoonchai-v0.2.klc create mode 100644 output/Manoonchai-v0.2/Manoonchai-v0.2.kcm rename output/{ => Manoonchai-v0.2}/Manoonchai-v0.2.keylayout (100%) rename output/{ => Manoonchai-v0.2}/Manoonchai-v0.2_xkb (93%) create mode 100644 output/Manoonchai-v0.2/Mnc02.klc delete mode 100644 output/Manoonchai.klc create mode 100644 output/Manoonchai/Manoonchai.kcm rename output/{ => Manoonchai}/Manoonchai.keylayout (100%) rename output/{ => Manoonchai}/Manoonchai_xkb (93%) create mode 100644 output/Manoonchai/ThaiMnc.klc create mode 100644 output/Manoonchai_Lao/LaoMnc.klc create mode 100644 output/Manoonchai_Lao/Manoonchai_Lao.kcm create mode 100644 output/Manoonchai_Lao/Manoonchai_Lao.keylayout create mode 100644 output/Manoonchai_Lao/Manoonchai_Lao_xkb diff --git a/README.md b/README.md index de722d3..ed91bd3 100644 --- a/README.md +++ b/README.md @@ -10,4 +10,5 @@ Modify, and generate keyboard layout from single JSON file. Built with TypeScrip - Generate layout files - `.keylayout` (macOS) - `.klc` (Windows) + - `.kcm` (Android Physical keyboard) - XKB (Linux) diff --git a/cli.ts b/cli.ts index 8c920c7..6ce0887 100644 --- a/cli.ts +++ b/cli.ts @@ -4,6 +4,7 @@ import path from "path" import { generateKeylayout } from "./generateKeylayout" import { generateKlc } from "./generateKlc" import { generateXkb } from "./generateXkb" +import { generateKcm } from "./generateKcm" import { fixUnicode } from "./utils" // eslint-disable-next-line @typescript-eslint/no-var-requires @@ -31,7 +32,11 @@ const choices = filenames.map((filename) => ({ try { const keylayoutXml = await generateKeylayout(jsonInput) const layoutName = response.input.split(".").slice(0, -1).join(".") - const outputFilename = `output/${layoutName}.keylayout` + const dir = `output/${layoutName}` + if (!fs.existsSync(dir)){ + fs.mkdirSync(dir); + } + const outputFilename = `output/${layoutName}/${layoutName}.keylayout` fs.writeFileSync(outputFilename, keylayoutXml) fixUnicode(outputFilename) @@ -45,7 +50,11 @@ const choices = filenames.map((filename) => ({ // Klc try { const layoutName = response.input.split(".").slice(0, -1).join(".") - const outputFilename = `output/${layoutName}.klc` + const dir = `output/${layoutName}` + if (!fs.existsSync(dir)){ + fs.mkdirSync(dir); + } + const outputFilename = `output/${layoutName}/`+jsonInput.os.windows.installerName+`.klc` await generateKlc(jsonInput, outputFilename) console.log(`Output : ${outputFilename}`) @@ -57,7 +66,11 @@ const choices = filenames.map((filename) => ({ // Xkb try { const layoutName = response.input.split(".").slice(0, -1).join(".") - const outputFilename = `output/${layoutName}_xkb` + const dir = `output/${layoutName}` + if (!fs.existsSync(dir)){ + fs.mkdirSync(dir); + } + const outputFilename = `output/${layoutName}/${layoutName}_xkb` await generateXkb(jsonInput, outputFilename) console.log(`Output : ${outputFilename}`) @@ -65,4 +78,20 @@ const choices = filenames.map((filename) => ({ console.error(e) process.exit(1) } + + // Kmc + try { + const layoutName = response.input.split(".").slice(0, -1).join(".") + const dir = `output/${layoutName}` + if (!fs.existsSync(dir)){ + fs.mkdirSync(dir); + } + const outputFilename = `output/${layoutName}/${layoutName}.kcm` + await generateKcm(jsonInput, outputFilename) + + console.log(`Output : ${outputFilename}`) + } catch (e) { + console.error(e) + process.exit(1) + } })() diff --git a/generateKcm.ts b/generateKcm.ts new file mode 100644 index 0000000..c84fba4 --- /dev/null +++ b/generateKcm.ts @@ -0,0 +1,167 @@ +import { plainToClass } from "class-transformer" +import { validate } from "class-validator" +import fs from "fs" +import { Layout, WindowsAttributes } from "./main" + +export async function generateKcm( + content: Record, + outputPath: string +): Promise { + const layout = plainToClass(Layout, content) + const errors = await validate(layout) + + if (errors.length) { + throw new Error(errors.map((e) => e.toString()).join(", ")) + } + + const windowsErrors = await validate( + plainToClass(WindowsAttributes, layout.os.windows) + ) + + if (windowsErrors.length) { + throw new Error(windowsErrors.map((e) => e.toString()).join(", ")) + } + + function toHex(str: string) { + var hex, i; + var result = ""; + for (i=0; i + { + const extensions = "\n " + +((layout.keys[key][0])?("label: '"+(toHex(layout.keys[key][0]))+"'\n base: '"+(toHex(layout.keys[key][0]))+"'\n "):"") + +((layout.keys[key][1])?("shift: '"+(toHex(layout.keys[key][1]))+"'\n capslock: '"+(toHex(layout.keys[key][1]))+"'\n "):"") + +((layout.keys[key][0])?("capslock+shift: '"+(toHex(layout.keys[key][0]))+"'\n "):"") + +((layout.keys[key][3])?("ralt: '"+(toHex(layout.keys[key][3]))+"'\n "):"") + +((layout.keys[key][5])?("ralt+shift: '"+(toHex(layout.keys[key][5]))+"'\n "):"") + + "}\n" + + layoutLines.push([value,...extensions].join("")) + }) + + fs.writeFileSync( + outputPath, + //"\ufeff" + + [ + lines.join("\n"), + layoutLines.join("\n"), + ].join("\n\n"), + { + encoding: "utf8", + } + ) +} diff --git a/generateKlc.ts b/generateKlc.ts index 80693c4..f47035f 100644 --- a/generateKlc.ts +++ b/generateKlc.ts @@ -22,75 +22,128 @@ export async function generateKlc( throw new Error(windowsErrors.map((e) => e.toString()).join(", ")) } - const klcLocales = { + const klcLocales: any = { Thai: "th-TH", + Lao: "lo-LA", } - - const klcShiftStates = { - Base: 0, - Shift: 1, - Ctrl: 2, - "Shift+Ctrl": 3, - Alt: 4, // Layer number 4 is not supported in KLC - "Shift+Alt": 5, - "Alt+Ctrl": 6, - "Shift+Alt+Ctrl": 7, - // From macOS config - Command: 4, // Layer number 4 is not supported in KLC - AltGr: 6, - ShiftAltGr: 7, - Option: 7, - Control: 2, + + function toHex(str: string) { + let hex, i; + let result = ""; + if(str !== null && str !== undefined){ + for (i = 0; i < str.length; i++) { + hex = str.charCodeAt(i).toString(16); + result += ("0000" + hex).slice(-4); + } + return result; + } + else{ + return false; + } } + const toVK: any = { + "1": "1", + "2": "2", + "3": "3", + "4": "4", + "5": "5", + "6": "6", + "7": "7", + "8": "8", + "9": "9", + "0": "0", + "-": "OEM_MINUS", + "=": "OEM_PLUS", + q: "Q", + w: "W", + e: "E", + r: "R", + t: "T", + y: "Y", + u: "U", + i: "I", + o: "O", + p: "P", + "[": "OEM_4", + "]": "OEM_6", + a: "A", + s: "S", + d: "D", + f: "F", + g: "G", + h: "H", + j: "J", + k: "K", + l: "L", + ";": "OEM_1", + "'": "OEM_7", + "`": "OEM_3", + "\\": "OEM_5", + z: "Z", + x: "X", + c: "C", + v: "V", + b: "B", + n: "N", + m: "M", + ",": "OEM_COMMA", + ".": "OEM_PERIOD", + "/": "OEM_2", + " ": "SPACE", + "KPDL": "DECIMAL", + } + const klfDefaultLayout = { - "1": "02\t1", - "2": "03\t2", - "3": "04\t3", - "4": "05\t4", - "5": "06\t5", - "6": "07\t6", - "7": "08\t7", - "8": "09\t8", - "9": "0a\t9", - "0": "0b\t0", - "-": "0c\tOEM_MINUS", - "=": "0d\tOEM_PLUS", - q: "10\tQ", - w: "11\tW", - e: "12\tE", - r: "13\tR", - t: "14\tT", - y: "15\tY", - u: "16\tU", - i: "17\tI", - o: "18\tO", - p: "19\tP", - "[": "1a\tOEM_4", - "]": "1b\tOEM_6", - a: "1e\tA", - s: "1f\tS", - d: "20\tD", - f: "21\tF", - g: "22\tG", - h: "23\tH", - j: "24\tJ", - k: "25\tK", - l: "26\tL", - ";": "27\tOEM_1", - "'": "28\tOEM_7", - "`": "29\tOEM_3", - "\\": "2b\tOEM_5", - z: "2c\tZ", - x: "2d\tX", - c: "2e\tC", - v: "2f\tV", - b: "30\tB", - n: "31\tN", - m: "32\tM", - ",": "33\tOEM_COMMA", - ".": "34\tOEM_PERIOD", - "/": "35\tOEM_2", + "1": "02", + "2": "03", + "3": "04", + "4": "05", + "5": "06", + "6": "07", + "7": "08", + "8": "09", + "9": "0a", + "0": "0b", + "-": "0c", + "=": "0d", + q: "10", + w: "11", + e: "12", + r: "13", + t: "14", + y: "15", + u: "16", + i: "17", + o: "18", + p: "19", + "[": "1a", + "]": "1b", + a: "1e", + s: "1f", + d: "20", + f: "21", + g: "22", + h: "23", + j: "24", + k: "25", + l: "26", + ";": "27", + "'": "28", + "`": "29", + "\\": "2b", + z: "2c", + x: "2d", + c: "2e", + v: "2f", + b: "30", + n: "31", + m: "32", + ",": "33", + ".": "34", + "/": "35", + " ": "39", + "KPDL": "53", } const lines = [ @@ -103,36 +156,30 @@ export async function generateKlc( ] const shiftStateLines: Array = [] - - layout.layers.forEach((layer, idx) => { - if (layer in klcShiftStates) { - // Filter out layer 4 (Command) - if (klcShiftStates[layer] === 4) { - layout.keys = Object.fromEntries( - Object.entries(layout.keys).map(([key, keys]) => { - keys.splice(idx, 1) - return [key, keys] - }) - ) - } else { - shiftStateLines.push( - `${klcShiftStates[layer]}\t// Column ${idx + 4} : ${layer}` - ) - } - } else { - throw new Error("Layer not valid") - } - }) + + shiftStateLines.push(`0\t//Column 4 : Base`) + shiftStateLines.push(`1\t//Column 5 : Shft`) + shiftStateLines.push(`2\t//Column 6 : Ctrl`) + shiftStateLines.push(`6\t//Column 7 : Ctrl Alt`) + shiftStateLines.push(`7\t//Column 8 : Shft Ctrl Alt`) shiftStateLines.unshift("SHIFTSTATE", "") + + const layoutLines = ["LAYOUT\t\t;an extra '@' at the end is a dead key\r\n"] - const layoutLines = ["LAYOUT"] + layoutLines.push(`//SC\tVK_\tCap\t0\t1\t2\t6\t7`) + layoutLines.push(`//--\t----\t----\t----\t----\t----\t----\t----\r\n`) Object.entries(klfDefaultLayout).forEach(([key, value]) => { - const extensions = layout.layers.map((_, idx) => { - return layout.keys[key][idx] || "-1" - }) - layoutLines.push([value, "0", ...extensions].join("\t")) + const extensions = "\t" + (toVK[(layout.keys[key][4])] || "-1") + + "\t0" + + "\t" + (toHex(layout.keys[key][0]) || "-1") + + "\t" + (toHex(layout.keys[key][1]) || "-1") + + "\t-1" + + "\t" + (toHex(layout.keys[key][3]) || "-1") + + "\t" + (toHex(layout.keys[key][5]) || "-1") + + layoutLines.push([value, ...extensions].join("")) }) fs.writeFileSync( diff --git a/generateXkb.ts b/generateXkb.ts index c102948..2fb29c5 100644 --- a/generateXkb.ts +++ b/generateXkb.ts @@ -33,8 +33,6 @@ export async function generateXkb( return result; } - - const klfDefaultLayout = { "1": "key { [", "2": "key { [", @@ -83,34 +81,34 @@ export async function generateXkb( ",": "key { [", ".": "key { [", "/": "key { [", + " ": "key { [", + "KPDL": "key { [", } const lines = [ `partial alphanumeric_keys`, `xkb_symbols "${layout.os.windows.installerName}" {`, `\n // COPYRIGHT "${layout.license}"`, - `\n name[Group1]= "${layout.name} v${layout.version}";`, + `\n name[Group1]= "${layout.language} (${layout.name} v${layout.version})";`, ] const layoutLines = [""] Object.entries(klfDefaultLayout).forEach(([key, value]) => { -// const extensions = layout.layers.map((_, idx) => { -// return (toHex(layout.keys[key][idx]) || "voidsymbol") + ((idx < 3) ? "," : "") -// }) - const extensions = (toHex(layout.keys[key][0]) || "voidsymbol") + "," + (toHex(layout.keys[key][1]) || "voidsymbol") - + "," + (toHex(layout.keys[key][3]) || "voidsymbol")+ "," + (toHex(layout.keys[key][5]) || "voidsymbol") + "] };" + const extensions = (toHex(layout.keys[key][0]) || "voidsymbol") + + "," + (toHex(layout.keys[key][1]) || "voidsymbol") + + "," + (toHex(layout.keys[key][3]) || "voidsymbol") + + "," + (toHex(layout.keys[key][5]) || "voidsymbol") + "] };" - //extensions.push("] };") layoutLines.push([value, ...extensions].join("")) }) fs.writeFileSync( outputPath, - "\ufeff" + + //"\ufeff" + [ lines.join("\n"), layoutLines.join("\n "), - " include \"level3(ralt_switch)\"\n};", + " include \"level3(ralt_switch)\"\n};\n", ].join("\n\n"), { encoding: "utf8", diff --git a/input/Manoonchai-ColemakDH-Mod.json b/input/Manoonchai-ColemakDH-Mod.json index 3d2c6ac..e436609 100644 --- a/input/Manoonchai-ColemakDH-Mod.json +++ b/input/Manoonchai-ColemakDH-Mod.json @@ -1,5 +1,5 @@ { - "name": "Manoonchai", + "name": "ManoonchaiColemak", "version": "1.0", "language": "Thai", "layers": ["Base", "Shift", "Command", "AltGr", "Control", "ShiftAltGr"], @@ -58,6 +58,8 @@ "m": ["ี", "์", "h", "๎", "h", ""], ",": ["ด", "ศ", ",", ",", ",", "<"], ".": ["ะ", "ฮ", ".", ".", ".", ">"], - "/": ["ู", "?", "/", "/", "/", "?"] + "/": ["ู", "?", "/", "/", "/", "?"], + " ": [" ", " ", " ", " ", " ", " "], + "KPDL": [".", ",", "KPDL", ".", "KPDL", "."] } } diff --git a/input/Manoonchai-WittNV.json b/input/Manoonchai-WittNV.json index 425aac8..cd8d1f1 100644 --- a/input/Manoonchai-WittNV.json +++ b/input/Manoonchai-WittNV.json @@ -58,6 +58,8 @@ "m": ["ี", "์", "h", "๎", "h", ""], ",": ["ด", "ศ", ",", ",", ",", "<"], ".": ["ะ", "ฮ", ".", ".", ".", ">"], - "/": ["ู", "?", "/", "/", "/", "?"] + "/": ["ู", "?", "/", "/", "/", "?"], + " ": [" ", " ", " ", " ", " ", " "], + "KPDL": [".", ",", "KPDL", ".", "KPDL", "."] } } diff --git a/input/Manoonchai-v0.2.json b/input/Manoonchai-v0.2.json index 9ab8fd4..b6a6dcd 100644 --- a/input/Manoonchai-v0.2.json +++ b/input/Manoonchai-v0.2.json @@ -58,6 +58,8 @@ "m": ["ี", "ณ", "m", "๎", "m", ""], ",": ["ด", "ธ", ",", ",", ",", "<"], ".": ["ะ", "ฏ", ".", ".", ".", ">"], - "/": ["ุ", "฿", "/", "/", "/", "?"] + "/": ["ุ", "฿", "/", "/", "/", "?"], + " ": [" ", " ", " ", " ", " ", " "], + "KPDL": [".", ",", "KPDL", ".", "KPDL", "."] } } diff --git a/input/Manoonchai.json b/input/Manoonchai.json index 32efee6..3365594 100644 --- a/input/Manoonchai.json +++ b/input/Manoonchai.json @@ -58,6 +58,8 @@ "m": ["ี", "์", "m", "๎", "m", ""], ",": ["ด", "ศ", ",", ",", ",", "<"], ".": ["ะ", "ฮ", ".", ".", ".", ">"], - "/": ["ู", "?", "/", "/", "/", "?"] + "/": ["ู", "?", "/", "/", "/", "?"], + " ": [" ", " ", " ", " ", " ", " "], + "KPDL": [".", ",", "KPDL", ".", "KPDL", "."] } } diff --git a/input/Manoonchai_Laos.json b/input/Manoonchai_Laos.json new file mode 100644 index 0000000..834342b --- /dev/null +++ b/input/Manoonchai_Laos.json @@ -0,0 +1,65 @@ +{ + "name": "Manoonchai Laos Pali", + "version": "1.0", + "language": "Laos", + "layers": ["Base", "Shift", "Command", "AltGr", "Control", "ShiftAltGr"], + "license": "MIT", + "os": { + "windows": { + "installerName": "LaosMnc", + "company": "Manoonchai", + "localeId": "00000454" + } + }, + "keys": { + "`": ["`", "~", "`", "`", "`", ""], + "1": ["1", "!", "1", "໑", "1", "!"], + "2": ["2", "@", "2", "໒", "2", "@"], + "3": ["3", "#", "3", "໓", "3", "#"], + "4": ["4", "$", "4", "໔", "4", "$"], + "5": ["5", "%", "5", "໕", "5", "%"], + "6": ["6", ",", "6", "໖", "6", "^"], + "7": ["7", "&", "7", "໗", "7", "&"], + "8": ["8", ".", "8", "໘", "8", "*"], + "9": ["9", "(", "9", "໙", "9", ""], + "0": ["0", ")", "0", "໐", "0", ""], + "-": ["-", "_", "-", "÷", "-", ""], + "=": ["=", "+", "=", "×", "=", ""], + "q": ["ໃ", "ຒ", "q", "", "q", ""], + "w": ["ຕ", "ຏ", "w", "x", "w", ""], + "e": ["ຫ", "ຢ", "e", "໡", "e", ""], + "r": ["ລ", "ຎ", "r", "໢", "r", ""], + "t": ["ສ", "ຟ", "t", "", "t", ""], + "y": ["ປ", "ຉ", "y", "", "y", ""], + "u": ["ັ", "ຶ", "u", "຺", "u", ""], + "i": ["ກ", "ຮ", "i", "ໞ", "i", ""], + "o": ["ິ", "ຽ", "o", "", "o", ""], + "p": ["ບ", "ຘ", "p", "", "p", ""], + "[": ["ົ", "ຆ", "[", "[", "[", "{"], + "]": ["ຬ", "ຑ", "]", "]", "]", "}"], + "\\": ["ໆ", "ຯ", "\\", "\\", "\\", "|"], + "a": ["ງ", "ຩ", "a", "໠", "a", ""], + "s": ["ເ", "ຖ", "s", "◌", "s", ""], + "d": ["ຣ", "ແ", "d", "₭", "d", ""], + "f": ["ນ", "ຊ", "f", "ໜ", "f", ""], + "g": ["ມ", "ພ", "g", "ໝ", "g", ""], + "h": ["ອ", "ໍ", "h", "", "h", ""], + "j": ["າ", "ຳ", "j", "", "j", ""], + "k": ["່", "ຂ", "k", "຃", "k", ""], + "l": ["້", "ໂ", "l", "໣", "l", ""], + ";": ["ວ", "ຠ", ";", ";", ";", ":"], + "'": ["ື", "\"", "'", "'", "'", "\""], + "z": ["ຸ", "ຼ", "z", "຦", "z", ""], + "x": ["ໄ", "ຝ", "x", "຤", "x", ""], + "c": ["ທ", "ຜ", "c", "ຌ", "c", ""], + "v": ["ຍ", "ຓ", "v", "ໟ", "v", ""], + "b": ["ຈ", "໊", "b", "", "b", ""], + "n": ["ຄ", "໋", "n", "຅", "n", ""], + "m": ["ີ", "໌", "m", "໎", "m", ""], + ",": ["ດ", "ຨ", ",", ",", ",", "<"], + ".": ["ະ", "ຐ", ".", ".", ".", ">"], + "/": ["ູ", "?", "/", "/", "/", "?"], + " ": [" ", "\u200B", " ", " ", " ", " "], + "KPDL": [",", ".", "KPDL", ",", "KPDL", ","] + } +} diff --git a/main.ts b/main.ts index 70886d5..c9f0c94 100644 --- a/main.ts +++ b/main.ts @@ -31,8 +31,11 @@ export class Layout { version: string @IsString() - @IsIn(["Thai"]) - language: "Thai" + language: string + + //@IsString() + //@IsIn(["Thai"]) + //language: "Thai" @ArrayNotEmpty() @IsIn( diff --git a/output/Manoonchai-ColemakDH-Mod.klc b/output/Manoonchai-ColemakDH-Mod.klc deleted file mode 100644 index 083232f2ca30c3ef95919b4f7ffa7b6bdf087cf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2764 zcmZ{mX?s&e7(hpHp(u!g`&J5N4{f^8#RbwmG$El$3k4M`f>fc^QgHVd`rV)6H}#yG zxg;6WC(r4;Gdb_f+_~?)&A}wqm9wxv9KK>U&m!jxas5!MU&yZ9 zzb)6jdKS92$KV>Saq5mTrmt&z8CGzOQ+JFpeO=q*(7-iL-EqeBb!|^T6W2I(y%YMn zwu7*WYn-~Cs=lu67qEtFoVt^Y>Fe5_gzLD*sXN7(zOL)M`%bzI}r zy~9|Idaj1sP^S7>A_laF(6D z20su>>RJ`oLHBjMSKvotNnNYLcY^LYyqDk}v81k5u>!h-cn9HoVo6=Aq6xZZ@je7A zUQ*YpSO?vA@%rFfVo6=AVik0Yco$(B9`tZ07%NBj8JxG^F?~trwJK`S9m6{eKhu}g zwJPe-eFyIld_-TSLEq=L$eXNvzdaFmy@>q++#;4=p`GFRn^@AER^_$cC+3?ofj>ZdDq?J&RW*{m zmGV_QAv3;&KVoZ~uF_doUcEU(tnxB^Ml8QUdllbvH$ig}>ja#HU!v9N`d+&c-8r21 z;V1f%?!+^mjqaOx3vd%$FLkZgwdfAu9DyhFrQ03N_Bj*X{diZveM#ziZ~WEbwLOQo z49~-NJzVRx8r^Z63S5QzJzVcberNneSLKsGn@7nx4d-#>s3u*U!om~7<&q?CjK6r;~DVxtNs4~^qKH4 diff --git a/output/Manoonchai-ColemakDH-Mod/Manoonchai-ColemakDH-Mod.kcm b/output/Manoonchai-ColemakDH-Mod/Manoonchai-ColemakDH-Mod.kcm new file mode 100644 index 0000000..32a336d --- /dev/null +++ b/output/Manoonchai-ColemakDH-Mod/Manoonchai-ColemakDH-Mod.kcm @@ -0,0 +1,506 @@ +# License: MIT + +# Thai ManoonchaiColemak v1.0 + +type OVERLAY +map key 2 1 +map key 3 2 +map key 4 3 +map key 5 4 +map key 6 5 +map key 7 6 +map key 8 7 +map key 9 8 +map key 10 9 +map key 11 0 +map key 12 MINUS +map key 13 EQUALS +map key 16 Q +map key 17 W +map key 18 E +map key 19 R +map key 20 T +map key 21 Y +map key 22 U +map key 23 I +map key 24 O +map key 25 P +map key 26 LEFT_BRACKET +map key 27 RIGHT_BRACKET +map key 30 A +map key 31 S +map key 32 D +map key 33 F +map key 34 G +map key 35 H +map key 36 J +map key 37 K +map key 38 L +map key 39 SEMICOLON +map key 40 APOSTROPHE +map key 41 GRAVE +map key 43 BACKSLASH +map key 44 Z +map key 45 X +map key 46 C +map key 47 V +map key 48 B +map key 49 N +map key 50 M +map key 51 COMMA +map key 52 PERIOD +map key 53 SLASH +map key 57 SPACE +map key 95 NUMPAD_COMMA + + +key 0 { + label: '\u0030' + base: '\u0030' + shift: '\u0029' + capslock: '\u0029' + capslock+shift: '\u0030' + ralt: '\u0e50' + } + +key 1 { + label: '\u0031' + base: '\u0031' + shift: '\u0021' + capslock: '\u0021' + capslock+shift: '\u0031' + ralt: '\u0e51' + } + +key 2 { + label: '\u0032' + base: '\u0032' + shift: '\u0040' + capslock: '\u0040' + capslock+shift: '\u0032' + ralt: '\u0e52' + } + +key 3 { + label: '\u0033' + base: '\u0033' + shift: '\u0023' + capslock: '\u0023' + capslock+shift: '\u0033' + ralt: '\u0e53' + } + +key 4 { + label: '\u0034' + base: '\u0034' + shift: '\u0024' + capslock: '\u0024' + capslock+shift: '\u0034' + ralt: '\u0e54' + } + +key 5 { + label: '\u0035' + base: '\u0035' + shift: '\u0025' + capslock: '\u0025' + capslock+shift: '\u0035' + ralt: '\u0e55' + } + +key 6 { + label: '\u0036' + base: '\u0036' + shift: '\u005e' + capslock: '\u005e' + capslock+shift: '\u0036' + ralt: '\u0e56' + } + +key 7 { + label: '\u0037' + base: '\u0037' + shift: '\u0026' + capslock: '\u0026' + capslock+shift: '\u0037' + ralt: '\u0e57' + } + +key 8 { + label: '\u0038' + base: '\u0038' + shift: '\u002a' + capslock: '\u002a' + capslock+shift: '\u0038' + ralt: '\u0e58' + } + +key 9 { + label: '\u0039' + base: '\u0039' + shift: '\u0028' + capslock: '\u0028' + capslock+shift: '\u0039' + ralt: '\u0e59' + } + +key MINUS { + label: '\u002d' + base: '\u002d' + shift: '\u005f' + capslock: '\u005f' + capslock+shift: '\u002d' + ralt: '\u00f7' + } + +key EQUALS { + label: '\u003d' + base: '\u003d' + shift: '\u002b' + capslock: '\u002b' + capslock+shift: '\u003d' + ralt: '\u00d7' + } + +key GRAVE { + label: '\u0060' + base: '\u0060' + shift: '\u007e' + capslock: '\u007e' + capslock+shift: '\u0060' + ralt: '\u0060' + } + +key Q { + label: '\u0e43' + base: '\u0e43' + shift: '\u0e12' + capslock: '\u0e12' + capslock+shift: '\u0e43' + ralt: '\u0071' + } + +key W { + label: '\u0e15' + base: '\u0e15' + shift: '\u0e0f' + capslock: '\u0e0f' + capslock+shift: '\u0e15' + ralt: '\u0077' + } + +key E { + label: '\u0e2b' + base: '\u0e2b' + shift: '\u0e0b' + capslock: '\u0e0b' + capslock+shift: '\u0e2b' + ralt: '\u0066' + } + +key R { + label: '\u0e25' + base: '\u0e25' + shift: '\u0e0d' + capslock: '\u0e0d' + capslock+shift: '\u0e25' + ralt: '\u0070' + } + +key T { + label: '\u0e2a' + base: '\u0e2a' + shift: '\u0e1f' + capslock: '\u0e1f' + capslock+shift: '\u0e2a' + ralt: '\u0062' + } + +key Y { + label: '\u0e1b' + base: '\u0e1b' + shift: '\u0e09' + capslock: '\u0e09' + capslock+shift: '\u0e1b' + ralt: '\u006a' + } + +key U { + label: '\u0e31' + base: '\u0e31' + shift: '\u0e36' + capslock: '\u0e36' + capslock+shift: '\u0e31' + ralt: '\u0e3a' + } + +key I { + label: '\u0e01' + base: '\u0e01' + shift: '\u0e18' + capslock: '\u0e18' + capslock+shift: '\u0e01' + ralt: '\u0075' + } + +key O { + label: '\u0e34' + base: '\u0e34' + shift: '\u0e10' + capslock: '\u0e10' + capslock+shift: '\u0e34' + ralt: '\u0079' + } + +key P { + label: '\u0e1a' + base: '\u0e1a' + shift: '\u0e0e' + capslock: '\u0e0e' + capslock+shift: '\u0e1a' + ralt: '\u003b' + ralt+shift: '\u003a' + } + +key LEFT_BRACKET { + label: '\u0e47' + base: '\u0e47' + shift: '\u0e06' + capslock: '\u0e06' + capslock+shift: '\u0e47' + ralt: '\u005b' + ralt+shift: '\u007b' + } + +key RIGHT_BRACKET { + label: '\u0e2c' + base: '\u0e2c' + shift: '\u0e11' + capslock: '\u0e11' + capslock+shift: '\u0e2c' + ralt: '\u005d' + ralt+shift: '\u007d' + } + +key A { + label: '\u0e07' + base: '\u0e07' + shift: '\u0e29' + capslock: '\u0e29' + capslock+shift: '\u0e07' + ralt: '\u25cc' + } + +key S { + label: '\u0e40' + base: '\u0e40' + shift: '\u0e16' + capslock: '\u0e16' + capslock+shift: '\u0e40' + ralt: '\u0e4f' + } + +key D { + label: '\u0e23' + base: '\u0e23' + shift: '\u0e41' + capslock: '\u0e41' + capslock+shift: '\u0e23' + ralt: '\u0e5b' + } + +key F { + label: '\u0e19' + base: '\u0e19' + shift: '\u0e0a' + capslock: '\u0e0a' + capslock+shift: '\u0e19' + ralt: '\u0e3f' + } + +key G { + label: '\u0e21' + base: '\u0e21' + shift: '\u0e1e' + capslock: '\u0e1e' + capslock+shift: '\u0e21' + ralt: '\u0067' + } + +key H { + label: '\u0e2d' + base: '\u0e2d' + shift: '\u0e1c' + capslock: '\u0e1c' + capslock+shift: '\u0e2d' + ralt: '\u0e4d' + } + +key J { + label: '\u0e32' + base: '\u0e32' + shift: '\u0e33' + capslock: '\u0e33' + capslock+shift: '\u0e32' + ralt: '\u0e45' + } + +key K { + label: '\u0e48' + base: '\u0e48' + shift: '\u0e02' + capslock: '\u0e02' + capslock+shift: '\u0e48' + ralt: '\u0e03' + } + +key L { + label: '\u0e49' + base: '\u0e49' + shift: '\u0e42' + capslock: '\u0e42' + capslock+shift: '\u0e49' + ralt: '\u0069' + } + +key SEMICOLON { + label: '\u0e27' + base: '\u0e27' + shift: '\u0e20' + capslock: '\u0e20' + capslock+shift: '\u0e27' + ralt: '\u006f' + } + +key APOSTROPHE { + label: '\u0e37' + base: '\u0e37' + shift: '\u0022' + capslock: '\u0022' + capslock+shift: '\u0e37' + ralt: '\u0027' + ralt+shift: '\u0022' + } + +key BACKSLASH { + label: '\u0e2f' + base: '\u0e2f' + shift: '\u0e0c' + capslock: '\u0e0c' + capslock+shift: '\u0e2f' + ralt: '\u005c' + ralt+shift: '\u007c' + } + +key Z { + label: '\u0e38' + base: '\u0e38' + shift: '\u0e24' + capslock: '\u0e24' + capslock+shift: '\u0e38' + ralt: '\u0e26' + } + +key X { + label: '\u0e44' + base: '\u0e44' + shift: '\u0e1d' + capslock: '\u0e1d' + capslock+shift: '\u0e44' + ralt: '\u0078' + } + +key C { + label: '\u0e17' + base: '\u0e17' + shift: '\u0e46' + capslock: '\u0e46' + capslock+shift: '\u0e17' + ralt: '\u0e5a' + } + +key V { + label: '\u0e22' + base: '\u0e22' + shift: '\u0e13' + capslock: '\u0e13' + capslock+shift: '\u0e22' + ralt: '\u0076' + } + +key B { + label: '\u0e08' + base: '\u0e08' + shift: '\u0e4a' + capslock: '\u0e4a' + capslock+shift: '\u0e08' + ralt: '\u0064' + } + +key N { + label: '\u0e04' + base: '\u0e04' + shift: '\u0e4b' + capslock: '\u0e4b' + capslock+shift: '\u0e04' + ralt: '\u0e05' + } + +key M { + label: '\u0e35' + base: '\u0e35' + shift: '\u0e4c' + capslock: '\u0e4c' + capslock+shift: '\u0e35' + ralt: '\u0e4e' + } + +key COMMA { + label: '\u0e14' + base: '\u0e14' + shift: '\u0e28' + capslock: '\u0e28' + capslock+shift: '\u0e14' + ralt: '\u002c' + ralt+shift: '\u003c' + } + +key PERIOD { + label: '\u0e30' + base: '\u0e30' + shift: '\u0e2e' + capslock: '\u0e2e' + capslock+shift: '\u0e30' + ralt: '\u002e' + ralt+shift: '\u003e' + } + +key SLASH { + label: '\u0e39' + base: '\u0e39' + shift: '\u003f' + capslock: '\u003f' + capslock+shift: '\u0e39' + ralt: '\u002f' + ralt+shift: '\u003f' + } + +key SPACE { + label: '\u0020' + base: '\u0020' + shift: '\u0020' + capslock: '\u0020' + capslock+shift: '\u0020' + ralt: '\u0020' + ralt+shift: '\u0020' + } + +key NUMPAD_COMMA { + label: '\u002e' + base: '\u002e' + shift: '\u002c' + capslock: '\u002c' + capslock+shift: '\u002e' + ralt: '\u002e' + ralt+shift: '\u002e' + } diff --git a/output/Manoonchai-ColemakDH-Mod.keylayout b/output/Manoonchai-ColemakDH-Mod/Manoonchai-ColemakDH-Mod.keylayout similarity index 99% rename from output/Manoonchai-ColemakDH-Mod.keylayout rename to output/Manoonchai-ColemakDH-Mod/Manoonchai-ColemakDH-Mod.keylayout index c11739e..58d3a99 100644 --- a/output/Manoonchai-ColemakDH-Mod.keylayout +++ b/output/Manoonchai-ColemakDH-Mod/Manoonchai-ColemakDH-Mod.keylayout @@ -1,6 +1,6 @@ - + diff --git a/output/Manoonchai-ColemakDH-Mod_xkb b/output/Manoonchai-ColemakDH-Mod/Manoonchai-ColemakDH-Mod_xkb similarity index 93% rename from output/Manoonchai-ColemakDH-Mod_xkb rename to output/Manoonchai-ColemakDH-Mod/Manoonchai-ColemakDH-Mod_xkb index d8943d5..7a1d7c3 100644 --- a/output/Manoonchai-ColemakDH-Mod_xkb +++ b/output/Manoonchai-ColemakDH-Mod/Manoonchai-ColemakDH-Mod_xkb @@ -1,9 +1,9 @@ -partial alphanumeric_keys +partial alphanumeric_keys xkb_symbols "Mnc-DH" { // COPYRIGHT "MIT" - name[Group1]= "Manoonchai v1.0"; + name[Group1]= "Thai (ManoonchaiColemak v1.0)"; key { [ 0x1000030, 0x1000029, 0x1000e50,voidsymbol] }; @@ -53,6 +53,8 @@ xkb_symbols "Mnc-DH" { key { [ 0x1000e14, 0x1000e28, 0x100002c, 0x100003c] }; key { [ 0x1000e30, 0x1000e2e, 0x100002e, 0x100003e] }; key { [ 0x1000e39, 0x100003f, 0x100002f, 0x100003f] }; + key { [ 0x1000020, 0x1000020, 0x1000020, 0x1000020] }; + key { [ 0x100002e, 0x100002c, 0x100002e, 0x100002e] }; include "level3(ralt_switch)" -}; \ No newline at end of file +}; diff --git a/output/Manoonchai-ColemakDH-Mod/Mnc-DH.klc b/output/Manoonchai-ColemakDH-Mod/Mnc-DH.klc new file mode 100644 index 0000000000000000000000000000000000000000..f21b81ddd2404d866257dde2c3ce5492277b0dfc GIT binary patch literal 3866 zcmbtXO>f&q5S^^yG#VDJe}av1KPwZP~8nIB_n4;?PKtucCE=74-J)6uR`g%Uia30;>yX zpV$!)`_Mj0s5`{92g^@`?WnsYbX?UUQ8cZtX5u~K*vp2ZDL#?hIwgrQiR1=X|K_H7wGj&dQqMZeqVAZ;Yiv?9;TehuDa&QhZwDI+2pN!aHg@ z(q$nVJZE;E7InM`>h|Wk!^y!*hWmmY8k?a}K87Ya#O|R)lu4E)viOxt# zM7pLUof*pW2BZHvKF!Px3WZ$fH-Zl$=r8kGwu! zDf*8Vn!Xa;(KdaZsq0p>Z^%lUIG`TK+{tw9tjy(gZ-r0X3bi$99Xi7aQXPD!q)aP5 zIdj}8BSyO)(DWd5+_AYg-6Xr2E#&V-Kx(&@-xxjT#ko$OlN4#5Xh!Vw#P^R}J?=-& zbs@QW8GP3L9z&k7s@^%Wr}W8rdJ>TOS5dTO$7ZPlo~L446-ZT)Y+8}^m$o!56LA(_`AAnU$9>{>ZX z(}CwgvJ+PUsY)}~dSHg?I3Fw#sW-F3fUJf*+rfu-fJ}CdX@@>8klMuOfsoJg{eleh9yfiDwcoq7^Yo3ggw0qD ze{&`KJrY$zvffek1*0t79+{r=)AVsleP-MWWm&mR%xls-uG4ql0x`K2W*~chmnX4Y pVWp<2>xaNEun(|C`QMdz=0dNkO0<+$lohSd{4dP(Zm9qO literal 0 HcmV?d00001 diff --git a/output/Manoonchai-WittNV.klc b/output/Manoonchai-WittNV.klc deleted file mode 100644 index 31073d10be22d6a2f1c8865a378a0ece3967090d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2776 zcmZ{m342pT6hOz_qTmAVTPT!0wCO?@7fAQeqzO$I0xBYcRH4;UaD`v!Z$i&`ooA9E z{qh~=&h*@wc{4YU{QGn%Oo!Rf7dFCX*yXbv*6HgqZ+F=1%(N1k?61zueerqnr)e^CCCsxz6Us36 z|C0`35ArFnv+Zy%JPh|asX`cqDVXN`9Q+JFpeO=p&c&lK19NN3} z9<()W2Vf1;IGxoq)z`KC7S?f%Q+I+feO=oVuz_owx|59Q>)M`ytGLFgdy_GJUE5R8 z!Zl9aTa4AI=32OseLI)A(I#W&7U4#0jnmv87|U}TR75-TOa5{eY^6K1l+AvHaaWmP zXK%x=#FDz!#0KcTgZBpfMl7joP54I8J&X4m+##0KwI)_TcL47o{6Z|LYfY?z?isw# zznNB0Aq z1K`_Xw})%REkySy&ZqDreM$FV#Vtm+h&K*3xZlI|d@o0L7-t0LV5^5~#Vtj55$Ab$ z0X)le58gsGx)q#h*rYG1YsKZa=b3nRC-DogO)P27Ughn*Ps}%G9>1UVWW?A!t7o}Z%Kcm&@`d+&l-C3MZ z;CK3x?!+^miSB!NAHy|pz0|c{*Q48ya~K}cmu`0?+vjw2U&Xr&?n_eFyYV-R&-NnT z61)UI_i(M(T6D*7s;~@qd$`_4elz}_tMSRdn@7kw1?O<&iLKJ#36>r+i)U!)z37<&q?CjJ_n { [ 0x1000030, 0x1000029, 0x1000e50,voidsymbol] }; @@ -53,6 +53,8 @@ xkb_symbols "WittNV" { key { [ 0x1000e14, 0x1000e28, 0x100002c, 0x100003c] }; key { [ 0x1000e30, 0x1000e2e, 0x100002e, 0x100003e] }; key { [ 0x1000e39, 0x100003f, 0x100002f, 0x100003f] }; + key { [ 0x1000020, 0x1000020, 0x1000020, 0x1000020] }; + key { [ 0x100002e, 0x100002c, 0x100002e, 0x100002e] }; include "level3(ralt_switch)" -}; \ No newline at end of file +}; diff --git a/output/Manoonchai-WittNV/WittNV.klc b/output/Manoonchai-WittNV/WittNV.klc new file mode 100644 index 0000000000000000000000000000000000000000..1803f406a83b7cc35f2043f90a5103379a5f2b2f GIT binary patch literal 3870 zcmbtXO>f&q5S^<-7VT|nBhbNkJ%@N8@=TtC_;93Sl_KiwYa zkL^#Z?I){%dtg7Lb73cTYL|9qOM7Mqut%#aNaq_`E9mXO?`78bx3^;T2v!%+KC*ov zc3^Kmq3#gZHY^_m+fjF!a@<0Mezb_V3)&a3bY^SBcLK|!oR4R-hUKL_g@-lH9i01p zrWLdw;#i#rYWLE~@txo@lAQS96***T~@(9iZmqUd>t79OLT80*Ej0 zOVsRM)cikCW90Ha`<&m4ew5K39sRn`h^GG|Si401UZOrD9KR&yjFJ7f6y+7LKiU(V zW31famwoGS?NGC~xV}TJxHg8=;mT*fhLc5byIA#V3S8#yc#P>;2TK#o0Flf))|-~OQevRwmQFE?Lpx1xXOg%} zoa}1F?bIoU7imoqx0yK|5Y8$g=RIGUOP!=w0a>RWv(nW@?DIk8W%p@7Dn=nWX(ifO z-$VH%TTcf_F^oRFJ{~Q*Q}QHRcLzvzkv{8?9qc&|I==F?TXuyDM|K&Q|!utx#K&)}b?;Al1QlOJy_d z89&FJGGeql0Zk7=$6cFy(@nBl*uvR63rOv_@*AUPUOuPvIZ2V0iDty)ERlQ%Db?eC zf!A&zF3% zw|sN*&NOLi=(9-~M`UEE{t5O2vdz0N^Nc$VW!A1l%gQeYNOD%SjYu*qa(j|;ISEKT zAyOUlXo(#5lhfu*6nosGc*&TDzTLJ~RINB$;sdSFo9ahqZg$G2RTknzu%2G`Ns5=5 zR6U1fo2=H|9Cxz9C$9s#>1)q_@!0S3?Dzeo3ux#C@wyG1AiT{eleh9yhti+V9=kY5LAt!e*?7 zzrE6)N1|#-)_bbHVw8p3Bh#IEP2Qh4r9Lxmg|e*NCgw?Zoxc4Rh{>%m1D}A+NgS@Q oQq!~_>;b>PKEN84e^**!F7&FZIIo5)%8J(bO}U3&^NX1BKd-lMpa1{> literal 0 HcmV?d00001 diff --git a/output/Manoonchai-v0.2.klc b/output/Manoonchai-v0.2.klc deleted file mode 100644 index e49ae7403267651f871edd9e71ccefb4a899f9c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2800 zcmZ{mX>D86%j{xjW^ zWN3c*{nM4sQ`OZq)id+|uQBVlL2I&-E!abAw+`&AP1!S>vw6!fKgU0deDuGceGl0R zn=x-?ZL4jHG+R)lL_61a%qmya zLafH4=sK+IG@EBmyjYD_(Il+wG~3CXc(EFfp(?EGG~30Tc(EFfqbXR~X;xQ4yjYFR zXc|^_npIWBi`94+&A`e|vpvj-7pw6Ex&bRY&Gs@UUaZD5=q9Y}G&{$fc(EE!p;=hj zY4#y=W%{{f_oDMT!8NTiC*Kxy5B+p@+V>Ij-nT+e)I2Zo&sp>X$!_$_MbWP_uT_qa z*-jKQZvwRX;)bKwLGDWE4*^=8q5FbjXCY4~^y2`n-k5asNyx1Uy%eC;9aD~OhWsa? zmjkr=W7g3JA-5&;rvR-EnRavzvI+H}cLBDWxuRp&z+_Ndzxe>I9w|F|H{_0lUJTIc zl8U1bKps!%*8y6+=6gWZQPoHA*nn{cEHhRAg`fYNGqoERu9cMb}!6k6f^Hv(D^9WenYDgk>us;Z$Dh%^@!5yY!AKXKzs`R? zdcu0oO7z}U#NVI8cKo)ZR(zz(4Zgan-dEWw(;jG@#5Qb6J5&|4nxuEdK~93+arOH* Dg30hj diff --git a/output/Manoonchai-v0.2/Manoonchai-v0.2.kcm b/output/Manoonchai-v0.2/Manoonchai-v0.2.kcm new file mode 100644 index 0000000..d5cba2b --- /dev/null +++ b/output/Manoonchai-v0.2/Manoonchai-v0.2.kcm @@ -0,0 +1,492 @@ +# License: MIT + +# Thai Manoonchai v0.2 v0.2 + +type OVERLAY +map key 2 1 +map key 3 2 +map key 4 3 +map key 5 4 +map key 6 5 +map key 7 6 +map key 8 7 +map key 9 8 +map key 10 9 +map key 11 0 +map key 12 MINUS +map key 13 EQUALS +map key 16 Q +map key 17 W +map key 18 E +map key 19 R +map key 20 T +map key 21 Y +map key 22 U +map key 23 I +map key 24 O +map key 25 P +map key 26 LEFT_BRACKET +map key 27 RIGHT_BRACKET +map key 30 A +map key 31 S +map key 32 D +map key 33 F +map key 34 G +map key 35 H +map key 36 J +map key 37 K +map key 38 L +map key 39 SEMICOLON +map key 40 APOSTROPHE +map key 41 GRAVE +map key 43 BACKSLASH +map key 44 Z +map key 45 X +map key 46 C +map key 47 V +map key 48 B +map key 49 N +map key 50 M +map key 51 COMMA +map key 52 PERIOD +map key 53 SLASH +map key 57 SPACE +map key 95 NUMPAD_COMMA + + +key 0 { + label: '\u0030' + base: '\u0030' + shift: '\u0029' + capslock: '\u0029' + capslock+shift: '\u0030' + ralt: '\u0e50' + } + +key 1 { + label: '\u0031' + base: '\u0031' + shift: '\u0021' + capslock: '\u0021' + capslock+shift: '\u0031' + ralt: '\u0e51' + } + +key 2 { + label: '\u0032' + base: '\u0032' + shift: '\u0040' + capslock: '\u0040' + capslock+shift: '\u0032' + ralt: '\u0e52' + } + +key 3 { + label: '\u0033' + base: '\u0033' + shift: '\u0023' + capslock: '\u0023' + capslock+shift: '\u0033' + ralt: '\u0e53' + } + +key 4 { + label: '\u0034' + base: '\u0034' + shift: '\u0024' + capslock: '\u0024' + capslock+shift: '\u0034' + ralt: '\u0e54' + } + +key 5 { + label: '\u0035' + base: '\u0035' + shift: '\u0025' + capslock: '\u0025' + capslock+shift: '\u0035' + ralt: '\u0e55' + } + +key 6 { + label: '\u0036' + base: '\u0036' + shift: '\u005e' + capslock: '\u005e' + capslock+shift: '\u0036' + ralt: '\u0e56' + } + +key 7 { + label: '\u0037' + base: '\u0037' + shift: '\u0026' + capslock: '\u0026' + capslock+shift: '\u0037' + ralt: '\u0e57' + } + +key 8 { + label: '\u0038' + base: '\u0038' + shift: '\u002a' + capslock: '\u002a' + capslock+shift: '\u0038' + ralt: '\u0e58' + } + +key 9 { + label: '\u0039' + base: '\u0039' + shift: '\u0028' + capslock: '\u0028' + capslock+shift: '\u0039' + ralt: '\u0e59' + } + +key MINUS { + label: '\u002d' + base: '\u002d' + shift: '\u005f' + capslock: '\u005f' + capslock+shift: '\u002d' + ralt: '\u00f7' + } + +key EQUALS { + label: '\u003d' + base: '\u003d' + shift: '\u002b' + capslock: '\u002b' + capslock+shift: '\u003d' + ralt: '\u00d7' + } + +key GRAVE { + label: '\u0060' + base: '\u0060' + shift: '\u007e' + capslock: '\u007e' + capslock+shift: '\u0060' + ralt: '\u0060' + } + +key Q { + label: '\u0e1e' + base: '\u0e1e' + shift: '\u0e11' + capslock: '\u0e11' + capslock+shift: '\u0e1e' + } + +key W { + label: '\u0e04' + base: '\u0e04' + shift: '\u0e12' + capslock: '\u0e12' + capslock+shift: '\u0e04' + } + +key E { + label: '\u0e22' + base: '\u0e22' + shift: '\u0e29' + capslock: '\u0e29' + capslock+shift: '\u0e22' + } + +key R { + label: '\u0e27' + base: '\u0e27' + shift: '\u0e0d' + capslock: '\u0e0d' + capslock+shift: '\u0e27' + } + +key T { + label: '\u0e25' + base: '\u0e25' + shift: '\u0e1f' + capslock: '\u0e1f' + capslock+shift: '\u0e25' + } + +key Y { + label: '\u0e1b' + base: '\u0e1b' + shift: '\u0e0e' + capslock: '\u0e0e' + capslock+shift: '\u0e1b' + } + +key U { + label: '\u0e31' + base: '\u0e31' + shift: '\u0e09' + capslock: '\u0e09' + capslock+shift: '\u0e31' + ralt: '\u0e3a' + } + +key I { + label: '\u0e01' + base: '\u0e01' + shift: '\u0e20' + capslock: '\u0e20' + capslock+shift: '\u0e01' + } + +key O { + label: '\u0e15' + base: '\u0e15' + shift: '\u0e10' + capslock: '\u0e10' + capslock+shift: '\u0e15' + } + +key P { + label: '\u0e1a' + base: '\u0e1a' + shift: '\u0e24' + capslock: '\u0e24' + capslock+shift: '\u0e1a' + } + +key LEFT_BRACKET { + label: '\u0e47' + base: '\u0e47' + shift: '\u0e06' + capslock: '\u0e06' + capslock+shift: '\u0e47' + ralt: '\u005b' + ralt+shift: '\u007b' + } + +key RIGHT_BRACKET { + label: '\u0e39' + base: '\u0e39' + shift: '\u0e0c' + capslock: '\u0e0c' + capslock+shift: '\u0e39' + ralt: '\u005d' + ralt+shift: '\u007d' + } + +key A { + label: '\u0e2b' + base: '\u0e2b' + shift: '\u0e46' + capslock: '\u0e46' + capslock+shift: '\u0e2b' + ralt: '\u25cc' + } + +key S { + label: '\u0e40' + base: '\u0e40' + shift: '\u0e16' + capslock: '\u0e16' + capslock+shift: '\u0e40' + ralt: '\u0e4f' + } + +key D { + label: '\u0e19' + base: '\u0e19' + shift: '\u0e41' + capslock: '\u0e41' + capslock+shift: '\u0e19' + ralt: '\u0e5b' + } + +key F { + label: '\u0e23' + base: '\u0e23' + shift: '\u0e02' + capslock: '\u0e02' + capslock+shift: '\u0e23' + ralt: '\u0e3f' + } + +key G { + label: '\u0e21' + base: '\u0e21' + shift: '\u0e1c' + capslock: '\u0e1c' + capslock+shift: '\u0e21' + } + +key H { + label: '\u0e2d' + base: '\u0e2d' + shift: '\u0e36' + capslock: '\u0e36' + capslock+shift: '\u0e2d' + ralt: '\u0e4d' + } + +key J { + label: '\u0e32' + base: '\u0e32' + shift: '\u0e43' + capslock: '\u0e43' + capslock+shift: '\u0e32' + ralt: '\u0e45' + } + +key K { + label: '\u0e48' + base: '\u0e48' + shift: '\u0e33' + capslock: '\u0e33' + capslock+shift: '\u0e48' + ralt: '\u0e03' + } + +key L { + label: '\u0e49' + base: '\u0e49' + shift: '\u0e42' + capslock: '\u0e42' + capslock+shift: '\u0e49' + } + +key SEMICOLON { + label: '\u0e07' + base: '\u0e07' + shift: '\u0e28' + capslock: '\u0e28' + capslock+shift: '\u0e07' + ralt: '\u003b' + ralt+shift: '\u003a' + } + +key APOSTROPHE { + label: '\u0e37' + base: '\u0e37' + shift: '\u0e2e' + capslock: '\u0e2e' + capslock+shift: '\u0e37' + ralt: '\u0027' + ralt+shift: '\u0022' + } + +key BACKSLASH { + label: '\u0e4b' + base: '\u0e4b' + shift: '\u0e2f' + capslock: '\u0e2f' + capslock+shift: '\u0e4b' + ralt: '\u005c' + ralt+shift: '\u007c' + } + +key Z { + label: '\u0e0a' + base: '\u0e0a' + shift: '\u0e2c' + capslock: '\u0e2c' + capslock+shift: '\u0e0a' + ralt: '\u0e26' + } + +key X { + label: '\u0e44' + base: '\u0e44' + shift: '\u0e4b' + capslock: '\u0e4b' + capslock+shift: '\u0e44' + } + +key C { + label: '\u0e2a' + base: '\u0e2a' + shift: '\u0e4a' + capslock: '\u0e4a' + capslock+shift: '\u0e2a' + ralt: '\u0e5a' + } + +key V { + label: '\u0e17' + base: '\u0e17' + shift: '\u0e0b' + capslock: '\u0e0b' + capslock+shift: '\u0e17' + } + +key B { + label: '\u0e08' + base: '\u0e08' + shift: '\u0e1d' + capslock: '\u0e1d' + capslock+shift: '\u0e08' + } + +key N { + label: '\u0e34' + base: '\u0e34' + shift: '\u003f' + capslock: '\u003f' + capslock+shift: '\u0e34' + ralt: '\u0e05' + } + +key M { + label: '\u0e35' + base: '\u0e35' + shift: '\u0e13' + capslock: '\u0e13' + capslock+shift: '\u0e35' + ralt: '\u0e4e' + } + +key COMMA { + label: '\u0e14' + base: '\u0e14' + shift: '\u0e18' + capslock: '\u0e18' + capslock+shift: '\u0e14' + ralt: '\u002c' + ralt+shift: '\u003c' + } + +key PERIOD { + label: '\u0e30' + base: '\u0e30' + shift: '\u0e0f' + capslock: '\u0e0f' + capslock+shift: '\u0e30' + ralt: '\u002e' + ralt+shift: '\u003e' + } + +key SLASH { + label: '\u0e38' + base: '\u0e38' + shift: '\u0e3f' + capslock: '\u0e3f' + capslock+shift: '\u0e38' + ralt: '\u002f' + ralt+shift: '\u003f' + } + +key SPACE { + label: '\u0020' + base: '\u0020' + shift: '\u0020' + capslock: '\u0020' + capslock+shift: '\u0020' + ralt: '\u0020' + ralt+shift: '\u0020' + } + +key NUMPAD_COMMA { + label: '\u002e' + base: '\u002e' + shift: '\u002c' + capslock: '\u002c' + capslock+shift: '\u002e' + ralt: '\u002e' + ralt+shift: '\u002e' + } diff --git a/output/Manoonchai-v0.2.keylayout b/output/Manoonchai-v0.2/Manoonchai-v0.2.keylayout similarity index 100% rename from output/Manoonchai-v0.2.keylayout rename to output/Manoonchai-v0.2/Manoonchai-v0.2.keylayout diff --git a/output/Manoonchai-v0.2_xkb b/output/Manoonchai-v0.2/Manoonchai-v0.2_xkb similarity index 93% rename from output/Manoonchai-v0.2_xkb rename to output/Manoonchai-v0.2/Manoonchai-v0.2_xkb index fb0c716..3d91018 100644 --- a/output/Manoonchai-v0.2_xkb +++ b/output/Manoonchai-v0.2/Manoonchai-v0.2_xkb @@ -1,9 +1,9 @@ -partial alphanumeric_keys +partial alphanumeric_keys xkb_symbols "Mnc02" { // COPYRIGHT "MIT" - name[Group1]= "Manoonchai v0.2 v0.2"; + name[Group1]= "Thai (Manoonchai v0.2 v0.2)"; key { [ 0x1000030, 0x1000029, 0x1000e50,voidsymbol] }; @@ -53,6 +53,8 @@ xkb_symbols "Mnc02" { key { [ 0x1000e14, 0x1000e18, 0x100002c, 0x100003c] }; key { [ 0x1000e30, 0x1000e0f, 0x100002e, 0x100003e] }; key { [ 0x1000e38, 0x1000e3f, 0x100002f, 0x100003f] }; + key { [ 0x1000020, 0x1000020, 0x1000020, 0x1000020] }; + key { [ 0x100002e, 0x100002c, 0x100002e, 0x100002e] }; include "level3(ralt_switch)" -}; \ No newline at end of file +}; diff --git a/output/Manoonchai-v0.2/Mnc02.klc b/output/Manoonchai-v0.2/Mnc02.klc new file mode 100644 index 0000000000000000000000000000000000000000..683733155ec6e302eb5cb397b34c6d274767ccc0 GIT binary patch literal 3804 zcmbuCOLH4l5QTeds`w8oZ&(>-G*T2`gDpF;u@xK3F_;bIIC7C9JPHhz{CVJfx2Na! z#40w_)M)OV?$fV(x+VSd_o*G&q3zhpez7}iY^wFHUD=OzYj13#_qUS#stb9%{Y#pk zN_S$h+O?1EqjE3p+%D|KF73pg+p%n6ai!gro>^-py?uKjUDtT*sp_A}>QdTgb|l2U z>>U-O>K>z>Hb3ZfhzZhJYlKbsyXj9*UI7E9*QRQe{AzfuQ|~(uB8ya z%P;nyY(*{p12s`DZ+oAMt>~vcI-i1Ih+0pf7Va-I@zbjGR3j2wD zrF$aDgFZR8jh-9T?6sb6R4Zf??KXPy?kBC@57nkBYeleQ*LG?@=(&{MZ+dbLRG8XP ziABMnzo%=beE#26@S(9+vWQ2&8|#ME)IKlXh^0~N^CH<(Y@ofjT!tK^?~t%UGmx=& zWT*FJSAF`f5!-l|kw~h~nRcKn(s%e|m65S`pL0n;SETPivdYNVJCZX1U6H;6$tojb z??{*kx*~no2)FqFiKOQFR6EcW={tOeCQ?oXNkwvIpexdMAa8rkKq9F~q@XL(cOXME zkiiVk^G>L9O_G&(%w&9_&RHi*Q}G`pdEaXl6>GE`M~_}ux=!P72?ZYm6+DdSD+&qI+v~PbwVchYqE3%du=8?+@)O?3 z4ppeJ`I<_%C7!Dh%DG5hwXzlKD0FTTs_nZTUzLX+qTt!fgo^$KRrA6^H!#cnk;zFy zHl^lhPD_=lr<@xcJ5Q*#beEqQwcU;)l8X@v9=osT;^_U66y015?dhKA+Nw! zfAq=m2;~)ob@_zIKKjP}ajst{WLM(zYG5@^1!SJvKGjbXa@J2&e2$TP>*eYY(b)(I zKiy}oj(e^-(l5ayuZd&eny(ABW4Qm(WzsiYh=2;ZKK*=HJggqjIC!JOv9a)AwIxHq&H`H@n8LVK{ zt=#ukVEwxMe_N*Sa&&|B`I`&uSVAoGQpZE#m-_ajMs*V8*vI@GOFS#A@xSm;{|xv) G%l=<=`DV!g literal 0 HcmV?d00001 diff --git a/output/Manoonchai.klc b/output/Manoonchai.klc deleted file mode 100644 index 51166bf0ba3c9e51487273e3f61de2d0e1e59030..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2794 zcmZ{mX zWyoyRp4%&XL2WYDjRw#l6?@5Aik01h?Qv|CeJtCetw;2wE$CiH=UHu?>aIm}*A{f2 zqm|tX{92TyvgzHzqkmI2^()D@NEPO&)eN=JeWyJpnrh+IhF#eg-?v9Q*WZ{`uBwGt zjZNqltn4(KV@|wSjW^H~tn4(~&763#8c(4rtn4(~!<=}r8c(BXSlMY-PeQy{jV)*f zR(6_IRmF?d_yEnq%1*O=%!wDP@eH~RD?82hGbdiG#&hTntn4(qz?^uo8e7pEtn4(a z6JDmDOZG52pOZY(Ds%E}M-S0|&QAOO#k}{e&=WP!tNiCY`if-NduF5Px0u%|LuB?V zikW`{wEE(IQ9pa-%(t@CZ-Q3h&`h$_42C=su+Msm?>sEsqp? zH&h$?($c`2)$h6%eUUlezc=6xqcVEAiS3Hw=@(CNPr>BTJW^lB)%0<@qIc7%V~@Zz zqU%WOrCD|0m}8q@PNJCkJ3y-g#~s}cc^s9{Qh-&3Z#uRMCWl7Q(*UdPn{ezn%r>+g zJqxgU4n@ZnU#%~#U%cB>%nenWX?3#zV z(66Bi$>S0F>_*vfhBY7k26-RtUOpYHvIpJ6mOi4Ihu(g7k;p!%)94I(@2HKey5f#w zhha{jID@wVT0J}D=-(hm(Osk!(|N0hW*yrMa{$H6>rHen%5~7uKSJJ2Xzjl~b}s5$ zebH!#J0K^}PP7tW)wdx@@MoQKCS2ijC95M>-^`UUs&&1 xiN3oE`1^C%iQh#DAL&}1ub!&+RkqqyKlF9R4ky{Ff>x9CtvJj{(ATZ*zXO88@D~68 diff --git a/output/Manoonchai/Manoonchai.kcm b/output/Manoonchai/Manoonchai.kcm new file mode 100644 index 0000000..4c4077e --- /dev/null +++ b/output/Manoonchai/Manoonchai.kcm @@ -0,0 +1,492 @@ +# License: MIT + +# Thai Manoonchai v1.0 + +type OVERLAY +map key 2 1 +map key 3 2 +map key 4 3 +map key 5 4 +map key 6 5 +map key 7 6 +map key 8 7 +map key 9 8 +map key 10 9 +map key 11 0 +map key 12 MINUS +map key 13 EQUALS +map key 16 Q +map key 17 W +map key 18 E +map key 19 R +map key 20 T +map key 21 Y +map key 22 U +map key 23 I +map key 24 O +map key 25 P +map key 26 LEFT_BRACKET +map key 27 RIGHT_BRACKET +map key 30 A +map key 31 S +map key 32 D +map key 33 F +map key 34 G +map key 35 H +map key 36 J +map key 37 K +map key 38 L +map key 39 SEMICOLON +map key 40 APOSTROPHE +map key 41 GRAVE +map key 43 BACKSLASH +map key 44 Z +map key 45 X +map key 46 C +map key 47 V +map key 48 B +map key 49 N +map key 50 M +map key 51 COMMA +map key 52 PERIOD +map key 53 SLASH +map key 57 SPACE +map key 95 NUMPAD_COMMA + + +key 0 { + label: '\u0030' + base: '\u0030' + shift: '\u0029' + capslock: '\u0029' + capslock+shift: '\u0030' + ralt: '\u0e50' + } + +key 1 { + label: '\u0031' + base: '\u0031' + shift: '\u0021' + capslock: '\u0021' + capslock+shift: '\u0031' + ralt: '\u0e51' + } + +key 2 { + label: '\u0032' + base: '\u0032' + shift: '\u0040' + capslock: '\u0040' + capslock+shift: '\u0032' + ralt: '\u0e52' + } + +key 3 { + label: '\u0033' + base: '\u0033' + shift: '\u0023' + capslock: '\u0023' + capslock+shift: '\u0033' + ralt: '\u0e53' + } + +key 4 { + label: '\u0034' + base: '\u0034' + shift: '\u0024' + capslock: '\u0024' + capslock+shift: '\u0034' + ralt: '\u0e54' + } + +key 5 { + label: '\u0035' + base: '\u0035' + shift: '\u0025' + capslock: '\u0025' + capslock+shift: '\u0035' + ralt: '\u0e55' + } + +key 6 { + label: '\u0036' + base: '\u0036' + shift: '\u005e' + capslock: '\u005e' + capslock+shift: '\u0036' + ralt: '\u0e56' + } + +key 7 { + label: '\u0037' + base: '\u0037' + shift: '\u0026' + capslock: '\u0026' + capslock+shift: '\u0037' + ralt: '\u0e57' + } + +key 8 { + label: '\u0038' + base: '\u0038' + shift: '\u002a' + capslock: '\u002a' + capslock+shift: '\u0038' + ralt: '\u0e58' + } + +key 9 { + label: '\u0039' + base: '\u0039' + shift: '\u0028' + capslock: '\u0028' + capslock+shift: '\u0039' + ralt: '\u0e59' + } + +key MINUS { + label: '\u002d' + base: '\u002d' + shift: '\u005f' + capslock: '\u005f' + capslock+shift: '\u002d' + ralt: '\u00f7' + } + +key EQUALS { + label: '\u003d' + base: '\u003d' + shift: '\u002b' + capslock: '\u002b' + capslock+shift: '\u003d' + ralt: '\u00d7' + } + +key GRAVE { + label: '\u0060' + base: '\u0060' + shift: '\u007e' + capslock: '\u007e' + capslock+shift: '\u0060' + ralt: '\u0060' + } + +key Q { + label: '\u0e43' + base: '\u0e43' + shift: '\u0e12' + capslock: '\u0e12' + capslock+shift: '\u0e43' + } + +key W { + label: '\u0e15' + base: '\u0e15' + shift: '\u0e0f' + capslock: '\u0e0f' + capslock+shift: '\u0e15' + } + +key E { + label: '\u0e2b' + base: '\u0e2b' + shift: '\u0e0b' + capslock: '\u0e0b' + capslock+shift: '\u0e2b' + } + +key R { + label: '\u0e25' + base: '\u0e25' + shift: '\u0e0d' + capslock: '\u0e0d' + capslock+shift: '\u0e25' + } + +key T { + label: '\u0e2a' + base: '\u0e2a' + shift: '\u0e1f' + capslock: '\u0e1f' + capslock+shift: '\u0e2a' + } + +key Y { + label: '\u0e1b' + base: '\u0e1b' + shift: '\u0e09' + capslock: '\u0e09' + capslock+shift: '\u0e1b' + } + +key U { + label: '\u0e31' + base: '\u0e31' + shift: '\u0e36' + capslock: '\u0e36' + capslock+shift: '\u0e31' + ralt: '\u0e3a' + } + +key I { + label: '\u0e01' + base: '\u0e01' + shift: '\u0e18' + capslock: '\u0e18' + capslock+shift: '\u0e01' + } + +key O { + label: '\u0e34' + base: '\u0e34' + shift: '\u0e10' + capslock: '\u0e10' + capslock+shift: '\u0e34' + } + +key P { + label: '\u0e1a' + base: '\u0e1a' + shift: '\u0e0e' + capslock: '\u0e0e' + capslock+shift: '\u0e1a' + } + +key LEFT_BRACKET { + label: '\u0e47' + base: '\u0e47' + shift: '\u0e06' + capslock: '\u0e06' + capslock+shift: '\u0e47' + ralt: '\u005b' + ralt+shift: '\u007b' + } + +key RIGHT_BRACKET { + label: '\u0e2c' + base: '\u0e2c' + shift: '\u0e11' + capslock: '\u0e11' + capslock+shift: '\u0e2c' + ralt: '\u005d' + ralt+shift: '\u007d' + } + +key A { + label: '\u0e07' + base: '\u0e07' + shift: '\u0e29' + capslock: '\u0e29' + capslock+shift: '\u0e07' + ralt: '\u25cc' + } + +key S { + label: '\u0e40' + base: '\u0e40' + shift: '\u0e16' + capslock: '\u0e16' + capslock+shift: '\u0e40' + ralt: '\u0e4f' + } + +key D { + label: '\u0e23' + base: '\u0e23' + shift: '\u0e41' + capslock: '\u0e41' + capslock+shift: '\u0e23' + ralt: '\u0e5b' + } + +key F { + label: '\u0e19' + base: '\u0e19' + shift: '\u0e0a' + capslock: '\u0e0a' + capslock+shift: '\u0e19' + ralt: '\u0e3f' + } + +key G { + label: '\u0e21' + base: '\u0e21' + shift: '\u0e1e' + capslock: '\u0e1e' + capslock+shift: '\u0e21' + } + +key H { + label: '\u0e2d' + base: '\u0e2d' + shift: '\u0e1c' + capslock: '\u0e1c' + capslock+shift: '\u0e2d' + ralt: '\u0e4d' + } + +key J { + label: '\u0e32' + base: '\u0e32' + shift: '\u0e33' + capslock: '\u0e33' + capslock+shift: '\u0e32' + ralt: '\u0e45' + } + +key K { + label: '\u0e48' + base: '\u0e48' + shift: '\u0e02' + capslock: '\u0e02' + capslock+shift: '\u0e48' + ralt: '\u0e03' + } + +key L { + label: '\u0e49' + base: '\u0e49' + shift: '\u0e42' + capslock: '\u0e42' + capslock+shift: '\u0e49' + } + +key SEMICOLON { + label: '\u0e27' + base: '\u0e27' + shift: '\u0e20' + capslock: '\u0e20' + capslock+shift: '\u0e27' + ralt: '\u003b' + ralt+shift: '\u003a' + } + +key APOSTROPHE { + label: '\u0e37' + base: '\u0e37' + shift: '\u0022' + capslock: '\u0022' + capslock+shift: '\u0e37' + ralt: '\u0027' + ralt+shift: '\u0022' + } + +key BACKSLASH { + label: '\u0e2f' + base: '\u0e2f' + shift: '\u0e0c' + capslock: '\u0e0c' + capslock+shift: '\u0e2f' + ralt: '\u005c' + ralt+shift: '\u007c' + } + +key Z { + label: '\u0e38' + base: '\u0e38' + shift: '\u0e24' + capslock: '\u0e24' + capslock+shift: '\u0e38' + ralt: '\u0e26' + } + +key X { + label: '\u0e44' + base: '\u0e44' + shift: '\u0e1d' + capslock: '\u0e1d' + capslock+shift: '\u0e44' + } + +key C { + label: '\u0e17' + base: '\u0e17' + shift: '\u0e46' + capslock: '\u0e46' + capslock+shift: '\u0e17' + ralt: '\u0e5a' + } + +key V { + label: '\u0e22' + base: '\u0e22' + shift: '\u0e13' + capslock: '\u0e13' + capslock+shift: '\u0e22' + } + +key B { + label: '\u0e08' + base: '\u0e08' + shift: '\u0e4a' + capslock: '\u0e4a' + capslock+shift: '\u0e08' + } + +key N { + label: '\u0e04' + base: '\u0e04' + shift: '\u0e4b' + capslock: '\u0e4b' + capslock+shift: '\u0e04' + ralt: '\u0e05' + } + +key M { + label: '\u0e35' + base: '\u0e35' + shift: '\u0e4c' + capslock: '\u0e4c' + capslock+shift: '\u0e35' + ralt: '\u0e4e' + } + +key COMMA { + label: '\u0e14' + base: '\u0e14' + shift: '\u0e28' + capslock: '\u0e28' + capslock+shift: '\u0e14' + ralt: '\u002c' + ralt+shift: '\u003c' + } + +key PERIOD { + label: '\u0e30' + base: '\u0e30' + shift: '\u0e2e' + capslock: '\u0e2e' + capslock+shift: '\u0e30' + ralt: '\u002e' + ralt+shift: '\u003e' + } + +key SLASH { + label: '\u0e39' + base: '\u0e39' + shift: '\u003f' + capslock: '\u003f' + capslock+shift: '\u0e39' + ralt: '\u002f' + ralt+shift: '\u003f' + } + +key SPACE { + label: '\u0020' + base: '\u0020' + shift: '\u0020' + capslock: '\u0020' + capslock+shift: '\u0020' + ralt: '\u0020' + ralt+shift: '\u0020' + } + +key NUMPAD_COMMA { + label: '\u002e' + base: '\u002e' + shift: '\u002c' + capslock: '\u002c' + capslock+shift: '\u002e' + ralt: '\u002e' + ralt+shift: '\u002e' + } diff --git a/output/Manoonchai.keylayout b/output/Manoonchai/Manoonchai.keylayout similarity index 100% rename from output/Manoonchai.keylayout rename to output/Manoonchai/Manoonchai.keylayout diff --git a/output/Manoonchai_xkb b/output/Manoonchai/Manoonchai_xkb similarity index 93% rename from output/Manoonchai_xkb rename to output/Manoonchai/Manoonchai_xkb index 52258eb..7de8521 100644 --- a/output/Manoonchai_xkb +++ b/output/Manoonchai/Manoonchai_xkb @@ -1,9 +1,9 @@ -partial alphanumeric_keys +partial alphanumeric_keys xkb_symbols "ThaiMnc" { // COPYRIGHT "MIT" - name[Group1]= "Manoonchai v1.0"; + name[Group1]= "Thai (Manoonchai v1.0)"; key { [ 0x1000030, 0x1000029, 0x1000e50,voidsymbol] }; @@ -53,6 +53,8 @@ xkb_symbols "ThaiMnc" { key { [ 0x1000e14, 0x1000e28, 0x100002c, 0x100003c] }; key { [ 0x1000e30, 0x1000e2e, 0x100002e, 0x100003e] }; key { [ 0x1000e39, 0x100003f, 0x100002f, 0x100003f] }; + key { [ 0x1000020, 0x1000020, 0x1000020, 0x1000020] }; + key { [ 0x100002e, 0x100002c, 0x100002e, 0x100002e] }; include "level3(ralt_switch)" -}; \ No newline at end of file +}; diff --git a/output/Manoonchai/ThaiMnc.klc b/output/Manoonchai/ThaiMnc.klc new file mode 100644 index 0000000000000000000000000000000000000000..dec330dcd448fdb8dcc7a5a9406ceaab502a369b GIT binary patch literal 3798 zcmbuCOLH4l5QTdys`wA8Y*-m)G~+1123vMwVJkM4V=x=aN#r6$coY~4{ycEL+tYJf ziphqW8tL}jKHaAuw>A3b?^8RpBb(TjeQ&q+##Z)|y^{QBd@|LuTRr_*7kjQZwLh%2 zkFAmBhxS3a7j|wJc4L>ev}blA3)opny4ulNN$5twO_5C$?8JdXLc;af$SX@ z)V-MO$?{3EopqNbu18`RS1-n!qa9L_JdY`joBvCYcZJEwVm2``d&!y7kyI)GEDBs#Jph8 z-_tcIpZ|9i{m|G;S;V8?jdkN{W}g;saB0MSzwGRZ8|bF+^F8)Ky2K7EGy@s3BRf4O zy6V%VM%~7?MJ&NSE-*DkDR7pZnScU6C$};Wj%+c50kYB!R9-m+%>y>{1nWDw3Lku1J?a-VU09WTzt81znLYfeg(+MrU}O z%+_;Fl9l?H$@p9+XPqp~)c+uf`%bIKSR-khJ$hm3Lg#SXPB+?_mA*866coA_Hyd*RK<*E%hbKFwOckZ*Gt2?RneCzMm;jtej>2Bxh~mbGe1` zt^!3Cs($uGXI^cgs2U90_b|lrO+vMaVN^1EbcXcVi-d~vy%G2A9_+@>awIifCS+4G z>nv+0)d(HM&Ur$0!+9k(a$EItM&N&uP;KGjHLGW=V%-;6i#{W#QM-OPbyOk8NauQ0 z8)>{O6VS65R?rSBv+}m#@y6t17b|fR=2|%ySRN!a9=xV`0yAq~6}!aZNP4oKGrBw& zv|H@iiT(vSD|$!Cr%z89^F9%|M)tVFr%(2$3E2)agN%_?&oszx$0z6RSwgxk&(eQY z%6Xk^p*(|h1#_qR>&J8BF;dqr6S6BO-Z}rh3yfJxfed!4I;yKPe?Y+NB$gcD}n*BTHDC+A>>4K;y|Atn& z^1NzC4%_bubXC-~8|vyaJ*-`n|0+w_%(E!oK&f;vAx7*Wv+A^Rc0?KW=|nD&oTu PH~$Nd^v{5QvdI4eo&aWC literal 0 HcmV?d00001 diff --git a/output/Manoonchai_Lao/LaoMnc.klc b/output/Manoonchai_Lao/LaoMnc.klc new file mode 100644 index 0000000000000000000000000000000000000000..ac6427e92c92d7520f248b992d2227f488f4188f GIT binary patch literal 3868 zcmbtX!E)n75S^>3;vZal;S`YVWNpC($I0%7#G4Rj1K~nRwo+^nSPB9KKM%auPd(Fe zxwud&TN+Kj?$nj5`hPeZaw)A252K#{KM3 zy21F#?);G^>C;pJ`EmNleyeni`G<6yF4F7tCf%9eHAZ)PR%_TT(_7dw@}Y>u>lM7N zV11R&fmp)&+)z(oc!ayl;5*u0Se7rq(2wJEl8%G*Jv`l}4ftKd^Qh0qv)Leni}VWI zH~1~_JI|R`u>K6k3LKu&@98JhY7F1w^f`W~sL^k!GwaDg%ah)6gZe(EXS19hw0zlH zj&b&51;nq2OQtUmqUQgB8Y7pdKIZ%&deNhu9pie;h-Q4&{{i)Thx&|gd|~PtBl|y% zWdrOd=}Y{^n0dzkGji^5?ohKG&hJqx&W$nZaOS-qarIZOHY>dWgHgIqm+5<)SFrm9 zXRZS)%-XRMbHmX72*=3&|L>LSp-L@0GNOJ}n&qo$sx2D1RN%g|nImu`x-x#6<2;cX zafVm4bYz?ndWJb>SmJ6_L2kL2E=bdsamI%n7P5^a2+2P|z9?P3wq`GeUDc>7k%CBD&i{ zmzk!I-N1q#3R)wgX&qy`auk<&U8B>ip>uZ5x7b;m;AskN(Qk$NJqAw|M$Ceq<%xFg z=?43B=x3JwOikC$sKWi|XJR>gZ7~_QL*=EC4jEEyLY998|5aJvNsX3$N7cI?>#$1fVq0V6$f?<#g_up=FWanF_VWrH zy!MQ#C&8PaA({3*&_wt(oQdMNe&d%{AN3QEv z0oB@mqW?BLQ-;b=$G;4yt?hi}H{98a>_wHK0^w74+oKiTPl)e5TZ$%-n-| zn|N$Zlgeh;U8zq+nd3@4c;`F2>sc^At={mt+GMQ@Nkx1cklWlx>Yx_!phgOFs&EyM zb>4}!G4%RV>&`(jna_PdE-Vsb)OoGNewTYSk$O8j9Uwi=ZP-tW>`e7$#;*b2?~9z{ z*1A$;$~7oRDqtOuZGPsJ9wDaNyv|}uHTb&nD{74+_N_W|Xl&0o2dazJl5VxWGqZJX zH};Kl0iS0BW}aPbc}9O+Df!cz)XcJQf6URbZQq~xK08$1)W-7iXsVl;?Z&?QR^j>1 x4Cs&ldc%%f6iGI$)QPS58SpE-8?i>EE5uq1-_eFMsuI2Nd-4ol6#O3M_+K9Dd_DjG literal 0 HcmV?d00001 diff --git a/output/Manoonchai_Lao/Manoonchai_Lao.kcm b/output/Manoonchai_Lao/Manoonchai_Lao.kcm new file mode 100644 index 0000000..94c8355 --- /dev/null +++ b/output/Manoonchai_Lao/Manoonchai_Lao.kcm @@ -0,0 +1,506 @@ +# License: MIT + +# Lao Manoonchai Lao-Pali v1.0 + +type OVERLAY +map key 2 1 +map key 3 2 +map key 4 3 +map key 5 4 +map key 6 5 +map key 7 6 +map key 8 7 +map key 9 8 +map key 10 9 +map key 11 0 +map key 12 MINUS +map key 13 EQUALS +map key 16 Q +map key 17 W +map key 18 E +map key 19 R +map key 20 T +map key 21 Y +map key 22 U +map key 23 I +map key 24 O +map key 25 P +map key 26 LEFT_BRACKET +map key 27 RIGHT_BRACKET +map key 30 A +map key 31 S +map key 32 D +map key 33 F +map key 34 G +map key 35 H +map key 36 J +map key 37 K +map key 38 L +map key 39 SEMICOLON +map key 40 APOSTROPHE +map key 41 GRAVE +map key 43 BACKSLASH +map key 44 Z +map key 45 X +map key 46 C +map key 47 V +map key 48 B +map key 49 N +map key 50 M +map key 51 COMMA +map key 52 PERIOD +map key 53 SLASH +map key 57 SPACE +map key 95 NUMPAD_COMMA + + +key 0 { + label: '\u0030' + base: '\u0030' + shift: '\u0029' + capslock: '\u0029' + capslock+shift: '\u0030' + ralt: '\u0ed0' + } + +key 1 { + label: '\u0031' + base: '\u0031' + shift: '\u0021' + capslock: '\u0021' + capslock+shift: '\u0031' + ralt: '\u0ed1' + ralt+shift: '\u0021' + } + +key 2 { + label: '\u0032' + base: '\u0032' + shift: '\u0040' + capslock: '\u0040' + capslock+shift: '\u0032' + ralt: '\u0ed2' + ralt+shift: '\u0040' + } + +key 3 { + label: '\u0033' + base: '\u0033' + shift: '\u0023' + capslock: '\u0023' + capslock+shift: '\u0033' + ralt: '\u0ed3' + ralt+shift: '\u0023' + } + +key 4 { + label: '\u0034' + base: '\u0034' + shift: '\u0024' + capslock: '\u0024' + capslock+shift: '\u0034' + ralt: '\u0ed4' + ralt+shift: '\u0024' + } + +key 5 { + label: '\u0035' + base: '\u0035' + shift: '\u0025' + capslock: '\u0025' + capslock+shift: '\u0035' + ralt: '\u0ed5' + ralt+shift: '\u0025' + } + +key 6 { + label: '\u0036' + base: '\u0036' + shift: '\u002c' + capslock: '\u002c' + capslock+shift: '\u0036' + ralt: '\u0ed6' + ralt+shift: '\u005e' + } + +key 7 { + label: '\u0037' + base: '\u0037' + shift: '\u0026' + capslock: '\u0026' + capslock+shift: '\u0037' + ralt: '\u0ed7' + ralt+shift: '\u0026' + } + +key 8 { + label: '\u0038' + base: '\u0038' + shift: '\u002e' + capslock: '\u002e' + capslock+shift: '\u0038' + ralt: '\u0ed8' + ralt+shift: '\u002a' + } + +key 9 { + label: '\u0039' + base: '\u0039' + shift: '\u0028' + capslock: '\u0028' + capslock+shift: '\u0039' + ralt: '\u0ed9' + } + +key MINUS { + label: '\u002d' + base: '\u002d' + shift: '\u005f' + capslock: '\u005f' + capslock+shift: '\u002d' + ralt: '\u00f7' + } + +key EQUALS { + label: '\u003d' + base: '\u003d' + shift: '\u002b' + capslock: '\u002b' + capslock+shift: '\u003d' + ralt: '\u00d7' + } + +key GRAVE { + label: '\u0060' + base: '\u0060' + shift: '\u007e' + capslock: '\u007e' + capslock+shift: '\u0060' + ralt: '\u0060' + } + +key Q { + label: '\u0ec3' + base: '\u0ec3' + shift: '\u0e92' + capslock: '\u0e92' + capslock+shift: '\u0ec3' + } + +key W { + label: '\u0e95' + base: '\u0e95' + shift: '\u0e8f' + capslock: '\u0e8f' + capslock+shift: '\u0e95' + ralt: '\u0078' + } + +key E { + label: '\u0eab' + base: '\u0eab' + shift: '\u0ea2' + capslock: '\u0ea2' + capslock+shift: '\u0eab' + ralt: '\u0ee1' + } + +key R { + label: '\u0ea5' + base: '\u0ea5' + shift: '\u0e8e' + capslock: '\u0e8e' + capslock+shift: '\u0ea5' + ralt: '\u0ee2' + } + +key T { + label: '\u0eaa' + base: '\u0eaa' + shift: '\u0e9f' + capslock: '\u0e9f' + capslock+shift: '\u0eaa' + } + +key Y { + label: '\u0e9b' + base: '\u0e9b' + shift: '\u0e89' + capslock: '\u0e89' + capslock+shift: '\u0e9b' + } + +key U { + label: '\u0eb1' + base: '\u0eb1' + shift: '\u0eb6' + capslock: '\u0eb6' + capslock+shift: '\u0eb1' + ralt: '\u0eba' + } + +key I { + label: '\u0e81' + base: '\u0e81' + shift: '\u0eae' + capslock: '\u0eae' + capslock+shift: '\u0e81' + ralt: '\u0ede' + } + +key O { + label: '\u0eb4' + base: '\u0eb4' + shift: '\u0ebd' + capslock: '\u0ebd' + capslock+shift: '\u0eb4' + } + +key P { + label: '\u0e9a' + base: '\u0e9a' + shift: '\u0e98' + capslock: '\u0e98' + capslock+shift: '\u0e9a' + } + +key LEFT_BRACKET { + label: '\u0ebb' + base: '\u0ebb' + shift: '\u0e86' + capslock: '\u0e86' + capslock+shift: '\u0ebb' + ralt: '\u005b' + ralt+shift: '\u007b' + } + +key RIGHT_BRACKET { + label: '\u0eac' + base: '\u0eac' + shift: '\u0e91' + capslock: '\u0e91' + capslock+shift: '\u0eac' + ralt: '\u005d' + ralt+shift: '\u007d' + } + +key A { + label: '\u0e87' + base: '\u0e87' + shift: '\u0ea9' + capslock: '\u0ea9' + capslock+shift: '\u0e87' + ralt: '\u0ee0' + } + +key S { + label: '\u0ec0' + base: '\u0ec0' + shift: '\u0e96' + capslock: '\u0e96' + capslock+shift: '\u0ec0' + ralt: '\u25cc' + } + +key D { + label: '\u0ea3' + base: '\u0ea3' + shift: '\u0ec1' + capslock: '\u0ec1' + capslock+shift: '\u0ea3' + ralt: '\u20ad' + } + +key F { + label: '\u0e99' + base: '\u0e99' + shift: '\u0e8a' + capslock: '\u0e8a' + capslock+shift: '\u0e99' + ralt: '\u0edc' + } + +key G { + label: '\u0ea1' + base: '\u0ea1' + shift: '\u0e9e' + capslock: '\u0e9e' + capslock+shift: '\u0ea1' + ralt: '\u0edd' + } + +key H { + label: '\u0ead' + base: '\u0ead' + shift: '\u0ecd' + capslock: '\u0ecd' + capslock+shift: '\u0ead' + } + +key J { + label: '\u0eb2' + base: '\u0eb2' + shift: '\u0eb3' + capslock: '\u0eb3' + capslock+shift: '\u0eb2' + } + +key K { + label: '\u0ec8' + base: '\u0ec8' + shift: '\u0e82' + capslock: '\u0e82' + capslock+shift: '\u0ec8' + ralt: '\u0e83' + } + +key L { + label: '\u0ec9' + base: '\u0ec9' + shift: '\u0ec2' + capslock: '\u0ec2' + capslock+shift: '\u0ec9' + ralt: '\u0ee3' + } + +key SEMICOLON { + label: '\u0ea7' + base: '\u0ea7' + shift: '\u0ea0' + capslock: '\u0ea0' + capslock+shift: '\u0ea7' + ralt: '\u003b' + ralt+shift: '\u003a' + } + +key APOSTROPHE { + label: '\u0eb7' + base: '\u0eb7' + shift: '\u0022' + capslock: '\u0022' + capslock+shift: '\u0eb7' + ralt: '\u0027' + ralt+shift: '\u0022' + } + +key BACKSLASH { + label: '\u0ec6' + base: '\u0ec6' + shift: '\u0eaf' + capslock: '\u0eaf' + capslock+shift: '\u0ec6' + ralt: '\u005c' + ralt+shift: '\u007c' + } + +key Z { + label: '\u0eb8' + base: '\u0eb8' + shift: '\u0ebc' + capslock: '\u0ebc' + capslock+shift: '\u0eb8' + ralt: '\u0ea6' + } + +key X { + label: '\u0ec4' + base: '\u0ec4' + shift: '\u0e9d' + capslock: '\u0e9d' + capslock+shift: '\u0ec4' + ralt: '\u0ea4' + } + +key C { + label: '\u0e97' + base: '\u0e97' + shift: '\u0e9c' + capslock: '\u0e9c' + capslock+shift: '\u0e97' + ralt: '\u0e8c' + } + +key V { + label: '\u0e8d' + base: '\u0e8d' + shift: '\u0e93' + capslock: '\u0e93' + capslock+shift: '\u0e8d' + ralt: '\u0edf' + } + +key B { + label: '\u0e88' + base: '\u0e88' + shift: '\u0eca' + capslock: '\u0eca' + capslock+shift: '\u0e88' + } + +key N { + label: '\u0e84' + base: '\u0e84' + shift: '\u0ecb' + capslock: '\u0ecb' + capslock+shift: '\u0e84' + ralt: '\u0e85' + } + +key M { + label: '\u0eb5' + base: '\u0eb5' + shift: '\u0ecc' + capslock: '\u0ecc' + capslock+shift: '\u0eb5' + ralt: '\u0ece' + } + +key COMMA { + label: '\u0e94' + base: '\u0e94' + shift: '\u0ea8' + capslock: '\u0ea8' + capslock+shift: '\u0e94' + ralt: '\u002c' + ralt+shift: '\u003c' + } + +key PERIOD { + label: '\u0eb0' + base: '\u0eb0' + shift: '\u0e90' + capslock: '\u0e90' + capslock+shift: '\u0eb0' + ralt: '\u002e' + ralt+shift: '\u003e' + } + +key SLASH { + label: '\u0eb9' + base: '\u0eb9' + shift: '\u003f' + capslock: '\u003f' + capslock+shift: '\u0eb9' + ralt: '\u002f' + ralt+shift: '\u003f' + } + +key SPACE { + label: '\u0020' + base: '\u0020' + shift: '\u200b' + capslock: '\u200b' + capslock+shift: '\u0020' + ralt: '\u0020' + ralt+shift: '\u0020' + } + +key NUMPAD_COMMA { + label: '\u002c' + base: '\u002c' + shift: '\u002e' + capslock: '\u002e' + capslock+shift: '\u002c' + ralt: '\u002c' + ralt+shift: '\u002c' + } diff --git a/output/Manoonchai_Lao/Manoonchai_Lao.keylayout b/output/Manoonchai_Lao/Manoonchai_Lao.keylayout new file mode 100644 index 0000000..078660c --- /dev/null +++ b/output/Manoonchai_Lao/Manoonchai_Lao.keylayout @@ -0,0 +1,683 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/output/Manoonchai_Lao/Manoonchai_Lao_xkb b/output/Manoonchai_Lao/Manoonchai_Lao_xkb new file mode 100644 index 0000000..3204a33 --- /dev/null +++ b/output/Manoonchai_Lao/Manoonchai_Lao_xkb @@ -0,0 +1,60 @@ +partial alphanumeric_keys +xkb_symbols "LaoMnc" { + + // COPYRIGHT "MIT" + + name[Group1]= "Lao (Manoonchai Lao-Pali v1.0)"; + + + key { [ 0x1000030, 0x1000029, 0x1000ed0,voidsymbol] }; + key { [ 0x1000031, 0x1000021, 0x1000ed1, 0x1000021] }; + key { [ 0x1000032, 0x1000040, 0x1000ed2, 0x1000040] }; + key { [ 0x1000033, 0x1000023, 0x1000ed3, 0x1000023] }; + key { [ 0x1000034, 0x1000024, 0x1000ed4, 0x1000024] }; + key { [ 0x1000035, 0x1000025, 0x1000ed5, 0x1000025] }; + key { [ 0x1000036, 0x100002c, 0x1000ed6, 0x100005e] }; + key { [ 0x1000037, 0x1000026, 0x1000ed7, 0x1000026] }; + key { [ 0x1000038, 0x100002e, 0x1000ed8, 0x100002a] }; + key { [ 0x1000039, 0x1000028, 0x1000ed9,voidsymbol] }; + key { [ 0x100002d, 0x100005f, 0x10000f7,voidsymbol] }; + key { [ 0x100003d, 0x100002b, 0x10000d7,voidsymbol] }; + key { [ 0x1000060, 0x100007e, 0x1000060,voidsymbol] }; + key { [ 0x1000ec3, 0x1000e92,voidsymbol,voidsymbol] }; + key { [ 0x1000e95, 0x1000e8f, 0x1000078,voidsymbol] }; + key { [ 0x1000eab, 0x1000ea2, 0x1000ee1,voidsymbol] }; + key { [ 0x1000ea5, 0x1000e8e, 0x1000ee2,voidsymbol] }; + key { [ 0x1000eaa, 0x1000e9f,voidsymbol,voidsymbol] }; + key { [ 0x1000e9b, 0x1000e89,voidsymbol,voidsymbol] }; + key { [ 0x1000eb1, 0x1000eb6, 0x1000eba,voidsymbol] }; + key { [ 0x1000e81, 0x1000eae, 0x1000ede,voidsymbol] }; + key { [ 0x1000eb4, 0x1000ebd,voidsymbol,voidsymbol] }; + key { [ 0x1000e9a, 0x1000e98,voidsymbol,voidsymbol] }; + key { [ 0x1000ebb, 0x1000e86, 0x100005b, 0x100007b] }; + key { [ 0x1000eac, 0x1000e91, 0x100005d, 0x100007d] }; + key { [ 0x1000e87, 0x1000ea9, 0x1000ee0,voidsymbol] }; + key { [ 0x1000ec0, 0x1000e96, 0x10025cc,voidsymbol] }; + key { [ 0x1000ea3, 0x1000ec1, 0x10020ad,voidsymbol] }; + key { [ 0x1000e99, 0x1000e8a, 0x1000edc,voidsymbol] }; + key { [ 0x1000ea1, 0x1000e9e, 0x1000edd,voidsymbol] }; + key { [ 0x1000ead, 0x1000ecd,voidsymbol,voidsymbol] }; + key { [ 0x1000eb2, 0x1000eb3,voidsymbol,voidsymbol] }; + key { [ 0x1000ec8, 0x1000e82, 0x1000e83,voidsymbol] }; + key { [ 0x1000ec9, 0x1000ec2, 0x1000ee3,voidsymbol] }; + key { [ 0x1000ea7, 0x1000ea0, 0x100003b, 0x100003a] }; + key { [ 0x1000eb7, 0x1000022, 0x1000027, 0x1000022] }; + key { [ 0x1000ec6, 0x1000eaf, 0x100005c, 0x100007c] }; + key { [ 0x1000eb8, 0x1000ebc, 0x1000ea6,voidsymbol] }; + key { [ 0x1000ec4, 0x1000e9d, 0x1000ea4,voidsymbol] }; + key { [ 0x1000e97, 0x1000e9c, 0x1000e8c,voidsymbol] }; + key { [ 0x1000e8d, 0x1000e93, 0x1000edf,voidsymbol] }; + key { [ 0x1000e88, 0x1000eca,voidsymbol,voidsymbol] }; + key { [ 0x1000e84, 0x1000ecb, 0x1000e85,voidsymbol] }; + key { [ 0x1000eb5, 0x1000ecc, 0x1000ece,voidsymbol] }; + key { [ 0x1000e94, 0x1000ea8, 0x100002c, 0x100003c] }; + key { [ 0x1000eb0, 0x1000e90, 0x100002e, 0x100003e] }; + key { [ 0x1000eb9, 0x100003f, 0x100002f, 0x100003f] }; + key { [ 0x1000020, 0x100200b, 0x1000020, 0x1000020] }; + key { [ 0x100002c, 0x100002e, 0x100002c, 0x100002c] }; + + include "level3(ralt_switch)" +}; diff --git a/test/main.test.ts b/test/main.test.ts index 8ca198c..ad055a9 100644 --- a/test/main.test.ts +++ b/test/main.test.ts @@ -463,17 +463,27 @@ describe("generateKlc", () => { // 6 //Column 7 : Ctrl Alt // 7 //Column 8 : Shft Ctrl Alt + //expect(lines[6]).toEqual(`SHIFTSTATE`) + //expect(lines[7]).toEqual(`0\t// Column 4 : Base`) + //expect(lines[8]).toEqual(`1\t// Column 5 : Shift`) + //expect(lines[9]).toEqual(`6\t// Column 7 : AltGr`) + expect(lines[6]).toEqual(`SHIFTSTATE`) - expect(lines[7]).toEqual(`0\t// Column 4 : Base`) - expect(lines[8]).toEqual(`1\t// Column 5 : Shift`) - expect(lines[9]).toEqual(`6\t// Column 7 : AltGr`) + expect(lines[7]).toEqual(`0\t//Column 4 : Base`) + expect(lines[8]).toEqual(`1\t//Column 5 : Shft`) + expect(lines[9]).toEqual(`2\t//Column 6 : Ctrl`) + expect(lines[10]).toEqual(`6\t//Column 7 : Ctrl Alt`) + expect(lines[11]).toEqual(`7\t//Column 8 : Shft Ctrl Alt`) // Assert Layout - const layoutLineIdx = lines.indexOf(`LAYOUT`) - expect(lines[layoutLineIdx]).toEqual(`LAYOUT`) + //const layoutLineIdx = lines.indexOf(`LAYOUT`) + //expect(lines[layoutLineIdx]).toEqual(`LAYOUT`) - expect(lines[layoutLineIdx + 1]).toEqual(`0b\t0\t0\t0\t)\t๐\t0\t-1\t-1`) - expect(lines[layoutLineIdx + 2]).toEqual(`02\t1\t0\t1\t!\t๑\t1\t-1\t-1`) + //expect(lines[layoutLineIdx + 5]).toEqual(`0b\t0\t0\t0\t)\t๐\t0\t-1\t-1`) + //expect(lines[layoutLineIdx + 6]).toEqual(`02\t1\t0\t1\t!\t๑\t1\t-1\t-1`) + + expect(lines[15]).toEqual(`0b\t0\t0\t0030\t0029\t-1\t0e50\t-1`) + expect(lines[16]).toEqual(`02\t1\t0\t0031\t0021\t-1\t0e51\t-1`) // Assert ENDKBD expect(lines.slice(-1)).toEqual(["ENDKBD"])