In this article the detailed usage or xcin is described.

1. Command line options and environment variables:

   You will see the following usage description via the "xcin -h" command:

===========================================================================
XCIN (Chinese XIM server) version xcin <version number>
(module ver: <version number>, syscin ver: xcin-<version number>).
(use "-h" option for help)

xcin: locale "zh_TW.Big5" encoding "big5"

Usage:  xcin [-h] [-d DISPLAY] [-x XIM_name] [-r rcfile]
Options:  -h: print this message.
          -m: print the comment of module "mod_name"
          -d: set X Display.
          -x: register XIM server name to Xlib.
          -r: set user specified rcfile.

Useful environment variables:  $XCIN_RCFILE.
===========================================================================

   The huge amount of command line options of the old xcin are mostly
   moved to rcfile (see the description of section 2). Besides of the
   command line options and the configuration of rcfile, xcin can also
   accept the following environment variables:

   LC_CTYPE:	set the character handling locale, default is "zh_TW.Big5".
   LC_MESSAGES:	set the message output locale, default is "C" or "POSIX".
   XCIN_RCFILE: set the file name of "rcfile".

   If some of the configurations appear in command line option, environment
   variable, and rcfile, then the priority is:

	command line option > environment variable > user rcfile >
		default rcfile > xcin default

   If no command line option nor environment variable given, xcin starts with
   its internal configuration. The internal configuration uses $RCPATH/xcinrc
   as the default rcfile, where the value of $RCPATH is specified during
   configure/make from the source code. Its default is /usr/local/etc or /etc.
   XCIN only read one rcfile. It searches the rcfile with the following 
   ordering:

	$HOME/.xcin/xcinrc	(suppose that your XCIN_USER_DIR is set to
				 be ".xcin", see the following)
	$HOME/.xcinrc
	$RCPATH/xcinrc		(the system default rcfile)

   Hence, if a normal user does not like the configuration of the system 
   default rcfile, in principle he only needs to copy the system default
   rcfile into $HOME/.xcin/ or $HOME/ directory and modify its configuration
   to his favoriates.

***************************************************************************
***************************************************************************
***************************************************************************

2. XIM (X Input Method) server:

   In the framework of XIM, the programs are classified into 2 groups: The
   first is called "XIM server", and the other one is "XIM client". The XIM
   server is used to provide the (internationalized) input method for the
   XIM client (the X Window applications). The X applications should support
   the XIM protocol in order to accept the texts input from the XIM server.

   XCIN-2.5 is a XIM server and can serve to provide the Chinese input (e.g.,
   Big5 or GB encodings) for XIM client. In a running X Display, there can
   be a several XIM servers co-exist, and every XIM server has a set of
   tag for identification: (LC_CTYPE, XIM_name), where "LC_CTYPE" is the
   locale name (the character handling category, e.g., zh_TW.Big5), and
   "XIM_name" is the XIM server name which xcin registered in this X Display.
   In the same locale environment, there can be several xcin processes running
   with different "XIM_name". And, if you want to input Big5 and GB texts
   into the XIM client, you have to run two xcin processes with zh_TW.Big5 
   and zh_CN.GB2312 locales and different "XIM_name"s respectively. Then the 
   one starts with zh_TW.Big5 locale will display/input Big5 texts, while 
   the one starts with zh_CN.GB2312 locale will display/input GB2312 texts.

   Similarly, every XIM client should start with a specified locale and the
   "XIM_name" setting such that it can talk to a specific XIM server. Then,
   the one starts from the zh_TW.Big5 locale can accept the input from the
   xcin started with the zh_TW.Big5, and similarly for zh_CN.GB2312.

   By default, if xcin starts from the zh_TW.Big5 locale, its "XIM_name"
   registered to the X Display will be "xcin". If it starts from other locales,
   e.g., zh_CN.GB2312, then its "XIM_name" will be "xcin" with "-<locale name>"
   appended, for example:

	xcin-zh_CN.GB2312

   Of course, we can also use the command line option -x to specify the
   "XIM_name" of xcin.

   Besides, the standard XIM server can also support several input_styles.
   Currently xcin support 2 kinds of input_style:

	Root:  the preedit information and status information are both in
	       xcin main window.
	OverTheSpot:  xcin will open a small window near the input cursor
		      of the XIM client to display the preedit information,
		      and the small window will move with the input cursor.

   In the future, xcin will support other input_styles.

   When xcin starts, all the XIM server configurations described above will
   be listed as the guideline to start the XIM client. For example in the
   zh_TW.Big5 locale to start xcin without any options, xcin will list the
   following messages:

