From 2162dbae34c68421f99ae703be1cdd50c5860a9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CToluAyo=E2=80=9D?= <“tayodele-ctr@wikimedia.org”> Date: Wed, 22 Jul 2026 13:36:42 -0400 Subject: [PATCH 1/2] Add keyboard support for Khiamniungan Naga (kix) Downstream task: https://phabricator.wikimedia.org/T428856 --- rules/kix/kix-tilde.js | 26 ++++++++++++++++++ src/jquery.ime.inputmethods.js | 8 ++++++ test/jquery.ime.test.fixtures.js | 47 ++++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+) create mode 100644 rules/kix/kix-tilde.js diff --git a/rules/kix/kix-tilde.js b/rules/kix/kix-tilde.js new file mode 100644 index 00000000..9200ab07 --- /dev/null +++ b/rules/kix/kix-tilde.js @@ -0,0 +1,26 @@ +( function ( $ ) { + 'use strict'; + + var kixTilde = { + id: 'kix-tilde', + name: 'Khiamniungan tilde', + description: 'Khiamniungan Naga input keyboard', + date: '2026-07-22', + URL: 'https://github.com/wikimedia/jquery.ime', + author: 'Toluwanimi Ayodele', + license: 'GPLv3', + version: '1.0', + maxKeyLength: 3, + patterns: [ + [ '~u', 'ü' ], // U+00FC + [ '~U', 'Ü' ], // U+00DC + [ '~\\\\', '\u0300' ], // grave + [ '~-', '\u0304' ], // macron + [ '~\\^', '\u0302' ], // circumflex + [ '~/', '\u0301' ] // acute + ] + }; + + $.ime.register( kixTilde ); +}( jQuery ) ); + diff --git a/src/jquery.ime.inputmethods.js b/src/jquery.ime.inputmethods.js index f6e97abe..7e128107 100755 --- a/src/jquery.ime.inputmethods.js +++ b/src/jquery.ime.inputmethods.js @@ -536,6 +536,10 @@ name: 'Gĩkũyũ', source: 'rules/ki/ki-tilde.js' }, + 'kix-tilde': { + name: 'Khiamniungan tilde', + source: 'rules/kix/kix-tilde.js' + }, 'kk-arabic': { name: 'Kazakh Arabic transliteration', source: 'rules/kk/kk-arabic.js' @@ -1526,6 +1530,10 @@ autonym: 'Gĩkũyũ', inputmethods: [ 'ki-tilde' ] }, + kix: { + autonym: 'Khiamniungan', + inputmethods: [ 'kix-tilde' ] + }, kk: { autonym: 'Қазақша', inputmethods: [ 'kk-kbd', 'kk-arabic' ] diff --git a/test/jquery.ime.test.fixtures.js b/test/jquery.ime.test.fixtures.js index 79c24dc4..58a5d421 100644 --- a/test/jquery.ime.test.fixtures.js +++ b/test/jquery.ime.test.fixtures.js @@ -4221,6 +4221,53 @@ var palochkaVariants = { { input: 'd~ha', output: 'ದ್ಹ', description: 'd~ha for ದ್ಹ in Kannada transliteration' } ] }, + { + description: 'Khiamniungan Naga tilde test', + inputmethod: 'kix-tilde', + tests: [ + // Group 1: a, e, i × 4 tones (unchanged – passes) + { + input: 'a~\\a~-a~^a~/e~\\e~-e~^e~/i~\\i~-i~^i~/', + output: 'àāâáèēêéìīîí', + description: 'a/e/i × 4 tones' + }, + + // Group 2: o, u × 4 tones (unchanged – passes) + { + input: 'o~\\o~-o~^o~/u~\\u~-u~^u~/', + output: 'òōôóùūûú', + description: 'o/u × 4 tones' + }, + + // Group 3: ü × 4 tones – actual output uses precomposed ü (U+00FC) + tone mark + { + input: '~u~\\~u~-~u~^~u~/', + output: 'ǜǖü̂ǘ', // U+00FC + combining grave/macron/circumflex/acute + description: 'ü × 4 tones' + }, + + // Group 4: Ü × 4 tones – actual output uses precomposed Ü (U+00DC) + tone mark + { + input: '~U~\\~U~-~U~^~U~/', + output: 'ǛǕÜ̂Ǘ', // U+00DC + combining marks + description: 'Ü × 4 tones' + }, + + // Group 5: mixed tones with spaces – actual output uses precomposed ü for diaeresis + { + input: '~u~- a~/ e~^ i~\\ o~-', + output: 'ǖ á ê ì ō', // ǖ = U+00FC + U+0304; ì = i + U+0300 + description: 'mixed tones with spaces' + }, + + // Group 6: edge cases (unchanged) + { + input: '~~ ~ ~x ~', + output: '~~ ~ ~x ~', + description: 'double tilde, tilde space, tilde+x' + } + ] + }, { description: 'Korean RR test', inputmethod: 'ko-rr', From 4d9cbdac3a4c0442f18f052599a7bc88af7706db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CToluAyo=E2=80=9D?= <“tayodele-ctr@wikimedia.org”> Date: Wed, 22 Jul 2026 13:36:42 -0400 Subject: [PATCH 2/2] Add keyboard support for Khiamniungan Naga (kix) Downstream task: https://phabricator.wikimedia.org/T428856 --- rules/kix/kix-tilde.js | 16 +++++----- test/jquery.ime.test.fixtures.js | 51 ++++++-------------------------- 2 files changed, 17 insertions(+), 50 deletions(-) diff --git a/rules/kix/kix-tilde.js b/rules/kix/kix-tilde.js index 9200ab07..f2971e3e 100644 --- a/rules/kix/kix-tilde.js +++ b/rules/kix/kix-tilde.js @@ -6,18 +6,18 @@ name: 'Khiamniungan tilde', description: 'Khiamniungan Naga input keyboard', date: '2026-07-22', - URL: 'https://github.com/wikimedia/jquery.ime', + URL: 'https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Extension:UniversalLanguageSelector/Input_methods/kix-tilde', author: 'Toluwanimi Ayodele', license: 'GPLv3', version: '1.0', - maxKeyLength: 3, + maxKeyLength: 2, patterns: [ - [ '~u', 'ü' ], // U+00FC - [ '~U', 'Ü' ], // U+00DC - [ '~\\\\', '\u0300' ], // grave - [ '~-', '\u0304' ], // macron - [ '~\\^', '\u0302' ], // circumflex - [ '~/', '\u0301' ] // acute + [ '~u', 'ü' ], // U+00FC + [ '~U', 'Ü' ], // U+00DC + [ '~\\\\', '\u0300' ], // Combining grave + [ '~-', '\u0304' ], // Combining macron + [ '~\\^', '\u0302' ], // Combining circumflex + [ '~/', '\u0301' ] // Combining acute ] }; diff --git a/test/jquery.ime.test.fixtures.js b/test/jquery.ime.test.fixtures.js index f6189210..0fd26301 100644 --- a/test/jquery.ime.test.fixtures.js +++ b/test/jquery.ime.test.fixtures.js @@ -1,4 +1,4 @@ -// Variables for Cyrillic with palochka transliteration tests. +// Variables for Cyrillic with palochka transliteration tests. // All the characters are very similar in appearance, // so it's better to give them names to avoid confusion. // eslint-disable-next-line no-implicit-globals @@ -4257,47 +4257,14 @@ var palochkaVariants = { description: 'Khiamniungan Naga tilde test', inputmethod: 'kix-tilde', tests: [ - // Group 1: a, e, i × 4 tones (unchanged – passes) - { - input: 'a~\\a~-a~^a~/e~\\e~-e~^e~/i~\\i~-i~^i~/', - output: 'àāâáèēêéìīîí', - description: 'a/e/i × 4 tones' - }, - - // Group 2: o, u × 4 tones (unchanged – passes) - { - input: 'o~\\o~-o~^o~/u~\\u~-u~^u~/', - output: 'òōôóùūûú', - description: 'o/u × 4 tones' - }, - - // Group 3: ü × 4 tones – actual output uses precomposed ü (U+00FC) + tone mark - { - input: '~u~\\~u~-~u~^~u~/', - output: 'ǜǖü̂ǘ', // U+00FC + combining grave/macron/circumflex/acute - description: 'ü × 4 tones' - }, - - // Group 4: Ü × 4 tones – actual output uses precomposed Ü (U+00DC) + tone mark - { - input: '~U~\\~U~-~U~^~U~/', - output: 'ǛǕÜ̂Ǘ', // U+00DC + combining marks - description: 'Ü × 4 tones' - }, - - // Group 5: mixed tones with spaces – actual output uses precomposed ü for diaeresis - { - input: '~u~- a~/ e~^ i~\\ o~-', - output: 'ǖ á ê ì ō', // ǖ = U+00FC + U+0304; ì = i + U+0300 - description: 'mixed tones with spaces' - }, - - // Group 6: edge cases (unchanged) - { - input: '~~ ~ ~x ~', - output: '~~ ~ ~x ~', - description: 'double tilde, tilde space, tilde+x' - } + { input: 'a~\\a~-a~^a~/e~\\e~-e~^e~/i~\\i~-i~^i~/', output: 'àāâáèēêéìīîí', description: 'a/e/i × 4 tones' }, + { input: 'o~\\o~-o~^o~/u~\\u~-u~^u~/', output: 'òōôóùūûú', description: 'o/u × 4 tones' }, + { input: '~u~\\~u~-~u~^~u~/', output: 'ǜǖü̂ǘ', description: 'ü × 4 tones' }, + { input: '~U~\\~U~-~U~^~U~/', output: 'ǛǕÜ̂Ǘ', description: 'Ü × 4 tones' }, + { input: '~u~- a~/ e~^ i~\\ o~-', output: 'ǖ á ê ì ō', description: 'mixed tones with spaces' }, + { input: '~~ ~ ~x ~', output: '~~ ~ ~x ~', description: 'double tilde, tilde space, tilde+x' }, + { input: 'A~\\E~-I~^O~/U~\\', output: 'ÀĒÎÓÙ', description: 'capital tone-marked vowels' }, + { input: 'h~u~-he~^i', output: 'hǖhêi', description: 'real word h~u~-he~^i' } ] }, {