Add keyboard layouts for Javanese, Balinese, and Kawi Manuscript#857
Add keyboard layouts for Javanese, Balinese, and Kawi Manuscript#857geshamahendra wants to merge 11 commits into
Conversation
…pdate autonym for Bali
srish
left a comment
There was a problem hiding this comment.
Hi @geshamahendra! Thanks for adding this pull request! Really appreciate your efforts here.
Before I proceed, I noticed that this patch has introduced unrelated whitespace reformatting changes in several files, particularly test/jquery.ime.test.fixtures.js and jquery.ime.inputmethods.js.
Could you first clean up those unrelated formatting changes so that the patch only contains the intended modifications? Once that is done, we can take it forward.
I'm also merging autonym for Jawa & ꦗꦮ since it's the same keyboard. To align with bali and kawi
|
Hi @srish Thank you for pointing this out. I've reviewed the patch and cleaned up the unrelated whitespace and formatting changes. These were introduced unintentionally by a VS Code auto-formatting extension while I was editing the files. I apologize for the noise in the original patch. The pull request has now been updated so that it only contains the intended changes, including the new Javanese and Kawi input methods, the autonym adjustments, and the keyboard symbol updates relevant to Javanese, Kawi, and Balinese usage. Please let me know if there are still any formatting issues or if further adjustments are needed. Thank you again for taking the time to review this contribution. |
srish
left a comment
There was a problem hiding this comment.
Thanks for adding this pull request!
Overall, I noticed that the three new files don't currently pass the lint checks. The errors seem to fall into two categories:
-
Whitespace/style issues. The project follows the standard jQuery/Wikimedia spacing conventions. Most of the reported issues are bracket spacing
(['a','b'] → [ 'a', 'b' ]), along withspace-in-parens,no-multi-spaces,no-trailing-spaces,comma-spacing/comma-dangle, andeol-last. You can probably resolve most, if not all, of these at once by runningnpx eslint --fix. -
Naming issues. The camelcase rule is flagging three snake case constants. I've already called these out in the inline review comments. Once those are addressed, the lint checks should pass cleanly.
I also noticed that the rule comments appear to be written in Indonesian. It would be helpful to have those translated into English for long-term maintainability.
One final question out of curiosity: how many native speakers actively use these scripts today? Is there an existing community request behind this work (for example, a Phabricator task or a request from the script community), or is this something you initiated yourself? I'd be interested in understanding the motivation and context for adding support for these scripts. :)
| @@ -0,0 +1,840 @@ | |||
| (function ($) { | |||
| 'use strict'; | |||
| const consonant_a = '[ᬓᬔᬕᬖᬗᬘᬙᬚᬛᬜᬝᬞᬟᬠᬡᬢᬣᬤᬥᬦᬧᬨᬩᬪᬫᬬᬭᬮᬯᬲᬰᬱᬳᭈᭉᭊᭆᭋ]'; | |||
There was a problem hiding this comment.
Variables in lines 3-6 are in snake_case which will likely fail the repo's camelCase ESLint rule. Same applies jv and kaw files.
| const non_3_stack = '[𑼒𑼓𑼔𑼕𑼖𑼗𑼘𑼙𑼚𑼛𑼜𑼝𑼞𑼟𑼠𑼡𑼢𑼣𑼤𑼥𑼨𑼩𑼪𑼭𑼮𑼯]'; | ||
|
|
||
|
|
||
| var kawmanuscipt = { |
There was a problem hiding this comment.
Following the camel case convention, this can be modified to kawManuscript. Update line 866 as well.
| autonym: 'Jawa', | ||
| inputmethods: ['jv-keyboard', 'jv-transliteration', 'jv-kongres'] | ||
| }, | ||
| 'jv-java': { |
There was a problem hiding this comment.
It looks like the jv-java block here got removed. Is this intentional?
| "ban-bali": { | ||
| autonym: 'ᬩᬮᬶ', | ||
| inputmethods: [ 'ban-transliteration' ] | ||
| autonym: 'Bali (ᬩᬮᬶ)', |
There was a problem hiding this comment.
It looks like you added latin prefix for primary autonym here and for the other two language codes kaw and jv. Unless there is a strong reason lets keep it as it is. As per convention in this file - language's primary autonym is written purely in it's own script.
| description: 'Balinese test', | ||
| inputmethod: 'ban-manuscript', | ||
| tests: [ | ||
| { input: 'tanwarnanrilawasniraarqjamanoharahinunixanix wwaxix puri', output: 'ᬢᬦ᭄ᬯᬃᬡ᭄ᬦᬦ᭄ᬭᬶᬮᬯᬲ᭄ᬦᬶᬭᬵᬋᬚᬫᬦᭀᬳᬭᬳᬶᬦᬸᬦᬶᬗᬦᬶᬂᬯ᭄ᬯᬗᬶᬂᬧᬸᬭᬶ᭞', description: 'sample writing: Kakawin Sutasoma' } |
There was a problem hiding this comment.
I wonder if the input string here is doing a bit too much in one case. Would you consider breaking it into a few focused tests (sigeg, swara, cakra-pengkal, long-tarung) following the same grouping you've already laid out in the keyboard layout files? That way, if a test fails, it's much easier to tell which rule is responsible rather than diffing one long output string. Same comment applies to the other language codes as well.
There was a problem hiding this comment.
Also it looks like this test case might be failing. Likely due to the ᭞ character in the output. Not sure.
| name: 'Balinese', | ||
| description: 'Balinese Manuscript', | ||
| date: '2026-06-15', | ||
| URL: '', |
There was a problem hiding this comment.
It looks like the URL fields here are empty. You could consider adding urls for each language code like this https://www.mediawiki.org/wiki/Help:Extension:UniversalLanguageSelector/Input_methods/ban-manuscript. Also see: https://www.mediawiki.org/wiki/Help:Extension:UniversalLanguageSelector/Input_methods/ban-transliteration. I can then file a documentation task on Wikimedia Phabricator to add documentation for the three keyboard layouts.
Summary
This pull request adds new keyboard layouts for Javanese, Balinese, and Kawi script input.
The layouts are inspired by the existing "Java Transliteration" by Benny Lin approach and retain a familiar transliteration-based typing experience. However, they introduce additional input rules and character mappings required for writing historical texts and manuscripts.
Details
The new layouts are designed to support the orthographic conventions used in Old Javanese (Kawi) and manuscript transcription. Compared to the existing transliteration layout, they provide more extensive handling of characters and sequences commonly encountered in classical texts.
The implementation aims to facilitate the digital transcription and study of historical Javanese, Balinese, and Kawi sources while remaining accessible to users already familiar with transliteration-based input methods.
Motivation
Current Javanese and Balinese input methods are primarily oriented toward modern usage. Researchers, students, and manuscript enthusiasts working with historical texts often require additional characters and input behaviors that better reflect Kawi orthography and traditional manuscript conventions.
These layouts are intended to address that need and provide a practical input method for working with classical Javanese, Balinese, and Kawi materials.
Notes
The layouts follow conventions used in Kawi language writing and manuscript transcription. Feedback from native users, researchers, and manuscript specialists is welcome.