thai kedmanee keyboard

This commit is contained in:
minjaesong
2021-11-16 17:29:18 +09:00
parent 36b012b11f
commit 332b98857e
2 changed files with 325 additions and 37 deletions

View File

@@ -0,0 +1,288 @@
let states = {"keylayouts":[[""],[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
["\u0E08","\u0E57","0",")"],
["\u0E45","+","1","!"],
["/","\u0E51","2","@"],
["-","\u0E52","3","#"],
["\u0E20","\u0E53","4","$"],
["\u0E16","\u0E54","5","%"],
["\u0E38","\u0E39","6","^"],
["\u0E36","\u0E3F","7","&"],
["\u0E04","\u0E55","8","*"],
["\u0E15","\u0E56","9","("],
["*"],
["#"],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
["\u0E1F","\u0E24"],// A
["\u0E34","\u0E3A"],// B
["\u0E41","\u0E09"],// C
["\u0E01","\u0E0F"],// D
["\u0E33","\u0E0E"],// E
["\u0E14","\u0E42"],// F
["\u0E40","\u0E0C"],// G
["\u0E49","\u0E47"],// H
["\u0E23","\u0E13"],// I
["\u0E48","\u0E4B"],// J
["\u0E32","\u0E29"],// K
["\u0E2A","\u0E28"],// L
["\u0E17","?"],// M
["\u0E37","\u0E4C"],// N
["\u0E19","\u0E2F"],// O
["\u0E22","\u0E0D"],// P
["\u0E46","\u0E50"],// Q
["\u0E1E","\u0E11"],// R
["\u0E2B","\u0E06"],// S
["\u0E30","\u0E18"],// T
["\u0E35","\u0E4A"],// U
["\u0E2D","\u0E2E"],// V
["\u0E44",'"'],// W
["\u0E1B",")"],// X
["\u0E31","\u0E4D"],// Y
["\u0E1C","("],// Z
["\u0E21","\u0E12","\u0E5A","\u0E5A"],// <
["\u0E43","\u0E2C","\u0E4F","\u0E4F"],// >
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[" "],
[undefined],
[undefined],
[undefined],
["\n"],
["\x08"],
["_","%","¤","¤"],// ~
["\u0E02","\u0E58"],// -
["\u0E0A","\u0E59"],// =
["\u0E1A","\u0E10"],// [
["\u0E25",","],// ]
["\u0E03","\u0E05"],// \
["\u0E27","\u0E0B"],// ;
["\u0E07",'.'],// '
["\u0E1D","\u0E26","\u0E5B","\u0E5B"],// ?
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
["0"],
["1"],
["2"],
["3"],
["4"],
["5"],
["6"],
["7"],
["8"],
["9"],
["/"],
["*"],
["-"],
["+"],
["."],
["."],
["\n"],
["="],
["("],
[")"],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined]
],
"code":""} // practically unused as long as there are no diacritics on the keyboard
let reset = () => {
states.code = 0
}
let diacriticsMapping = {
}
let inRange = (s,a,b) => (a <= s && s <= b)
let isDiacritics = (s) => s !== undefined && inRange(s.charCodeAt(0), 0x0300, 0x036F)
return Object.freeze({"n":"แป้นพิมพ์เกษมณี","v":"none","c":"CuriousTo\uA75Bvald","m":"rewrite",
"t":states.keylayouts,
"l":"thTH",
// return: [displayed output, composed output]
"accept":(headkey,shiftin,altgrin)=>{
let layer = 1*shiftin + 2*altgrin // use AltGr to type conventional numbers
states.code = 0
let s = states.keylayouts[headkey][layer]
return ['0', s]
},
"backspace":()=>{
reset()
return ''
},
"end":()=>{
reset()
return ''
},
"reset":()=>{ reset() },
"composing":()=>(states.code!='')
})

View File

@@ -26,34 +26,34 @@ let states = {"keylayouts":[[""],[undefined],
[undefined], [undefined],
[undefined], [undefined],
[undefined], [undefined],
["\u0E49","\u0E4B"], ["\u0E49","\u0E4B"],// A
["\u0E34","\u0E31"], ["\u0E34","\u0E31"],// B
["\u0E25","\u0E10"], ["\u0E25","\u0E10"],// C
["\u0E07","\u0E33"], ["\u0E07","\u0E33"],// D
["\u0E22","\u0E46"], ["\u0E22","\u0E46"],// E
["\u0E01","\u0E13"], ["\u0E01","\u0E13"],// F
["\u0E31","\u0E4C"], ["\u0E31","\u0E4C"],// G
["\u0E35","\u0E37"], ["\u0E35","\u0E37"],// H
["\u0E21","\u0E0B"], ["\u0E21","\u0E0B"],// I
["\u0E32","\u0E1C"], ["\u0E32","\u0E1C"],// J
["\u0E19","\u0E0A"], ["\u0E19","\u0E0A"],// K
["\u0E40","\u0E42"], ["\u0E40","\u0E42"],// L
["\u0E2A","\u0E2E"], ["\u0E2A","\u0E2E"],// M
["\u0E04","\u0E28"], ["\u0E04","\u0E28"],// N
["\u0E27","\u0E16"], ["\u0E27","\u0E16"],// O
["\u0E41","\u0E12"], ["\u0E41","\u0E12"],// P
["\u0E47","\u0E4A"], ["\u0E47","\u0E4A"],// Q
["\u0E2D","\u0E0D"], ["\u0E2D","\u0E0D"],// R
["\u0E17","\u0E18"], ["\u0E17","\u0E18"],// S
["\u0E23","\u0E29"], ["\u0E23","\u0E29"],// T
["\u0E14","\u0E1D"], ["\u0E14","\u0E1D"],// U
["\u0E2B","\u0E20"], ["\u0E2B","\u0E20"],// V
["\u0E15","\u0E24"], ["\u0E15","\u0E24"],// W
["\u0E1B","\u0E0F"], ["\u0E1B","\u0E0F"],// X
["\u0E48","\u0E36"], ["\u0E48","\u0E36"],// Y
["\u0E1A","\u0E0E"], ["\u0E1A","\u0E0E"],// Z
["\u0E30","\u0E1F","\u0E5A","\u0E5A"], ["\u0E30","\u0E1F","\u0E5A","\u0E5A"],// <
["\u0E08","\u0E09","\u0E4F","\u0E4F"], ["\u0E08","\u0E09","\u0E4F","\u0E4F"],// >
[undefined], [undefined],
[undefined], [undefined],
[undefined], [undefined],
@@ -65,15 +65,15 @@ let states = {"keylayouts":[[""],[undefined],
[undefined], [undefined],
["\n"], ["\n"],
["\x08"], ["\x08"],
["_","฿"], ["_","฿","¤","¤"],// ~
["๑","-"], ["๑","-"],// -
["๖","%"], ["๖","%"],// =
["\u0E43","\u0E2F"], ["\u0E43","\u0E2F"],// [
["\u0E0C","\u0E26"], ["\u0E0C","\u0E26"],// ]
["\u0E4E","\u0E4D"], ["\u0E4E","\u0E4D"],// \
["\u0E44","\u0E06"], ["\u0E44","\u0E06"],// ;
["\u0E02","\u0E11"], ["\u0E02","\u0E11"],// '
["\u0E1E","\u0E2C","\u0E5B","\u0E5B"], ["\u0E1E","\u0E2C","\u0E5B","\u0E5B"],// ?
[undefined], [undefined],
[undefined], [undefined],
[undefined], [undefined],