Linux 版 (精华区)
发信人: don (驿路梨花), 信区: Linux
标 题: Linux下的中文输入
发信站: 紫 丁 香 (Tue May 9 10:22:14 2000), 转信
发信人: null (钠尔), 信区: LINUX
标 题: Linux下的中文输入
发信站: 碧海青天 (Sun Apr 30 12:40:54 2000), 转信
Linux下的中文输入
作者:于明俭
在汉字输入上, GB 与 Big5 的输入由于历史与习惯的原因, 已截然分化 成两种,
这就是在大陆最流行的 Chinput 和 在台湾最流行的 XCIN, 它们都经历了自定义协议阶
段,
目的是配合外挂式中文平台, 最终向国 际化标准协议靠拢,
即支持XIM协议(日语输入软件kinput2也经历了漫长 的过程).
在中文平台TL-ZWinPro下使用Chinput, 它的XIM协议和原来的 协议能够无缝接合使用.
目前Chinput已成为大陆最流行的Linux中文输入软件. 它被众多的Linux中文平台所采用
:
TurboLinux 中文版3.02,4.0: 北京拓林思软件公司
ZhXWin: 由宫敏博士开发的Linux下的中文平台
Xteam Linux 1.0: 北京冲浪平台
BluePoint Linux(preview): 网络工作室
Chinput 以CXterm的输入引擎为基础, 支持中文GB/GBK/Big5, 日文和韩文输入.
后又增添了李振春先生的智能拼音输入, 使输入法日臻完备. 它具有独特的无 边界窗口
,
浏览输入模式, 单双行输入模式, 颜色字体可配置性. 如果配合中文平台 TL-ZWinPro,
它可以根据窗口当前的编码自动输入GB/GBK/Big5.极大地方便了 中文用户的网上冲浪,
如浏览网页时的输入, 上BBS时输入, 都有可能需要同时 输入GB和Big5编码,
这时您不必要重新启动Chinput, 便可以输入这两种不同的 编码.
下面简述Chinput的中文输入接口, 以便有兴趣开发中文软件的Linux 程序员有更深入的
认识.
Chinput 协议
Chinput的最初协议是基于ClientMessage的Chinput协议. 它的 主要目的是为X
Window下的客户程序提供方便的汉子输入接口. 它所提供的主要接口函数有:
int HZclientInit() -- 初始化输入服务器
int HZsendKey() -- 以ClientMessage方式把键码发送给输入服务器
int HZprocInput() -- 处理输入服务器传来的输出
int HZqueryServer() -- 查寻输入服务器的信息
在 Chinput 注册的原子(Atom)有:
"_CHINESE_CONVERSION" -- Chinput
"_CHINESE_CONTROLBAR" -- 用于控制的控制条
"_HZ_OUTPUT_ATOM" -- 输出汉字
"_HZ_INPUT_ATOM" -- 输入汉子
"_HZ_CONFIG_ATOM" -- 配置属性
"_HZ_QUERY_ATOM" -- 查询属性
"_HZ_REPLY_ATOM" -- 答复属性
"_HZ_GRASP_ATOM" -- 抓词
上述原子用于 Chinput 和应用软件、控制条、抓词服务器之间进行 通讯.
控制条可以选择输入方法, 应用软件也可以通过热键选择输入 方法.
特别是应用软件可以配置输入条的输出编码.
使用Chinput协议必须有中文平台支持, 在TurboLinux中, 必须设置 环境变量
LD_PRELOAD=/usr/lib/libZWin.so
XIM 协议
Chinput 对X11R6的国际化输入提供了标准接口, 即XIM接口. Chinput
所使用的Locale是zh_CN, 定义的输入服务器名称是"Chinput", 所以 在客户程序
找不到
Chinput 时, 应设置XMODIFIERS为"@im=Chinput".
XIM 的输入风格(preedittype)共有四种: on the spot, over the spot, off th
e spot, root window, "on
the spot" 是在Client软件的当前 输入处输入, "over the spot"
是在当前输入处之上有一预编辑窗口提供 输入, "off the spot"
是在输入窗口的下方提供预编辑取和输入状态显示 区, "root window"
是在独立于输入软件的窗口中(该窗口为根窗口的子 窗口)输入. 可以看出, "roo
t window"
是比较适合汉字输入的. Chinput 目前只支持根窗口输入风格(root-window styl
e). 如果有必要,
其它的输入风格也将被陆续加入.
XIM 支持与原协议无缝结合, 对用户来说是不透明的. 当用户在中文
平台上使用XIM支持的软件时, 原协议对该应用软件自动失效. 这要求
中文平台需要作特殊处理, 才能避免两种协议的冲突.
当您使用高层库函数, 如gtk/qt/Motif时, 您不必关心客户端的接口, 当使用Xli
b写客户程序时,
请参见文章 编写支持XIM的客户软件.
支持软件(运行前设置LC_ALL=zh_CN.EUC, LANG=zh_CN.EUC)
nxterm, 修改源码. 中文显示需中文平台支持
xemacs, 编译:configure --with-xim=xlib
rxvt2.60, 编译:configure --enable-xim --enable-gb, 运行: rxvt -im
Chinput -pt Root
netscape: 需改动Netscape.ad, 部份输入区有问题:
Netscape*fontList: -*-helvetica-bold-r-*-*-*-140-*-*-*-*-iso8859-*
;-*-gb13000.1993-1:
xedit: 资源文件,
xtDefaultFontSet: cclib16,-adobe-*-iso8859-1
xedit*international: True
xedit*fontSet: -tlc-*--16-160-75-75-c-160-gb2312.1980-1, -
adobe-courier-bold-r-*
-16-*-iso8859-1
.Xedit.shellext.inputMethod: Chinput
.Xedit.shellext.preeditType: Root
vim-5.4 命令:vim -g (aka gvim): X 资源文件
Vim*international: True
Vim*.inputMethod: Chinput
Vim*.preeditType: Root
Vim.font: -sony-fixed-medium-r-normal--16-120-100-100-c-80
-iso8859-1
Vim*fontSet: -sony-fixed-medium-r-normal--16-120-100-100-c
-80-iso8859-1,-tlc-song-medium-r-normal--16-160-75-75-c-160-gb13000.1993-1
Vim*fontList: -sony-fixed-medium-r-normal--16-120-100-100-
c-80-iso8859-1,-tlc-song-medium-r-normal--16-160-75-75-c-160-gb13000.1993-1
vim 资源文件 .gvimrc(.vimrc):
:set fileencoding=prc
:set guifontset=-sony-fixed-medium-r-normal--16-120-100-10
0-c-80-iso8859-1,-tlc-song-medium-r-normal-*-16-*-*-*-*-*-gb13000.1993-1
qt-1.44(i18n patched)/KDE: setenv XMODIFIERS @im=Chinput
gtk/gnome: 设置 fontset
gimp: 须修改资源文件
Motif: 设置 fontset
--
--
一条驿路,一种氛围。
一朵梨花,一种思考。
希望能在Linux这条驿路上与你同行!
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: 202.118.239.63]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.066毫秒