From 7aba27ea51308ee4ed9f9572129e10878379f961 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Mon, 15 Nov 2021 00:27:46 +0900 Subject: [PATCH] apple russian keyboard --- assets/keylayout/ru_ru_jcuken.ime | 2 +- assets/keylayout/ru_ru_jcuken_apple.ime | 290 ++++++++++++++++++++++++ 2 files changed, 291 insertions(+), 1 deletion(-) create mode 100644 assets/keylayout/ru_ru_jcuken_apple.ime diff --git a/assets/keylayout/ru_ru_jcuken.ime b/assets/keylayout/ru_ru_jcuken.ime index f39dae744..b5b9abcaf 100644 --- a/assets/keylayout/ru_ru_jcuken.ime +++ b/assets/keylayout/ru_ru_jcuken.ime @@ -372,7 +372,7 @@ let diacriticsMapping = { } let inRange = (s,a,b) => (a <= s && s <= b) let isDiacritics = (s) => s !== undefined && inRange(s.charCodeAt(0), 0x0300, 0x036F) -return Object.freeze({"n":"Мног. ЙЦУКЕН","v":"none","c":"CuriousTo\uA75Bvald","m":"rewrite", +return Object.freeze({"n":"ЙЦУКЕН Многоязычна","v":"none","c":"CuriousTo\uA75Bvald","m":"rewrite", "t":states.keylayouts, // return: [displayed output, composed output] "accept":(headkey,shiftin,altgrin)=>{ diff --git a/assets/keylayout/ru_ru_jcuken_apple.ime b/assets/keylayout/ru_ru_jcuken_apple.ime new file mode 100644 index 000000000..b30756645 --- /dev/null +++ b/assets/keylayout/ru_ru_jcuken_apple.ime @@ -0,0 +1,290 @@ +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], +["ф","Ф","ƒ","ƒ"], +["и","И"], +["с","С","≠","≠"], +["в","В","ћ","Ћ"], +["у","У","ќ","Ќ"], +["а","А","÷","÷"], +["п","П","©","©"], +["р","Р","₽","₽"], +["ш","Ш","ѕ","Ѕ"], +["о","О","°","•"], +["л","Л","љ","Љ"], +["д","Д","Δ","Δ"], +["ь","Ь","~","~"], +["т","Т","™","™"], +["щ","Щ","ў","Ў"], +["з","З","‘","‘"], +["й","Й","ј","Ј"], +["к","К","®","®"], +["ы","Ы","¤","¤"], +["е","Е","†","†"], +["г","Г","ѓ","Ѓ"], +["м","М","µ","µ"], +["ц","Ц","џ","Џ"], +["ч","Ч","≈","≈"], +["н","Н","њ","Њ"], +["я","Я","ђ","Ђ"], +["б","Б","≤","<"], +["ю","Ю","≥",">"], +[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] +], +"code":0} // practically unused as long as there are no diacritics on the keyboard +let reset = () => { + states.code = 0 +} +let inRange = (s,a,b) => (a <= s && s <= b) +let isDiacritics = (s) => s !== undefined && inRange(s.charCodeAt(0), 0x0300, 0x036F) +return Object.freeze({"n":"ЙЦУКЕН (Рус. Apple)","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 + states.code = 1 + + let s = states.keylayouts[headkey][layer] + + if (isDiacritics(s)) { + return ['1', ''] + } + else { + reset() + return ['0', s] + } +}, +"backspace":()=>{ + reset() + return '' +}, +"end":()=>{ + reset() + return '' +}, +"reset":()=>{ reset() }, +"composing":()=>(states.code!=0) +}) \ No newline at end of file