当前位置:Linux教程 - Linux - Linux下的中文输入

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 the spot, root window, "on the spot" 是在Client软件的当前 输入处输入, "over the spot" 是在当前输入处之上有一预编辑窗口提供 输入, "off the spot" 是在输入窗口的下方提供预编辑取和输入状态显示 区, "root window" 是在独立于输入软件的窗口中(该窗口为根窗口的子 窗口)输入. 可以看出, "root window" 是比较适合汉字输入的. Chinput 目前只支持根窗口输入风格(root-window style). 如果有必要, 其它的输入风格也将被陆续加入.

    XIM 支持与原协议无缝结合, 对用户来说是不透明的. 当用户在中文 平台上使用XIM支持的软件时, 原协议对该应用软件自动失效. 这要求 中文平台需要作特殊处理, 才能避免两种协议的冲突.

    当您使用高层库函数, 如gtk/qt/Motif时, 您不必关心客户端的接口, 当使用Xlib写客户程序时, 请参见文章 编写支持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-100-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
    发布人:netbull 来自:开发企业网