thai pattachote keyboard

This commit is contained in:
minjaesong
2021-11-16 16:41:14 +09:00
parent 6521f45296
commit 5e8e8a64b6
3 changed files with 291 additions and 1 deletions

View File

@@ -0,0 +1,288 @@
let states = {"keylayouts":[[""],[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
["",")","0",")"],
["=","+","1","!"],
["๒",'"',"2","@"],
["๓","/","3","#"],
["๔",",","4","$"],
["๕","?","5","%"],
["\u0E39","\u0E38","6","^"],
["๗","_","7","&"],
["๘",".","8","*"],
["๙","(","9","("],
["*"],
["#"],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
["\u0E49","\u0E4B"],
["\u0E34","\u0E31"],
["\u0E25","\u0E10"],
["\u0E07","\u0E33"],
["\u0E22","\u0E46"],
["\u0E01","\u0E13"],
["\u0E31","\u0E4C"],
["\u0E35","\u0E37"],
["\u0E21","\u0E0B"],
["\u0E32","\u0E1C"],
["\u0E19","\u0E0A"],
["\u0E40","\u0E42"],
["\u0E2A","\u0E2E"],
["\u0E04","\u0E28"],
["\u0E27","\u0E16"],
["\u0E41","\u0E12"],
["\u0E47","\u0E4A"],
["\u0E2D","\u0E0D"],
["\u0E17","\u0E18"],
["\u0E23","\u0E29"],
["\u0E14","\u0E1D"],
["\u0E2B","\u0E20"],
["\u0E15","\u0E24"],
["\u0E1B","\u0E0F"],
["\u0E48","\u0E36"],
["\u0E1A","\u0E0E"],
["\u0E30","\u0E1F","\u0E5A","\u0E5A"],
["\u0E08","\u0E09","\u0E4F","\u0E4F"],
[undefined],
[undefined],
[undefined],
[undefined],
[undefined],
[" "],
[undefined],
[undefined],
[undefined],
["\n"],
["\x08"],
["_","฿"],
["๑","-"],
["๖","%"],
["\u0E43","\u0E2F"],
["\u0E0C","\u0E26"],
["\u0E4E","\u0E4D"],
["\u0E44","\u0E06"],
["\u0E02","\u0E11"],
["\u0E1E","\u0E2C","\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), 0x0E31, 0x0E31) || inRange(s.charCodeAt(0), 0x0E34, 0x0E3A) || inRange(s.charCodeAt(0), 0x0E47, 0x0E4E))
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

@@ -9,6 +9,7 @@
"MENU_LABEL_RESET" : "รีเซ็ต",
"MENU_LABEL_RESTART_REQUIRED": "ต้องเริ่มระบบใหม่",
"MENU_LABEL_KEYBOARD_LAYOUT": "รูปแบบแป้นพิมพ์",
"MENU_LABEL_IME": "วิธีการป้อนข้อมูล",
"MENU_OPTIONS_DITHER": "ปรับสีให้กลมกลืน",
"MENU_OPTIONS_BLUR": "มัว",
"MENU_OPTIONS_PARTICLES": "อนุภาค",

View File

@@ -268,7 +268,8 @@ private class UIItemInputKeycap(
}
private fun isDiacritic(c: Int) = c in 0x300..0x36F || c in 0x1AB0..0x1AFF ||
c in 0x1DC0..0x1DFF || c in 0x20D0..0x20FF || c in 0xFE20..0xFE2F
c in 0x1DC0..0x1DFF || c in 0x20D0..0x20FF || c in 0xFE20..0xFE2F ||
c == 0xE31 || c in 0xE34..0xE3A || c in 0xE47..0xE4E
override fun render(batch: SpriteBatch, camera: Camera) {
super.render(batch, camera)