About keyboard input
Keyboards can be used to input non-ascii characters in a number of different ways: The first two are (a) "dead-keys" and the (b) "Compose key." These two methods do not display additional windows or provide the user other information. In other words, the user must rely on engravings on the keyboard. The third method is what are called (c) input methods. Input methods are able to open separate windows, e.g to provide the user with multiple character (or even word) choices to select from.
(a) Dead-keys don't produce a character when pressed, but instead their information is stored in the system's memory, and when the next key is pressed, the system generates a character which is either a combination of the diacritic and the character whose key was pressed, or if such a character isn't recognized by the system, two characters. One of them is the character representing the diacritic itself and the other one the character which was pressed. The X Windows system (UNIX: Linux/Solaris/SunOS/AIX/HPUX/Irix/FreeBSD/SCO etc.) has a limitation on the diacritics which can be associated with a dead-key. Only acute, grave, cedilla, diaeresis, circumflex, tilde, and ring can be specified. MS Windows doesn't have such a limitation (as far as I know).
(b) X Windows systems have a Compose-key which doesn't have the same limitation that dead-keys do, in terms of the diacritics which can be specified. To generate a character with the Compose-key, the user must first press the Compose-key, then the diacritic key, and then the key for the specific character.
(c) Input methods are software based methods for producing characters. These are divided into two main categories: Native input methods and java input methods. Native input methods can only be used with native applications and java input methods only with java applications.
Input methods are in wide-spread use in many environments, such as in Japan, China, Korea, Thailand etc.. These languages have a need to produce a large number of characters, so input methods are needed to give the user multiple choices when the system is not able to limit the number of choices to one.