XCIN (Chinese XIM server) version xcin <version number>.
(module ver: <version number>, syscin ver: <version number>).
(use "-h" option for help)

xcin: locale "zh_TW.Big5" encoding "big5"
xcin: XIM server "xcin" transport "X/"
xcin: inp_styles: Root OverTheSpot 

   the meaning is: locale (LC_CTYPE) is "zh_TW.Big5", with the encoding name
   "big5"; while the XIM_name is "xcin", XIM transport mode is "X protocol",
   and the input_styles are "Root" and "OverTheSpot".

   XCIN uses dynamic linking method to operate with the XIM clients. During
   the English input mode, xcin and the XIM client are disconnected, so that
   we can type normal ASCII codes. But when we press any trigger key (see
   the description in the following), the xcin will connect to the XIM client,
   then the begin Chinese input mode.

***************************************************************************
***************************************************************************
***************************************************************************

3. The format of rcfile (see also "xcinrc" file)

   XCIN-2.5 use siod as the syntax parser to read the rcfile. Its language
   is the mix of lisp/Scheme language, as described in the following:

   a. If the line contains the ';' character, then begins from this character
      to the end of the line are treated as the comments.

   b. (define $cmd $value):
	Set the value of $cmd to be $value. If $value is simply a string, 
	it should be quoted inside a pair of double quotation mark: "

	(define FG_COLOR "white")	; set the foreground color to be white.

	The $value can be a sub-group of ($cmd, $value) pairs, for example:

	; Set the input method zh_hex with Chinese name "Big5 ¤º½X", and
	; set its "BEEP_WRONG" value to be "YES". Please note the parenthesis
	; pairs in each level.
	(define zh_hex  '((INP_CNAME   "Big5 ¤º½X")
			  (BEEP_WRONG  "YES")))

   The main structer of xcin-2.5 contains xcin main program and IM (Input
   Method) modules. The configuration of rcfile is roughly devided to 3
   parts: main program global configuration, locale setting, and the detailed
   settings of each input method. The setting of each input method is related
   to the IM module which it use. For details please refer to the documents
   in doc/modules/. In the following we will explain the meaning of rcfile
   keywords for global configurations and locale settings (see also xcinrc
   file).

   a. Main program global setting:
   -------------------------------
   XCIN_DEFAULT_DIR:
	XCIN default data directory, which will contain the IM tables, IM
	modules, and other data files.

   XCIN_USER_DIR:
	User specified data directory. If it is not a relative path, then
	it will start with the user's $HOME directory.

   INDEX_FONT:
	The font used to display the English IM name (in the right-bottom
	corner of the xcin main window).

   FG_COLOR:
	The foreground color of xcin windows.

   BG_COLOR:
	The background color of xcin windows.

   M_FG_COLOR:
	The specially displayed foreground color (e.g., the preedit area,
	mutiple characters for selection).

   M_BG_COLOR:
	The specially displayed background color (e.g., the preedit area,
	mutiple characters for selection).

   ULINE_COLOR:
	The color of phrases marking underline of xcin windows.

   GRID_COLOR:
	The grid color of xcin windows.

   X_GEOMETRY:
	The size and position of xcin main window.

   START_MAINWIN2:
	Open the xcin 2nd main window or not? Because in the OverTheSpot
	input_style, all the preedit information are moved into the 
	OverTheSpot window (the small window appeared near the cursor of
	the XIM client), so the original xcin main window seems to be too
	large and waste a lot of space of the disktop. Therefore, if the
	xcin 2nd main window is opened, then in the English input mode or
	the OverTheSpot input_style, xcin will use the smaller 2nd main
	window to display necessary information. But when the Root input_style
	is enabled, the xcin will automatically switch to the original main
	windown.

   MAINWIN2_GEOMETRY:
	The size and position of xcin 2nd main window.

   XCIN_HIDE:
	Hide xcin window when English input mode or not?

   XKILL_DISABLE:
	Disable the facility such that the Window Manager can terminate xcin
	through WM protocol or not?

   ICCHECK_DISABLE:
	Disable the IC checking facility or not? This facility can check the
	ICs and windows of all the XIM clients periodically.

   SINGLE_IM_CONTEXT:
	Let all the XIM clients to share the same IM data structer or not.
	The default is NO, i.e., the IM data structer of each XIM client
	are distinct, so the IM status of each XIM client is independent.
	If set this option to YES, then all the XIM clients will have the
	same IM status.

   IM_FOCUS_ON:
	Start the IM focus facility when running xcin. See the following for
	details.

   KEEP_POSITION_ON:
	Keep the position of the xcin window or not? If this option is opened,
	then xcin window will automatically appeared on the disktop when we
	switch between the virtual disktops. Also when we move the xcin window
	out of the boundary of the screen (or, disktop), xcin will come back
	to its original position. This option is useful to some simple Window
	Managers, e.g., fvwm series. If the Window Manager does not provide
	the function to fix the applicatiion window on the working virtual
	desktop, then you can try to enable this option. But if your Window
	Manager dose provide this functionality, it is suggested to disable
	this option to aviod other possible problems. By default this option
	is not enabled.

   DISABLE_WM_CTRL:
	Disable the control of Window Managers over the xcin window or not?
	By default it is not enabled, so that Window Managers can control
	the xcin window, including that you can use mouse to drag or resize
	the xcin window, can close, iconfy the window .... etc, and the
	Window Managers can change the configuration of the window if it
	needs .... etc. Because different Window Manager has many different
	controlling style overs the window of the applications, and sometimes
	this might disturb the operation of xcin itself. In this circumstance
	you can turn on this option to prevent the control from the Window
	Managers.

   DIFF_BEEP:
	Enable the different beep or not? There are two kinds of situations
	that xcin will beep, one is that the user types the wrong keystroke,
	and the other is that there are duplicated characters to choose.
	Depending on the design of the IM module and the configuration of
	the input methods in the xcinrc file, xcin may beep when both of the
	situations occures, or only beep when one of the situations occures.
	By default the beeps of both situation are the same. But if you turn
	on this option, then the two beeps will be different.

   LOCALE:
	In this option all the locale name set in the xcinrc file could be
	listed here. This option is optional. However, if you are using
	glibc-2.2 system, it is recommanded to use this option in order to
	avoid the locale naming problem.

   INPUT_STYLE:
	Set the input_styles acceptable to the xcin. The value could be any
	combinations of the following:

	Root: both the preedit area and status area are inside the xcin main
	      window.
	OverTheSpot: besides the xcin main window, xcin will open another
		     window near your current input cursor to display the
		     preedit area.

   OVERSPOT_USE_CLICOLOR:
	Use the colors determined by xcin (i.e., the colors the user set in
	xcinrc) as the foreground and background colors of the OverTheSpot
	window or not? By default it is YES, then the window is usually
	colorful.  If this option is disabled, then xcin will use the color
	specified by the XIM client, and there will be only foreground and
	background colors.

   OVERSPOT_USE_USRFONTSET:
	Use the font specified by the user as the font of the OverTheSpot
	window or not? By default is NO, i.e., xcin will use the font specified
	by the XIM client. If this option is enabled, then the user specified
	font will be used immediately (see the description in the following).

   OVERSPOT_WINDOW_ONLY:
	Start the OverTheSpot window ONLY or not? By default is disabled, 
	i.e., at least xcin will start a main window (no matter the first 
	main window or the second main window) to display the status message.
	If enable this option, then xcin will not display any main window,
	and all the preedit and partial status messages will move to the
	OverTheSpot window. Therefore, the area occupied by the xcin window
	in the desktop of the screen will be reduced to the minimum.

	Please note that because of the smallness of the OverTheSpot window,
	so it cannot contain too many information. This will lead to only
	partial information originally displayed in the xcin main window can
	be moved here, and the other part will be neglected.

   FKEY_ZHEN:  (default: "ctrl space")
	Set the trigger key of English/Chinese input mode.

   FKEY_2BSB:  (default: "shift space")
	Set the trigger key of Wide/Normal ASCII input mode.

   FKEY_CIRIM:  (default: "ctrl shift")
	Set the trigger key of circulatory switching the input methods in 
	positive direction.

   FKEY_CIRRIM:  (default: "shift ctrl")
	Set the trigger key of circulatory switching the input methods in
	negative direction.

   FKEY_CHREP:  (default: "ctrl alt r")
	Set the function key to repeat the last input texts.

   FKEY_SIMD:  (default: "ctrl alt i")
	Set the function key to circulatory switching the keystroke recalling
	mode (simd).

   FKEY_IMFOCUS:  (default: "ctrl alt f")
	Set the function key of IM focus switch.

   FKEY_IMN:  (default: "ctrl alt")
	Set the modifier keys of the trigger keys of all the input methods.
	For example, if it is set to "ctrl alt", then input ctrl+alt+1 will
	switch to the input method with setkey set to 1.

   FKEY_QPHRASE:  (default: "shift alt")
	Set the modifier keys of the trigger keys of all the quick-phrase
	output. For example, if it is set to "shift alt", then input
	shift+alt+o will output the phrase standed by code "o".

   For the detailed description of all the functional keys or trigger keys,
   please refer to section 4.


   b. Locale configurations:
   -------------------------
   Every locale environment you want xcin to work in should be configured here.
   The syntax is:

	(define "locale name"   '(( "detailed settings" ....)))

   For example, if you will use xcin in zh_TW.Big5 and zh_CN.GB2312 locales,
   then you will have the settings in xcinrc as:

==========================================================================
        (define "zh_TW.Big5"   '((cmd1  "value1")
                                 (....  ........)))
        (define "zh_CN.GB2312" '((cmd1  "value1")
                                 (....  ........)))
