From 7d63a713808ed0b5aa20287a7f4c5381547b36f4 Mon Sep 17 00:00:00 2001 From: Manassarn Manoonchai Date: Fri, 23 Jul 2021 22:22:33 +0700 Subject: [PATCH] feat: Manoonchai v1.0b --- input/Manoonchai-ColemakDH-Mod.json | 22 ++--- input/Manoonchai.json | 98 +++++++++---------- output/Manoonchai-ColemakDH-Mod.keylayout | 20 ++-- output/Manoonchai-ColemakDH-Mod.klc | Bin 2256 -> 2260 bytes output/Manoonchai.keylayout | 112 ++++++++++++++++++++++ output/Manoonchai.klc | Bin 1690 -> 1930 bytes output/test.klc | Bin 1690 -> 1930 bytes output/tmp.keylayout | 112 ++++++++++++++++++++++ test/main.test.ts | 21 ++-- 9 files changed, 306 insertions(+), 79 deletions(-) diff --git a/input/Manoonchai-ColemakDH-Mod.json b/input/Manoonchai-ColemakDH-Mod.json index 48e887c..a287fc2 100644 --- a/input/Manoonchai-ColemakDH-Mod.json +++ b/input/Manoonchai-ColemakDH-Mod.json @@ -1,6 +1,6 @@ { "name": "Manoonchai", - "version": "1.0", + "version": "1.0b", "language": "Thai", "layers": ["Base", "Shift", "Command", "Option", "Control"], "os": { @@ -12,16 +12,16 @@ }, "keys": { "`": ["`", "~", "`", "`", "`"], - "1": ["1", "!", "1", "1", "1"], - "2": ["2", "@", "2", "2", "2"], - "3": ["3", "#", "3", "3", "3"], - "4": ["4", "$", "4", "4", "4"], - "5": ["5", "%", "5", "5", "5"], - "6": ["6", "^", "6", "6", "6"], - "7": ["7", "&", "7", "7", "7"], - "8": ["8", "*", "8", "8", "8"], - "9": ["9", "(", "9", "9", "9"], - "0": ["0", ")", "0", "0", "0"], + "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", "q"], diff --git a/input/Manoonchai.json b/input/Manoonchai.json index 4c17625..f30a52f 100644 --- a/input/Manoonchai.json +++ b/input/Manoonchai.json @@ -1,8 +1,8 @@ { "name": "Manoonchai", - "version": "1.0", + "version": "1.0b", "language": "Thai", - "layers": ["Base", "Shift"], + "layers": ["Base", "Shift", "Option"], "license": "MIT", "os": { "windows": { @@ -12,52 +12,52 @@ } }, "keys": { - "`": ["`", "~"], - "1": ["1", "!"], - "2": ["2", "@"], - "3": ["3", "#"], - "4": ["4", "$"], - "5": ["5", "%"], - "6": ["6", "^"], - "7": ["7", "&"], - "8": ["8", "*"], - "9": ["9", "("], - "0": ["0", ")"], - "-": ["-", "_"], - "=": ["=", "+"], - "q": ["ใ", "ฒ"], - "w": ["ต", "ฏ"], - "e": ["ห", "ซ"], - "r": ["ล", "ญ"], - "t": ["ส", "ฟ"], - "y": ["ป", "ฉ"], - "u": ["ั", "ึ"], - "i": ["ก", "ธ"], - "o": ["ิ", "ฐ"], - "p": ["บ", "ฎ"], - "[": ["็", "ฆ"], - "]": ["ฬ", "ฑ"], - "\\": ["ฯ", "ฌ"], - "a": ["ง", "ษ"], - "s": ["เ", "ถ"], - "d": ["ร", "แ"], - "f": ["น", "ช"], - "g": ["ม", "พ"], - "h": ["อ", "ผ"], - "j": ["า", "ำ"], - "k": ["่", "ข"], - "l": ["้", "โ"], - ";": ["ว", "ภ"], - "'": ["ื", "\""], - "z": ["ุ", "ฤ"], - "x": ["ไ", "ฝ"], - "c": ["ท", "ๆ"], - "v": ["ย", "ณ"], - "b": ["จ", "๊"], - "n": ["ค", "๋"], - "m": ["ี", "์"], - ",": ["ด", "ศ"], - ".": ["ะ", "ฮ"], - "/": ["ู", "?"] + "`": ["`", "~", "`"], + "1": ["1", "!", "๑"], + "2": ["2", "@", "๒"], + "3": ["3", "#", "๓"], + "4": ["4", "$", "๔"], + "5": ["5", "%", "๕"], + "6": ["6", "^", "๖"], + "7": ["7", "&", "๗"], + "8": ["8", "*", "๘"], + "9": ["9", "(", "๙"], + "0": ["0", ")", "๐"], + "-": ["-", "_", "-"], + "=": ["=", "+", "="], + "q": ["ใ", "ฒ", "ใ"], + "w": ["ต", "ฏ", "ต"], + "e": ["ห", "ซ", "ห"], + "r": ["ล", "ญ", "ล"], + "t": ["ส", "ฟ", "ส"], + "y": ["ป", "ฉ", "ป"], + "u": ["ั", "ึ", "ั"], + "i": ["ก", "ธ", "ก"], + "o": ["ิ", "ฐ", "ิ"], + "p": ["บ", "ฎ", "บ"], + "[": ["็", "ฆ", "็"], + "]": ["ฬ", "ฑ", "ฬ"], + "\\": ["ฯ", "ฌ", "ฯ"], + "a": ["ง", "ษ", "ง"], + "s": ["เ", "ถ", "เ"], + "d": ["ร", "แ", "ร"], + "f": ["น", "ช", "น"], + "g": ["ม", "พ", "ม"], + "h": ["อ", "ผ", "อ"], + "j": ["า", "ำ", "า"], + "k": ["่", "ข", "่"], + "l": ["้", "โ", "้"], + ";": ["ว", "ภ", "ว"], + "'": ["ื", "\"", "ื"], + "z": ["ุ", "ฤ", "ุ"], + "x": ["ไ", "ฝ", "ไ"], + "c": ["ท", "ๆ", "ท"], + "v": ["ย", "ณ", "ย"], + "b": ["จ", "๊", "จ"], + "n": ["ค", "๋", "ค"], + "m": ["ี", "์", "ี"], + ",": ["ด", "ศ", "ด"], + ".": ["ะ", "ฮ", "ะ"], + "/": ["ู", "?", "ู"] } } diff --git a/output/Manoonchai-ColemakDH-Mod.keylayout b/output/Manoonchai-ColemakDH-Mod.keylayout index 0e23472..2e85ec3 100644 --- a/output/Manoonchai-ColemakDH-Mod.keylayout +++ b/output/Manoonchai-ColemakDH-Mod.keylayout @@ -368,18 +368,18 @@ - - - - - - + + + + + + - - + + - - + + diff --git a/output/Manoonchai-ColemakDH-Mod.klc b/output/Manoonchai-ColemakDH-Mod.klc index 1b8cdd967b53b258d3403cea765f6d1e4754bf0a..2f55b1630a7f65b1a2258cf8efc4447d86150f5d 100644 GIT binary patch delta 116 zcmca0ctvo66Jydu$BT?fn*|xU8JPn3Cd)A?Fa`2Wc3@Ia3F6~qFk;|j;AP-qFkmnN zvW$V)07@$Z>0rLeEkN}le3O>}sZhSjCxBEK-{e<7Dx7aJ53>SO1m9#mAQj2CIe@u= F6#y+k7A^n) delta 139 zcmca2ctLQ2(?pjGo5dKp7*z}yI2k~gmw^jN8v$8{P!SNV2LFR zcK|69hRLgdlqtjHGeF9WVe&g5WzH~JfLTGs0;mauAx0(wS(ZQyvIInHfa%R4%nhsn DTErD0 diff --git a/output/Manoonchai.keylayout b/output/Manoonchai.keylayout index 1f4cc4c..f18ddbc 100644 --- a/output/Manoonchai.keylayout +++ b/output/Manoonchai.keylayout @@ -11,6 +11,9 @@ + + + @@ -231,5 +234,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/output/Manoonchai.klc b/output/Manoonchai.klc index 311bb49db70d811bf4eb8a51c4a1cff0d9fac1c8..c84c162dab851b2a4b21487de488ec33e3c4e25f 100644 GIT binary patch literal 1930 zcmZ{lX-`u@7=>RA5sQKwsDMi;Ap6o%HWMPH1zKonp{#xoQ6ZA3n23J#r>oDIz5_&K zn#0UJ&$)AF-kHn&{cGKptY8V-wvTpXr&h5q_MYq1g_FcP!ad_B*2pF8hox=YChZ;B zR%;2$Th(fIU|UwQRVy-vMyhbN{a30&E@vBL8;O6Pa5-w3QS+qBw#*$l##;_|oimp) zMlN0%`)alnR+eIp@t0-J$5+z3jI?ES=2vCp#Knr@dg_c_vK5|DM>({7vDQiQ6a13Q z?aV&ecl%6zl9oj;(Gper#?v%b`ajue&(>MVsh!w)NYDN!J>%)BeIX~iTh6ld#l_V2qPnwb`r=}0`_Q(t z8T#U4YWvZSGp$x!Ozj)A>uip`xR}}(XwTU^eQ`0h!)V{x5q)tnwS(xunND|=eXQ7F zIGG#Ntd6Jb7&;7XqfQ^_$83%BcbQy(jGzVIU){Zl)aKg~b|2-#6Vsu>d(JxW@1PE6 zs<2M8?i<0sg+`pI!duSz@mo>9GgWxo*)aZdH0(?j)_bKfyYUmK+nFl7<1CFogVN4a z;gYj!_>a*wXR2`3Sr-2;$~sepYtFjx+fbJ??L@3#JRPg>8)(%tI;k-ePr@kt9vbz` zF`1k{qZxk)H9I@Ok2|=C{}3$(mI*b`|2Ng57e9x3o$2JSIP1i3L7mRDFRRXa@SmX` zXWEydvoZW9Xv~?`xaKT_KZP>Rv@h$e)LM3O~msp?p)(*gvXuva# z{b`(P<+a{fcq+6y&6)5f#BsC+W!|Enp>1TY?uF*7%mm}yMic%ly+N;?&EfZ8Bm5Qg$eH$V*I5ex0ZIin73Q$y>?Zyiy6H^y(0^{tvk8A4H96BB zR-8@am(jE{tv}X6U#$wic)r@n4Wf3>YENUf7QPrIuH&hiBsq>IJ*}$6v}T~0&BI@X QR#letB`a_m^!3&CAA97cM*si- delta 629 zcmX|>|Mii9ZO6eyym0!>Ggiy+Y; zS~vg)pg=TSfPdDL6!xsYZ)Wv-?T5u@|FQSf|0Hcq=-n!5Uu9KIHB?5`an+>e6$L3h zNMsAJDU$1^N_ZPGF{mr-PyXDcussSz5wqB3FpKY!YknG^ntmb`5cEEinrjk z%yGC=;Vtkb+IK=4I}zPGkz~4oKaid@ddl>Qo-ZfK)G$Zg7aziB&E5_38IFYK!Pltj zh7`NAIX=x}@dNmj%<+lG!iV4;n!0&@z!iO=>>jZ_agJGk@nKO_J~_W%F@ diff --git a/output/test.klc b/output/test.klc index 311bb49db70d811bf4eb8a51c4a1cff0d9fac1c8..c84c162dab851b2a4b21487de488ec33e3c4e25f 100644 GIT binary patch literal 1930 zcmZ{lX-`u@7=>RA5sQKwsDMi;Ap6o%HWMPH1zKonp{#xoQ6ZA3n23J#r>oDIz5_&K zn#0UJ&$)AF-kHn&{cGKptY8V-wvTpXr&h5q_MYq1g_FcP!ad_B*2pF8hox=YChZ;B zR%;2$Th(fIU|UwQRVy-vMyhbN{a30&E@vBL8;O6Pa5-w3QS+qBw#*$l##;_|oimp) zMlN0%`)alnR+eIp@t0-J$5+z3jI?ES=2vCp#Knr@dg_c_vK5|DM>({7vDQiQ6a13Q z?aV&ecl%6zl9oj;(Gper#?v%b`ajue&(>MVsh!w)NYDN!J>%)BeIX~iTh6ld#l_V2qPnwb`r=}0`_Q(t z8T#U4YWvZSGp$x!Ozj)A>uip`xR}}(XwTU^eQ`0h!)V{x5q)tnwS(xunND|=eXQ7F zIGG#Ntd6Jb7&;7XqfQ^_$83%BcbQy(jGzVIU){Zl)aKg~b|2-#6Vsu>d(JxW@1PE6 zs<2M8?i<0sg+`pI!duSz@mo>9GgWxo*)aZdH0(?j)_bKfyYUmK+nFl7<1CFogVN4a z;gYj!_>a*wXR2`3Sr-2;$~sepYtFjx+fbJ??L@3#JRPg>8)(%tI;k-ePr@kt9vbz` zF`1k{qZxk)H9I@Ok2|=C{}3$(mI*b`|2Ng57e9x3o$2JSIP1i3L7mRDFRRXa@SmX` zXWEydvoZW9Xv~?`xaKT_KZP>Rv@h$e)LM3O~msp?p)(*gvXuva# z{b`(P<+a{fcq+6y&6)5f#BsC+W!|Enp>1TY?uF*7%mm}yMic%ly+N;?&EfZ8Bm5Qg$eH$V*I5ex0ZIin73Q$y>?Zyiy6H^y(0^{tvk8A4H96BB zR-8@am(jE{tv}X6U#$wic)r@n4Wf3>YENUf7QPrIuH&hiBsq>IJ*}$6v}T~0&BI@X QR#letB`a_m^!3&CAA97cM*si- delta 629 zcmX|>|Mii9ZO6eyym0!>Ggiy+Y; zS~vg)pg=TSfPdDL6!xsYZ)Wv-?T5u@|FQSf|0Hcq=-n!5Uu9KIHB?5`an+>e6$L3h zNMsAJDU$1^N_ZPGF{mr-PyXDcussSz5wqB3FpKY!YknG^ntmb`5cEEinrjk z%yGC=;Vtkb+IK=4I}zPGkz~4oKaid@ddl>Qo-ZfK)G$Zg7aziB&E5_38IFYK!Pltj zh7`NAIX=x}@dNmj%<+lG!iV4;n!0&@z!iO=>>jZ_agJGk@nKO_J~_W%F@ diff --git a/output/tmp.keylayout b/output/tmp.keylayout index 1f4cc4c..f18ddbc 100644 --- a/output/tmp.keylayout +++ b/output/tmp.keylayout @@ -11,6 +11,9 @@ + + + @@ -231,5 +234,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/test/main.test.ts b/test/main.test.ts index fdf37b0..a5ee1e0 100644 --- a/test/main.test.ts +++ b/test/main.test.ts @@ -120,7 +120,7 @@ describe("generateLayout", () => { type: "element", name: "modifierMap", attributes: { id: "defaultModifierMap", defaultIndex: "0" }, - elements: [ + elements: expect.arrayContaining([ { type: "element", name: "keyMapSelect", @@ -153,7 +153,7 @@ describe("generateLayout", () => { }, ], }, - ], + ]), }) // @@ -371,7 +371,7 @@ describe("generateLayout", () => { type: "element", name: "keyMapSet", attributes: { id: "defaultKeyMapSet" }, - elements: [ + elements: expect.arrayContaining([ { type: "element", name: "keyMap", @@ -396,7 +396,7 @@ describe("generateLayout", () => { })) ), }, - ], + ]), }) // Test if escaped unicode works @@ -436,12 +436,14 @@ describe("generateKlc", () => { .filter(Boolean) // Assert file headers - expect(lines[0]).toEqual(`\ufeffKBD\tThaiMnc\t"Thai Manoonchai v1.0"`) + expect(lines[0]).toEqual( + expect.stringContaining(`\ufeffKBD\tThaiMnc\t"Thai Manoonchai v1.0`) + ) expect(lines[1]).toEqual(`COPYRIGHT\t"MIT"`) expect(lines[2]).toEqual(`COMPANY\t"Manoonchai"`) expect(lines[3]).toEqual(`LOCALENAME\t"th-TH"`) expect(lines[4]).toEqual(`LOCALEID\t"0000041e"`) - expect(lines[5]).toEqual(`VERSION\t1.0`) + expect(lines[5]).toEqual(expect.stringContaining(`VERSION\t1.0`)) // Assert Shiftstate // public enum ShiftState : int { @@ -464,12 +466,13 @@ describe("generateKlc", () => { 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(`7\t// Column 6 : Option`) // Assert Layout - expect(lines[9]).toEqual(`LAYOUT`) + expect(lines[10]).toEqual(`LAYOUT`) - expect(lines[10]).toEqual(`0b\t0\t0\t0\t)`) - expect(lines[11]).toEqual(`02\t1\t0\t1\t!`) + expect(lines[11]).toEqual(`0b\t0\t0\t0\t)\t๐`) + expect(lines[12]).toEqual(`02\t1\t0\t1\t!\t๑`) // Assert ENDKBD expect(lines.slice(-1)).toEqual(["ENDKBD"])