mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-07 12:21:52 +09:00
320 lines
5.3 KiB
Plaintext
320 lines
5.3 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("cangjie5_dict/cj5-sc.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) // \x1E-separated values
|
||
states.code = 1 + (states.candidates.length == 0)
|
||
// console.log(`cangjie in, buf: ${states.buf}, candidates: ${states.candidates}`)
|
||
return `${states.buf}\u001E${states.candidates}`
|
||
}
|
||
return Object.freeze({"n":"五仓简体 Qwerty","v":"many","c":"CuriousTo\uA75Bvald, 倉頡之友 。馬來西亞 http://www.chinesecj.com","m":"candidates",
|
||
"t":states.keylayouts.map(it => [(it[2]||it[0]),it[1]]),
|
||
"l":"zhCN",
|
||
// return: [displayed output, composed output]
|
||
"accept":(headkey,shiftin,altgrin)=>{
|
||
let layer = 1*shiftin// + 2*altgrin
|
||
|
||
let cjkey = states.keylayouts[headkey][layer] || states.keylayouts[headkey][0]
|
||
let cjkeyAsc = cjkey.codePointAt(0)
|
||
|
||
if (states.code == 1 && 48 <= cjkeyAsc && cjkeyAsc <= 57) {
|
||
let raw = ''+states.buf
|
||
let selection = states.candidates.split('\u001E')[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)
|
||
})
|