==========================================================================

   The acceptable commands are:

   DEFAULT_IM:
	The default input method xcin will load when starts.

   DEFAULT_IM_MODULE:
	The default IM module for all the input methods.

   DEFAULT_IM_SINMD:
	The default input method for keystroke recalling. When you are 
	inputting Chinese texts, xcin will display (recall) the keystroke you 
	just input when every Chinese character is typed out. This option is 
	used to specify this recalling mode. If it is set to the name of
	any input method, then no matter what input method you are using,
	it will display the recalling keystroke of the input method you
	specified here. If it is set to "DEFAULT", then it will use the input
	method you are using to display the recalling keystroke (when you
	switch to other input method, the recolling keystroke will also
	be switched).

   PHRASE:
	Specify the data file of the quick-phrases.

   CINPUT:
	Specify the input methods you want to use in this locale.

   FONTSET:
	Specify the fontset of the xcin main window in this locale environment.
	The format is:
		"<font name 1>,<font name 1>,...."

	That is, different font names are separated by commas. For different
	systems, different locales, the needed fontset settings should be
	different, so you have to set this according to your environment.
	For example, in GNU/Linux or FreeBSD (i.e., using XFree86 system),
	under zh_TW.Big5 locale the FONTSET should contain one English font
	(the font name ended with "iso8859-1") and one Big5 font (the font
	name ended with "big5-0"), so the FONTSET should be set as:

		"-sony-*-24-*-iso8859-1,-*-24-240-*-big5-0"

   OVERSPOT_FONTSET:
	The above FONTSET is used to set the font of xcin main window; while
	the OVERSPOT_FONTSET here is used to set the font of the OverTheSpot
	window. The way of setting is exactly the same as that of FONTSET.
	Generally speaking, the font size of FONTSET will be larger, but the
	size of OVERSPOT_FONTSET could be smaller.

	Please note, if the option OVERSPOT_USE_USRFONTSET is not enabled,
	then only if the XIM clients do not specify the font to xcin so that
	xcin will use the font specified in OVERSPOT_FONTSET, otherwise the
	font specified here will not have any effect. Therefore, if you want
	to enable this setting immediately, if have to enable the option
	OVERSPOT_USE_USRFONTSET, too.

	Besides, you can also set this option to be "NONE", which means to
	disable this configuration completely. Then xcin will use the font
	provided by the XIM client directly. If in case the XIM client does
	not provide it, then xcin will use the font of FONTSET setting to
	display.


   c. The detailed configurations of each input method:
   ----------------------------------------------------
   XCIN adopts the module structer to provide the input methods. Different
   IM modules support the necessary functions and features for different
   classes input methods. However, not all of the input methods could use
   all the IM modules, and different IM modules have different adopting way
   by the input methods. This depends on the implementation of the IM modules.
   Therefore, when we are going to have detailed configurations for the
   input methods, we have to specify which IM module this input method will
   use. If not specified, then xcin will use the setting of DEFAULT_IM_MODULE
   as the IM module for this input method.

   Now xcin does not impose the ctrl+alt+3 switch as the phone IM, or the
   ctrl+alt+6 as the intellegent phone IM, .... etc. All the needed input
   methods should be specified in the CINPUT setting, plus the suitable
   detailed configurations as described in the following, then they will be
   loaded when using. Note that the input methods specified in DEFAULT_IM
   and DEFAULT_IM_SINMD should be also found in the CINPUT list (except that
   when DEFAULT_IM_SINMD is set to "DEFAULT"). If they are not found, xcin
   will automatically choose other IMs in CINPUT to be the DEFAULT_IM or
   DEFAULT_IM_SINMD.

   In the following we will have detailed configurations for each input methods
   specified in CINPUT option. The format is looked like this:

