mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-07 12:21:52 +09:00
bulgarian keyboard
This commit is contained in:
416
assets/keylayout/bg_bg_bds.ime
Normal file
416
assets/keylayout/bg_bg_bds.ime
Normal file
@@ -0,0 +1,416 @@
|
||||
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],
|
||||
["ь","Ь","ҧ","Ҧ"],
|
||||
["ф","Ф","ҩ","Ҩ"],
|
||||
["ъ","Ъ","ї","Ї"],
|
||||
["а","А","ҟ","Ҟ"],
|
||||
["е","Е","ҝ","Ҝ"],
|
||||
["о","О","ө","Ө"],
|
||||
["ж","Ж","џ","Џ"],
|
||||
["г","Г","ґ","Ґ"],
|
||||
["с","С","ҽ","Ҽ"],
|
||||
["т","Т","ћ","Ћ"],
|
||||
["н","Н","њ","Њ"],
|
||||
["в","В","ү","Ү"],
|
||||
["п","П","ҡ","Ҡ"],
|
||||
["х","Х","ҳ","Ҳ"],
|
||||
["д","Д","ђ","Ђ"],
|
||||
["з","З","ѕ","Ѕ"],
|
||||
[",","ы","і","І"],
|
||||
["и","И","\u0335","\u0321"], // strikethru, hook below
|
||||
["я","Я","ә","Ә"],
|
||||
["ш","Ш","ѓ","Ѓ"],
|
||||
["к","К","ќ","Ќ"],
|
||||
["э",'Э',"є","Є"],
|
||||
["у","У","ў","Ў"],
|
||||
["й","Й","ј","Ј"],
|
||||
["щ","Щ","ӡ","Ӡ"],
|
||||
["ю","Ю","ғ","Ғ"],
|
||||
["р","Р","«","„"],
|
||||
["л","Л","»","“"],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[" "],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
["\n"],
|
||||
["\x08"],
|
||||
["ё","Ё","ӏ","Ӏ"],
|
||||
["-","_","—","–"],
|
||||
[".","~","≠","±"],
|
||||
["ц","Ц","ҵ","Ҵ"],
|
||||
[";","§","\u0308","\u0306"], // diaresis, breve
|
||||
[")","(","\\","|"],
|
||||
["м","М","\u0329","\u0301"], // "descender", acute
|
||||
["ч","Ч","һ","Һ"],
|
||||
["б","Б","љ","Љ"],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[undefined],
|
||||
[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 diacriticsAcute = {
|
||||
"Е":"Ѐ",
|
||||
"Г":"Ѓ",
|
||||
"К":"Ќ",
|
||||
"И":"Ѝ",
|
||||
|
||||
"е":"ѐ",
|
||||
"г":"ѓ",
|
||||
"к":"ќ",
|
||||
"и":"ѝ"
|
||||
}
|
||||
let diacriticsDescender = {
|
||||
"Ж":"Җ",
|
||||
"З":"Ҙ",
|
||||
"К":"Қ",
|
||||
"Н":"Ң",
|
||||
"С":"Ҫ",
|
||||
"Т":"Ҭ",
|
||||
"Х":"Ҳ",
|
||||
"Ч":"Ҷ",
|
||||
"Ҽ":"Ҿ",
|
||||
"Г":"Ӷ",
|
||||
"Ғ":"Ӻ",
|
||||
"П":"Ԥ",
|
||||
"Һ":"Ԧ",
|
||||
|
||||
"ж":"җ",
|
||||
"з":"ҙ",
|
||||
"к":"қ",
|
||||
"н":"ң",
|
||||
"с":"ҫ",
|
||||
"т":"ҭ",
|
||||
"х":"ҳ",
|
||||
"ч":"ҷ",
|
||||
"ҽ":"ҿ",
|
||||
"г":"ӷ",
|
||||
"ғ":"ӻ",
|
||||
"п":"ԥ",
|
||||
"һ":"ԧ"
|
||||
}
|
||||
let diacriticsStrikethru = {
|
||||
"Г":"Ғ",
|
||||
"К":"Ҟ",
|
||||
"Ү":"Ұ",
|
||||
"Х":"Ӿ",
|
||||
|
||||
"г":"ғ",
|
||||
"к":"ҟ",
|
||||
"ү":"ұ",
|
||||
"х":"ӿ"
|
||||
}
|
||||
let diacriticsHookBelow = {
|
||||
"Г":"Ҕ",
|
||||
"П":"Ҧ",
|
||||
"К":"Ӄ",
|
||||
"Н":"Ӈ",
|
||||
"Ғ":"Ӻ",
|
||||
"Х":"Ӽ",
|
||||
|
||||
"г":"ҕ",
|
||||
"п":"ҧ",
|
||||
"к":"ӄ",
|
||||
"н":"ӈ",
|
||||
"ғ":"ӻ",
|
||||
"х":"ӽ"
|
||||
}
|
||||
let diacriticsDiaresis = {
|
||||
"А":"Ӓ",
|
||||
"Ә":"Ӛ",
|
||||
"Ж":"Ӝ",
|
||||
"З":"Ӟ",
|
||||
"И":"Ӥ",
|
||||
"О":"Ӧ",
|
||||
"Ө":"Ӫ",
|
||||
"Э":"Ӭ",
|
||||
"У":"Ӱ",
|
||||
"Ч":"Ӵ",
|
||||
"Ы":"Ӹ",
|
||||
|
||||
"а":"ӓ",
|
||||
"ә":"ӛ",
|
||||
"ж":"ӝ",
|
||||
"з":"ӟ",
|
||||
"и":"ӥ",
|
||||
"о":"ӧ",
|
||||
"ө":"ӫ",
|
||||
"э":"ӭ",
|
||||
"у":"ӱ",
|
||||
"ч":"ӵ",
|
||||
"ы":"ӹ"
|
||||
}
|
||||
let diacriticsBreve = {
|
||||
"Ж":"Ӂ",
|
||||
"А":"Ӑ",
|
||||
"Е":"Ӗ",
|
||||
"И":"Ӣ",
|
||||
"У":"Ӯ",
|
||||
|
||||
"ж":"ӂ",
|
||||
"а":"ӑ",
|
||||
"е":"ӗ",
|
||||
"и":"ӣ",
|
||||
"у":"ӯ"
|
||||
}
|
||||
let diacriticsMapping = {
|
||||
"\u0329":diacriticsDescender,
|
||||
"\u0301":diacriticsAcute,
|
||||
"\u0308":diacriticsDiaresis,
|
||||
"\u0306":diacriticsBreve,
|
||||
"\u0335":diacriticsStrikethru,
|
||||
"\u0321":diacriticsHookBelow
|
||||
}
|
||||
let inRange = (s,a,b) => (a <= s && s <= b)
|
||||
let isDiacritics = (s) => s !== undefined && inRange(s.charCodeAt(0), 0x0300, 0x036F)
|
||||
return Object.freeze({"n":"\uDBBF\uDFC1Бъл. Многоезична\uDBBF\uDFC0","v":"none","c":"CuriousTo\uA75Bvald","m":"rewrite",
|
||||
"t":states.keylayouts,
|
||||
// return: [displayed output, composed output]
|
||||
"accept":(headkey,shiftin,altgrin)=>{
|
||||
let layer = 1*shiftin + 2*altgrin
|
||||
|
||||
let s = states.keylayouts[headkey][layer]
|
||||
|
||||
// typing seq for diacritics: diacritics THEN a character
|
||||
if (isDiacritics(s)) {
|
||||
states.code = s
|
||||
return ['0', ' '+s] // todo: insert diacritics placeholder char
|
||||
}
|
||||
else {
|
||||
// has diacritecs
|
||||
if (states.code != '') {
|
||||
if (diacriticsMapping[states.code] == undefined) {
|
||||
reset()
|
||||
return ['0','']
|
||||
}
|
||||
let composed = diacriticsMapping[states.code][s]
|
||||
reset()
|
||||
return ['2', composed || s]
|
||||
}
|
||||
// nope!
|
||||
else {
|
||||
reset()
|
||||
return ['0', s]
|
||||
}
|
||||
}
|
||||
},
|
||||
"backspace":()=>{
|
||||
reset()
|
||||
return ''
|
||||
},
|
||||
"end":()=>{
|
||||
reset()
|
||||
return ''
|
||||
},
|
||||
"reset":()=>{ reset() },
|
||||
"composing":()=>(states.code!='')
|
||||
})
|
||||
Reference in New Issue
Block a user