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