============================================================================
(define zh_hex                          ; This is one of the IM founded in 
					; the CINPUT list.
        '((INP_CNAME    "Big5 ¤º½X")    ; The following is the detailed
          (SETKEY       0)		; configurations of this IM.
          (MODULE       zh_hex)
          (......       ......)))

(define cj@big5
        '((SETKEY       1)
          (......       ......)))
============================================================================

   Please note that the detailed configurations of each input method are
   independent to each other. Please also note the settings of Changjei
   input method. The "@big5" text behind of the "cj" is optional. If it is
   added, then xcin will load it only in the locale with Big5 encoding (e.g.,
   the zh_TW.Big5 locale). Therefore, you can write the IM configurations
   for different encodings in the same configuration file, but each has
   distinct SETKEY value (see below) without confliction. For example:

        (define pinyin@big5
                '((SETKEY       4)
                  (......       ......)))
        (define pinyin@gb2312
                '((SETKEY       1)
                  (......       ......)))

   The detailed setting of each input method varies according to the IM module
   it adopted. For the description please refer to the documents in modules/
   directory. In the following the common setting itmes are described:

   1. SETKEY:
	Define the switch (trigger) key of this input method, e.g., the 
	internal-encoding input method could be ctrl+alt+0, and the Changjei
	input method could be ctrl+alt+1 .... etc. Please note that every
	input methods used in the same locale should have its distinct SETKEY
	values.

   2. MODULE:
	Specify the IM module name this input method will adopt. If not
	specified, then the setting in DEFAULT_IM_MODULE will be used here.
	Please note that not all of the IM modules can be adopted by all
	of the input methods. For example, the zh_hex IM module can only
	be adopted by the zh_hex input method, but cannot be adopted by 
	Changjei input method. Therefore, if you give an inaccurate 
	specification, the adoption will fault, and xcin will show the
	warning message and neglect this input method.

   All the input methods and IM modules will only loaded into memory when
   you are using them, so you can specify many of them in the rcfile without
   wasting memory if you do not actually use them.

   Besides, for some IM modules which contains a lot of complex configurations,
   e.g., gen_inp and bimsphone IM modules, they will support the "default
   configuration value" setting itmes. The name of these setting items are:

		<IM module name>_default

   You can specify all the common configurations for all the input methods
   which adopt this IM module in here, then you don't need to specify those
   amount of configurations for each input methods. For example, the cj and
   array30 input methods use gen_inp IM module, so you can provide the
   following settings:

        (define gen_inp_default
                '((AUTO_COMPOSE         YES)
                  (AUTO_UPCHAR          YES)
                  (AUTO_FULLUP          NO)
                  (............         .....)))
        (define cj@big5
                '((SETKEY               1)))
        (define array30@big5
                '((SETKEY               8)
                  (AUTO_UPCHAR          NO)))

   Hence, for cj besides SETKEY setting, all the other settings will take
   the value in "gen_inp_default"; while for array30 besides SETKEY and
   AUTO_UPCHAR settings, all the other will be the same as those in
   "gen_inp_default". Therefore, using "gen_inp_default" will simply the
   configurations greatly. Please note that not all of the input methods
   support the "default configuration value". Please refer to their docs
   for details.

   All the locale related data files, including all .tab, and quick-phrase
   data file .... etc, are placed in $XCIN_DEFAULT_DIR/tab/$ENCODING/
   directory. You can prepare your own .cin and .tab files and put them
   in $XCIN_USER_DIR directory (e.g., $HOME/.xcin/). When xcin starts, the
   order to search these data files is:

        1. $XCIN_USER_DIR/tab/$ENCODING/
        2. $XCIN_USER_DIR/tab/
        3. $XCIN_USER_DIR/
        4. $XCIN_DEFAULT_DIR/tab/$ENCODING/
        5. $XCIN_DEFAULT_DIR/tab/
        6. $XCIN_DEFAULT_DIR/

