mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-16 00:26:07 +09:00
318 lines
5.1 KiB
Plaintext
318 lines
5.1 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],
|
||
["a","A"],
|
||
["b","B"],
|
||
["c","C"],
|
||
["d","D"],
|
||
["e","E"],
|
||
["f","F"],
|
||
["g","G"],
|
||
["h","H"],
|
||
["i","I"],
|
||
["j","J"],
|
||
["k","K"],
|
||
["l","L"],
|
||
["m","M"],
|
||
["n","N"],
|
||
["o","O"],
|
||
["p","P"],
|
||
["q","Q"],
|
||
["r","R"],
|
||
["s","S"],
|
||
["t","T"],
|
||
["u","U"],
|
||
["v","V"],
|
||
["w","W"],
|
||
["x","X"],
|
||
["y","Y"],
|
||
["z","Z"],
|
||
[",","《"],
|
||
["。","》"],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[" ", " "],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
["\n"],
|
||
["\x08"],
|
||
["·","~"],
|
||
["-","—"],
|
||
["=","+"],
|
||
["「","{"],
|
||
["」","}"],
|
||
["、","|"],
|
||
[";",":"],
|
||
["'",'"'],
|
||
["/","?"],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[undefined],
|
||
[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]
|
||
],
|
||
"dict":IMEProvider.requestDictionary("cj5-tc.han"),
|
||
"code":0, //0: not composing, 1: composing (has candidates), 2: composing (no candidates)
|
||
"buf":"",
|
||
"candidates":""/*comma-separated values*/}
|
||
let reset = () => {
|
||
states.code = 0
|
||
states.buf = ""
|
||
states.candidates = ""
|
||
}
|
||
let getCandidatesUsingBuf = () => {
|
||
states.candidates = states.dict.getCangjie(states.buf) // comma-separated values
|
||
states.code = 1 + (states.candidates.length == 0)
|
||
// console.log(`cangjie in, buf: ${states.buf}, candidates: ${states.candidates}`)
|
||
return `${states.buf},${states.candidates}`
|
||
}
|
||
return Object.freeze({"n":"五倉正體 Qwerty","states":states,"c":"CuriousTo\uA75Bvald, 倉頡之友 。馬來西亞 http://www.chinesecj.com",
|
||
// return: [displayed output, composed output]
|
||
"accept":(headkey,shiftin,altgrin)=>{
|
||
let layer = 1*shiftin// + 2*altgrin
|
||
|
||
let cjkey = states.keylayouts[headkey][layer]
|
||
let cjkeyAsc = cjkey.codePointAt(0)
|
||
|
||
if (states.code == 1 && 48 <= cjkeyAsc && cjkeyAsc <= 57) {
|
||
let raw = ''+states.buf
|
||
let selection = states.candidates.split(',')[cjkeyAsc - 49]
|
||
reset()
|
||
return ['', selection || raw]
|
||
}
|
||
else if (1 == states.code && " " == cjkey) {
|
||
let ret = (1 == states.code) ? states.candidates[0] : (''+states.buf)
|
||
reset()
|
||
return ['', ret]
|
||
}
|
||
else if (states.code < 2 && states.buf.length < 5 && 97 <= cjkeyAsc && cjkeyAsc <= 122 || cjkeyAsc == 42) {
|
||
states.buf += cjkey
|
||
return [getCandidatesUsingBuf(), '']
|
||
}
|
||
else {
|
||
let ret = ''+states.buf+cjkey
|
||
reset()
|
||
return ['', ret]
|
||
}
|
||
},
|
||
"backspace":()=>{
|
||
if (states.buf.length <= 1) {
|
||
reset()
|
||
return ''
|
||
}
|
||
|
||
states.buf = states.buf.substring(0, states.buf.length - 1)
|
||
return getCandidatesUsingBuf()
|
||
},
|
||
"end":()=>{
|
||
let ret = (1 == states.code) ? states.candidates[0] : (''+states.buf)
|
||
reset()
|
||
return ret
|
||
},
|
||
"reset":()=>{ reset() },
|
||
"composing":()=>(states.code!=0),
|
||
"maxCandidates":()=>10
|
||
}) |