mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-07 12:21:52 +09:00
290 lines
4.4 KiB
Plaintext
290 lines
4.4 KiB
Plaintext
let states = {"keylayouts":[[""],[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
["0",")"],
|
|
["1","!"],
|
|
["2","@"],
|
|
["3","#"],
|
|
["4","$"],
|
|
["5","%"],
|
|
["6","^"],
|
|
["7","&"],
|
|
["8","*"],
|
|
["9","("],
|
|
["*"],
|
|
["#"],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
["\u0B85","\u0BF9"],
|
|
["\u0B99","\u0BF7"],
|
|
["\u0B92","\u0BF5","\u0BCA"],
|
|
["\u0B89","\u0BF8","\u0BC1"],
|
|
["\u0B8A","\u0B9C","\u0BC2"],
|
|
["\u0BCD","\u0B83"],
|
|
["\u0B8E","\u0B8E","\u0BC6"],
|
|
["\u0B95","\u0B95"],
|
|
["\u0BA9","\u0BA9"],
|
|
["\u0BAA","\u0BAA"],
|
|
["\u0BAE",'"'],
|
|
["\u0BA4",":"],
|
|
["\u0BB0","/"],
|
|
["\u0BB2","\u0BB2"],
|
|
["\u0B9F","["],
|
|
["\u0BA3","]"],
|
|
["\u0B86","\u0BB8","\u0BBE"],
|
|
["\u0B90","\u0BB9","\u0BC8"],
|
|
["\u0B87","\u0BFA","\u0BBF"],
|
|
["\u0B8F","\u0B95\u0BCD\u0BB7","\u0BC7"],
|
|
["\u0BB1","\u0BB1"],
|
|
["\u0BB5","\u0BF6"],
|
|
["\u0B88","\u0BB7","\u0BC0"],
|
|
["\u0B93","\u0BF4","\u0BCB"],
|
|
["\u0BB3","\u0BB8\u0BCD\u0BB0\u0BC0"],
|
|
["\u0B94","\u0BF3","\u0BCC"],
|
|
[",","<"],
|
|
[".",">"],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[" "],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
["\n"],
|
|
["\x08"],
|
|
["`","~"],
|
|
["-","_"],
|
|
["=","+"],
|
|
["\u0B9A","{"],
|
|
["\u0B9E","}"],
|
|
["\\","|"],
|
|
["\u0BA8",";"],
|
|
["\u0BAF","'"],
|
|
["\u0BB4","?"],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[undefined],
|
|
[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":""} // the last character typed
|
|
let reset = () => {
|
|
states.code = ""
|
|
}
|
|
let inRange = (s,a,b) => (a <= s && s <= b)
|
|
let isConsonant = (s) => s !== undefined && (inRange(s, 0x0B95, 0x0BB9) || s == 0x0BD0 || inRange(s, 0x0BE6, 0x0BFA)) // determines the behaviour of the vowel key
|
|
return Object.freeze({"n":"தமிழ் 99","v":"none","c":"CuriousTo\uA75Bvald","m":"rewrite",
|
|
"t":states.keylayouts,
|
|
"l":"taIN",
|
|
// return: [delete count, composed output]
|
|
"accept":(headkey,shiftin,altgrin)=>{
|
|
let layer = 1*shiftin
|
|
|
|
let s = states.keylayouts[headkey][layer] || states.keylayouts[headkey][0]
|
|
|
|
if (layer == 0 && states.code != "" && isConsonant(states.code.charCodeAt(states.code.length - 1))) {
|
|
s = states.keylayouts[headkey][2] || states.keylayouts[headkey][0]
|
|
}
|
|
|
|
states.code = s
|
|
|
|
return ['0', s]
|
|
},
|
|
"backspace":()=>{
|
|
reset()
|
|
return ''
|
|
},
|
|
"end":()=>{
|
|
reset()
|
|
return ''
|
|
},
|
|
"reset":()=>{ reset() },
|
|
"composing":()=>(states.code!='')
|
|
}) |