***************************************************************************
***************************************************************************
***************************************************************************

4. Trigger keys and special functional keys:

   Trigger keys are used to "trigger" (or enable) the connection between the
   XIM client and the XIM server. In this version we have the following 
   trigger keys:

   a. FKEY_ZHEN:			Switch between Chinese/English modes.
					(default "ctrl space")
   b. FKEY_IMN + [0123456790-=]:	Choose the input method.
					(default "ctrl alt")
   c. FKEY_2BSB:			Switch between ASCII/Wide ASCII modes.
					(default "shift space")
   d. FKEY_CIRIM:			Circularly switch the input methods
					in positive direction.
					(default "ctrl shift")
   e. FKEY_CIRRIM:			Circularly switch the input methods
					in negative direction.
					(default "shift ctrl")
   f. FKEY_QPHRASE + [0-9a-z....]:	Output the quick phrases.
					(default "shift alt")

   The quick phrases output is a little special. If initially xcin under 
   the English input mode (i.e., xcin is not connected to the XIM clients),
   pressing the FKEY_QPHRASE trigger key will cause the temparay connection
   between the XIM client and xcin, and after the output of the quick phrase,
   it will go back to the un-connected status. In other words, in the English
   input mode one can output the quick phrase directly, but still keeps xcin
   in the English input mode.

   Besides, xcin has other functional keys which are not belong to the trigger
   keys, which means, they will only have effects when the connection of xcin
   and the XIM client is established (i.e., xcin is under the Chinese input
   mode or Wide ASCII input mode). These functional keys includes:

   a. FKEY_CHREP: (default "ctrl alt r")
      Repeat the output texts the user just typed.

   b. FKEY_SIMD: (default "ctrl alt i")
      Circularly switch the keystroke recalling mode. If in xcinrc the
      "DEFAULT_IM_SINMD" is set to "DEFAULT", then pressing this functional
      key will disable the "DEFAULT" setting.

   c. FKEY_IMFOCUS: (default "ctrl alt f")
      Enable or disable the IM focus facility. When the IM focus is enabled,
      the IM name in the right-bottom corner of the xcin window will contain
      a "*" symbol. Under this mode, everytime a new XIM client starts, then
      it will enter the currently focused IM automatically instead of starting
      into the default English input mode. When you switch the IMs, the focused
      IM will also change with it.

      (This facility is introduced in order to work around the problem of 
       input Chinese into netscape-4.5/6, in Root input_style. Read the
       description of FAQ for details).

   All the functional keys or tirgger keys are configurable in the rcfile.
   For example:

	(define FKEY_CHREP     "ctrl alt r")

   will set the functional key FKEY_CHREP to be the key combination: "ctrl+
   alt+r". Please note that there should be quotation mark outside the key
   names, and every key names should be separated by a white space. The number
   of keys in combination should not be greater than 3, and also note the
   ordering of these keys: The last key is called "real key", while the others
   are called "modifier keys". The order of pressing is press the "modifier
   keys" first, and then the "real key", then this key combination will have
   effect.

   Therefore, please note the difference between "ctrl shift" and "shift ctrl".
   The "shift" key is the "real key" in the former, but in the later it becomes
   "modifier key". So different order of pressing these 2 keys will lead to
   different reaction of xcin.

   Please also not that not every key could be the "modifier key", but every
   key could be the "real key". In this version xcin defines the following
   modifier keys:

	shift, L-shift, R-shift,	(the 3 keys are identical)
	ctrl, L-ctrl, R-ctrl,		(similar to the above)
	alt, L-alt, R-alt,		(similar to the above)

   For the "real key" list defined in xcin, see the following table.

