I've tried to make this FAQ as real worldish as possible. -- Ashish Shukla alias Wah Java !!
How to install this IME ?
To install this ime, copy its jar file i.e. NixIM.jar to extensions folder, i.e. [java.home]/jre/lib/ext folder. After this, any AWT (or Swing) application that'll use that JVM will get the input method in input method menu (available as Select Input Method menu item in system menu).
How to use this IME ?
Launch any Java GUI application (using AWT or Swing), e.g. Metalworks which comes bundled with JDK. Focus to a text component in the application. In Metalworks, select "New" from "File" menu, and in the internal frame that appears, focus to any of the text boxes. Now, select the "निक्सस्य आईमम्" (Sanskrit locale) or "निक्स की आईम" (Hindi locale) or "Nix's IME" (English locale) menu from the input method menu. Then select the language. The input method is now set. So, start typing in the text box. e.g. To type "आशीष" type "aasheeSha ". The transliteration map is stored in map.html in the root of the source code bundle. When using this IME with applets, press input method selection key to bring input method menu.
What is input method selection key ?
Input method selection key is the keyboard shortcut, used to bring input method menu. It is helpful when there is no Select Input Method menu is available in System menu. e.g. on Linux/Solaris platforms, or in Applets etc. This keystore combination is stored persistently in user preferences.
I'm on Linux/Solaris platform and I'm not getting Input Method menu in System Menu. What's the matter ?
If you're using X-based AWT the Select Input Method menu item won't appear on the system menu. So, in order to display input method menu, use input method selection key which is documented in Input Method Framework Specification.
Input Method Framework Specification | wahjava.projects.ime.hindi.test.SetupLinux program included with this IM's source code |
I'm on Windows platform and I'm not getting Input Method menu in System Menu. What's the matter ?
This problem will occur if you execute the jar file via file association. The problem is that, default Java 2 Runtime Environment (with which your JAR files are associated) you're using is not the same where you've copied NixIM.jar. This will occur if you've installed Java 2 SDK or multiple versions of Java 2 Runtime Environments, where default or system Java 2 Runtime Environment is installed as [Program Files]\Java\jre[version]. To overcome this problem, either copy NixIM.jar to the extensions directory of that Java 2 Runtime Environment i.e. [Program Files]\Java\jre[version]\lib\ext or change you're default Java 2 Runtime Environment by modifying the file association of .jar files (i.e. associating the JAR files with the javaw.exe of the desired version) and modifying Java Plugin settings to point to the Java 2 Runtime Environment which you want to use actually.
How do I select this input method programatically ?
As far as I know I don't think you can't explicitly select any Input Method explicitly, but you can select it the locale of the input method. But, system input methods are preferred over the JVM input methods.
java.awt.Component.getInputContext() | java.awt.im.InputContext.selectInputMethod(java.util.Locale) |
I'm not getting Devanagari digits when input method is running in Sanskrit locale ....
The problem is not with the input method but instead it is due to the support for Sanskrit locale in underlying platform.
Can we ship it with our proprietary (or any kind of apps) ?
You can redistribute this input method with commercial products (or any kind of apps), as long as you comply with the terms in the license agreement, see LICENSE.
There are several other languages based on Devanagari script, so why not implemented them ?
I don't know those languages. Anyways, it is left as an exercise for great Java hackers. So, if anybody is implementing the stuff, or needs any kind of help please contact me. Although I've properly documented all the parts of source code but if someone still needs any kind of help, please let me know at my eMail address at top.
Why created another transliteration based IME, when similar IMEs already exists ?
The transliteration IME which I've seen is native IMM (Input Method Manager) based IME for Windows. So it is not portable across different platforms. And since, Java is a cross platform technology, so the IME also has to be cross platform, that's why. And I've searched on internet for transliteration based Indic IMEs, and found none that's why.
Why is not there a helper window (which displays combination of letters as you type), dictionary stuff etc. as it is in other transliteration based IMEs ?
Due to lack of time (actually my exams are arriving), I'm unable to implement them, but these features will be available in subsequent versions. Although, I've provided a map, which maps roman characters to their Devanagari equivalents, available as map.xml (for those who want XML version) and map.html in the root of distribution.
Why's it called Nix's IME ? Who's Nix anyways ?
This IME is dedicated to my great friend निखिलेश जी (a.k.a. Nix) who always inspired me to create something.