diff options
Diffstat (limited to 'www/wiki/extensions/UniversalLanguageSelector/lib/jquery.ime/rules/km/km-nidakyk.js')
-rw-r--r-- | www/wiki/extensions/UniversalLanguageSelector/lib/jquery.ime/rules/km/km-nidakyk.js | 269 |
1 files changed, 269 insertions, 0 deletions
diff --git a/www/wiki/extensions/UniversalLanguageSelector/lib/jquery.ime/rules/km/km-nidakyk.js b/www/wiki/extensions/UniversalLanguageSelector/lib/jquery.ime/rules/km/km-nidakyk.js new file mode 100644 index 00000000..cf591b78 --- /dev/null +++ b/www/wiki/extensions/UniversalLanguageSelector/lib/jquery.ime/rules/km/km-nidakyk.js @@ -0,0 +1,269 @@ +( function ( $ ) { + 'use strict'; + + // This is an implementation of NiDA standard Khmer Unicode keyboard v1.0, + // with some key combinations to normalize or correct combining sequences + var kmNIDA = { + id: 'km-nidakyk', + name: 'ក្តារចុចយូនីកូដខ្មែរ (NiDA)', + description: 'NiDA Standard Khmer Unicode Keyboard', + date: '2016-07-07', + URL: 'http://www.nida.gov.kh/files/documents/How_to_type_Khmer_Unicode_ver1_1km.pdf', + author: 'Ang Iongchun', + license: 'Public domain', + version: '1.0', + + // previous input keys to memory, for contextual rules + contextLength: 1, // default: 0 + + // previous output to memory, for normalization of consonant + // shifters + // maxKeyLength: 7, // default: 1 + + // Shift-Space has the same scan code with Space, + // hence the rule here + patterns_shift: [ + [ ' ', ' ' ] // normal space + ], + + patterns: [ + // NOTE: Contextual rules must appear before rules + // without context to avoid collisions. + // Make sure contextLength is large enough for + // these rules. + + // Khmer uses a lot of U+200B, zero width space, + // so ignore it in this file + + /* eslint-disable no-irregular-whitespace */ + + // correction for two-part dependent vowels + [ '\u17c1a', 'e', '\u17c4' ], // េ + ា -> ោ (o) + [ '\u17b6e', 'a', '\u17c4' ], // ា + េ -> ោ (o) + [ '\u17c1I', 'e', '\u17be' ], // េ + ី -> ើ (;) + [ '\u17b8e', 'I', '\u17be' ], // ី + េ -> ើ (;) + + // normalize common combination of dependent vowels and + // modifiers + [ '\u17c6a', 'M', '\u17b6\u17c6' ], // ាំ, Ma -> aM + [ '\u17c6u', 'M', '\u17bb\u17c6' ], // ុំ, Mu -> uM + [ '\u17c7e', 'H', '\u17c1\u17c7' ], // េះ, He -> eH + [ '\u17c7u', 'H', '\u17bb\u17c7' ], // ុះ, Hu -> uH + [ '\u17c7o', 'H', '\u17c4\u17c7' ], // ោះ, Ho -> oH + + // Unicode 4.0: normalize consonant shifter before + // subscript consonants and their optional following + // robats: (SR?)+Z?C -> Z?C(SR?)+ + /* XXX: Not compatible with Unicode 3.0, which places + consonant shifters after subscript consonants. + Make sure maxKeyLength is large enough for this rule. + [ '((?:\u17d2.\u17cc?)+)((:?\u200c|\u200d)?)/', '$2\u17ca$1' ], // ៊ + [ '((?:\u17d2.\u17cc?)+)((:?\u200c|\u200d)?)\"', '$2\u17c9$1' ], // ៉ + */ + + // consonants + [ 'q', 'ឆ' ], + [ 'r', 'រ' ], + [ 't', 'ត' ], + [ 'y', 'យ' ], + [ 'p', 'ផ' ], + [ 's', 'ស' ], + [ 'd', 'ដ' ], + [ 'f', 'ថ' ], + [ 'g', 'ង' ], + [ 'h', 'ហ' ], + [ 'j', '\u17d2' ], // coeng + [ 'k', 'ក' ], + [ 'l', 'ល' ], + [ 'z', 'ឋ' ], + [ 'x', 'ខ' ], + [ 'c', 'ច' ], + [ 'v', 'វ' ], + [ 'b', 'ប' ], + [ 'n', 'ន' ], + [ 'm', 'ម' ], + [ 'Q', 'ឈ' ], + [ 'T', 'ទ' ], + [ 'P', 'ភ' ], + [ 'D', 'ឌ' ], + [ 'F', 'ធ' ], + [ 'G', 'អ' ], + [ 'J', 'ញ' ], + [ 'K', 'គ' ], + [ 'L', 'ឡ' ], + [ 'Z', 'ឍ' ], + [ 'X', 'ឃ' ], + [ 'C', 'ជ' ], + [ 'B', 'ព' ], + [ 'N', 'ណ' ], + + // independent vowels + [ '-', 'ឥ' ], + [ '=', 'ឲ' ], + [ '\\]', 'ឪ' ], + [ '\\\\', 'ឮ' ], + [ 'R', 'ឬ' ], + [ '\\}', 'ឧ' ], + [ '\\|', 'ឭ' ], + + // dependent vowels and modifiers + [ 'w', '\u17b9' ], // ឹ + [ 'e', '\u17c1' ], // េ + [ 'u', '\u17bb' ], // ុ + [ 'i', '\u17b7' ], // ិ + [ 'o', '\u17c4' ], // ោ + [ 'a', '\u17b6' ], // ា + [ 'W', '\u17ba' ], // ឺ + [ 'E', '\u17c2' ], // ែ + [ 'Y', '\u17bd' ], // ួ + [ 'U', '\u17bc' ], // ូ + [ 'I', '\u17b8' ], // ី + [ 'O', '\u17c5' ], // ៅ + [ 'A', '\u17b6\u17c6' ], // ាំ + [ 'S', '\u17c3' ], // ៃ + [ 'H', '\u17c7' ], // ះ + [ 'V', '\u17c1\u17c7' ], // េះ + [ 'M', '\u17c6' ], // ំ + [ '\\[', '\u17c0' ], // ៀ + [ ';', '\u17be' ], // ើ + [ '\'', '\u17cb' ], // ់ + [ ',', '\u17bb\u17c6' ], // ុា + [ '/', '\u17ca' ], // ៊ + [ ':', '\u17c4\u17c7' ], // ោះ + [ '\"', '\u17c9' ], // ៉ + [ '<', '\u17bb\u17c7' ], // ុះ + [ '\\^', '\u17cd' ], // ៍ + [ '&', '\u17d0' ], // ័ + [ '\\*', '\u17cf' ], // ៏ + [ '_', '\u17cc' ], // ៌ + [ '\\{', '\u17bf' ], // ឿ + + // digits + [ '1', '១' ], + [ '2', '២' ], + [ '3', '៣' ], + [ '4', '៤' ], + [ '5', '៥' ], + [ '6', '៦' ], + [ '7', '៧' ], + [ '8', '៨' ], + [ '9', '៩' ], + [ '0', '០' ], + + // spaces + [ ' ', '\u200b' ], // ZWSP: zero-width space + + // symbols + [ '`', '«' ], + [ '\\.', '។' ], + [ '>', '៕' ], + [ '~', '»' ], + [ '\\!', '!' ], + [ '@', 'ៗ' ], + [ '#', '\"' ], + [ '\\$', '៛' ], + [ '%', '%' ], + [ '\\(', '(' ], + [ '\\)', ')' ], + [ '\\+', '=' ], + [ '\\?', '?' ] + ], + + // AltGr patterns + patterns_x: [ + // independent vowels + [ 'e', 'ឯ' ], + [ 'r', 'ឫ' ], + [ 'i', 'ឦ' ], + [ 'o', 'ឱ' ], + [ 'p', 'ឰ' ], + [ '\\[', 'ឩ' ], + [ '\\]', 'ឳ' ], + + // modifiers + [ '3', '\u17d1' ], // ៑ + [ '=', '\u17ce' ], // ៎ + [ '\'', '\u17c8' ], // ៈ + + // symbols + [ '2', '@' ], + [ '4', '$' ], + [ '5', '€' ], + [ '6', '៙' ], + [ '7', '៚' ], + [ '8', '*' ], + [ '9', '{' ], + [ '0', '}' ], + [ '-', 'x' ], + [ '\\\\', '\\' ], + [ ';', '៖' ], + [ ',', ',' ], + [ '\\.', '.' ], + [ '/', '/' ], + + // spaces + [ ' ', '\u00a0' ], // NBSP: non-breakable space + + // joiners + [ '`', '\u200d' ], // ZWJ: zero width joiner + [ '1', '\u200c' ], // ZWNJ: zero width non-joiner + + // old Khmer, Sanskrit, Pali + [ 'b', 'ឞ' ], + [ 'k', 'ឝ' ], + [ 't', 'ឨ' ], + [ 'q', 'ៜ' ], + [ 'w', '\u17dd' ], // ៝ + + /* eslint-enable no-irregular-whitespace */ + + // divination signs (digits) + [ '\\!', '៱' ], // shift-1 + [ '@', '៲' ], // shift-2 + [ '#', '៳' ], // shift-3 + [ '\\$', '៴' ], // shift-4 + [ '%', '៵' ], // shift-5 + [ '\\^', '៶' ], // shift-6 + [ '&', '៷' ], // shift-7 + [ '\\*', '៸' ], // shift-8 + [ '\\(', '៹' ], // shift-9 + [ '\\)', '៰' ], // shift-0 + + // lunar dates + [ 'Q', '᧠' ], // shift-q + [ 'W', '᧡' ], // shift-w + [ 'E', '᧢' ], // shift-e + [ 'R', '᧣' ], // shift-r + [ 'T', '᧤' ], // shift-t + [ 'Y', '᧥' ], // shift-y + [ 'U', '᧦' ], // shift-u + [ 'I', '᧧' ], // shift-i + [ 'O', '᧨' ], // shift-o + [ 'P', '᧩' ], // shift-p + [ '\\{', '᧪' ], // shift-[ + [ '\\}', '᧫' ], // shift-] + [ 'A', '᧬' ], // shift-a + [ 'S', '᧭' ], // shift-s + [ 'D', '᧮' ], // shift-d + [ 'F', '᧯' ], // shift-f + [ 'G', '᧰' ], // shift-g + [ 'H', '᧱' ], // shift-h + [ 'J', '᧲' ], // shift-j + [ 'K', '᧳' ], // shift-k + [ 'L', '᧴' ], // shift-l + [ ':', '᧵' ], // shift-; + [ '\"', '᧶' ], // shift-' + [ 'Z', '᧷' ], // shift-z + [ 'X', '᧸' ], // shift-x + [ 'C', '᧹' ], // shift-c + [ 'V', '᧺' ], // shift-v + [ 'B', '᧻' ], // shift-b + [ 'N', '᧼' ], // shift-n + [ 'M', '᧽' ], // shift-m + [ '<', '᧾' ], // shift-, + [ '>', '᧿' ] // shift-. + ] + }; + + $.ime.register( kmNIDA ); +}( jQuery ) ); |