-------------------------------------------------------------------------
	key name		comment
    ===================================================
	"shift"			identical to "L-shift"
	"L-shift",
	"R-shift",		
	"ctrl",			identical to "L-ctrl"
	"L-ctrl",
	"R-ctrl",
	"alt",			identical to "L-alt"
	"L-alt",
	"R-alt",
	"esc",			the ESC key
	"f1",			F<n> function key area, where <n> is a digit
	"f2",
        "f3",
        "f4",
        "f5",
        "f6",
        "f7",
        "f8",
        "f9",
        "f10",
        "f11",
        "f12",
        "grave",
        "1",
        "2",
        "3",
        "4",
        "5",
        "6",
        "7",
        "8",
        "9",
        "0",
        "-",
        "=",
        "tab",
        "space",
        "backspace",
        "a",
        "b",
        "c",
        "d",
        "e",
        "f",
        "g",
        "h",
        "i",
        "j",
        "k",
        "l",
        "m",
        "n",
        "o",
        "p",
        "q",
        "r",
        "s",
        "t",
        "u",
        "v",
        "w",
        "x",
        "y",
        "z",
        "[",
        "]",
        "semicolon",
        "apostrophe",
        "comma",
        "period",
        "slash",
        "backslash",
    ===================================================


***************************************************************************
***************************************************************************
***************************************************************************


5. For the description of the IM modules, please refer to the docs in
   modules/ directory.


T.H.Hsieh


