diff --git a/assets/keylayout/th_th_pattachote.ime b/assets/keylayout/th_th_pattachote.ime new file mode 100644 index 000000000..109476311 --- /dev/null +++ b/assets/keylayout/th_th_pattachote.ime @@ -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!='') +}) \ No newline at end of file diff --git a/assets/locales/thTH/terrarum.json b/assets/locales/thTH/terrarum.json index baed0468c..86a990c95 100644 --- a/assets/locales/thTH/terrarum.json +++ b/assets/locales/thTH/terrarum.json @@ -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": "อนุภาค", diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIKeyboardInputConfig.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIKeyboardInputConfig.kt index 32a9a8250..9d34f9e8d 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIKeyboardInputConfig.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIKeyboardInputConfig.kt @@ -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)