免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5496 | 回复: 4
打印 上一主题 下一主题

[桌面系统] linux控制台下使用zhcon、cce等问题小结 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-15 16:47 |只看该作者 |倒序浏览
因最近有个项目,需要在linux下控制台下进行汉字的处理,因此用centos 5.2试了一下zhcon和cce,最终发现cce对汉字和制表符的识别没有zhcon的准确,有时候会出现乱码。因此最终选用zhcon,现将测试过程中发现的几个问题写下来,以供大家参考
  一、zhcon的安装是参考《Linux操作系统控制台中文显示与中文输入》这篇文章,
  二、在使用zhcon后,无法使用ctrl+alt+1,2,3来切换输入法,只能按ctrl+space来切换第一个输入法,这是因为2.6内核下,linux console driver, 将每次按键转换成相应的 utf-8 串, 然后发送到前台进程的 stdin 里. 因此,zhcon读取到的是已经转换过的utf-8字符串,因此无法识别输入切换键,cce也有同样的问题。对此问题,我的解决方法是:将/etc/sysconfig/i18n中的“LANG="en_US.UTF-8"”这一句话屏蔽掉,然后重新启动,此时,大家进入bash,用locale可以看到
   LANG=
   LC_CTYPE="POSIX"
   LC_NUMERIC="POSIX"
   LC_TIME="POSIX"
   LC_COLLATE="POSIX"
   LC_M
   LC_MESSAGES="POSIX"
   LC_PAPER="POSIX"
   LC_NAME="POSIX" 
   LC_ADDRESS="POSIX"
   LC_TELEPHONE="POSIX"
   LC_MEASUREMENT="POSIX"
   LC_IDENTIFICATION="POSIX"
   LC_ALL=
  此时,CCE已经可以切换输入法,但是zhcon还不行,因为zhcon会重新设置LC_ALL,因此要修改源程序,将zhcon.cpp的636-673中有关LC_ALL的语句屏蔽掉,重新编译,即可切换输入法了。
  三、有关zhcon输入法的问题,zhcon内置的输入法只提供基本的输入功能, 不过zhcon提供了对TurboLinux的unicon输入法模块的支持,按照其网站(http://zhcon.sourceforge.net/faq_cn.html)上讲,可以很方便的使用unicon(chinput)的输入法,但我试了多次也没成功,可能与我没有装Xwindows环境有关,况且unicon还要重新编译内核,我嫌麻烦就没试了,编译minichinput虽然成功,但是无法启动,因此决定对使用zhcon自带的输入法,发现其自带的输入法无法输出GBK字符,原因有以下两个,
  1是winime.cpp中屏蔽了GBK字符的输出,修改winime.cpp的第35行,将mGBKOut(false)改成mGBKOut(true),重新编译即可,老实说,这是偷懒的做法,比较好的做法,是根据zhcon.conf中有关defaultencode 的设置及ime部分关于输入法的设置来动态修改比较好,因为按我的这种偷懒做法,会出现defaultencode = GB时也会出现GBK字符,但是显示为乱码的问题。不过不影响使用
  2是其自带的输入法的码表中没有GBK字符,因此我对常用的拼音、双拼根据win xp下的码表重新制作了码表,五笔则是根据海峰五笔7.0的码表,只能用7.0版本的,7.0以上的版本中带有大量unicode字符。我把码表制作方法在此简要记录一下(以拼音为例)
  用win xp中自带的输入法生成器(imegen.exe)对码表进行逆转换,码表文件在\windows\system32\winpy.mb,得到\windows\system32\winpy.txt,
  将winpy.txt用ultraedit的转换功能转换成ascii编码,文件-》转换-》Unicode到ascii,存盘即可
  将转换后的winpy.txt上传到linux中,如果上传就不用写了
  在linux中使用dos2unix转换回车换行键,dos2unix -o winpy.txt
     用zhcon中自带的工具把txt文件转换成码表文件,该工具在zhcon源码中的tools目录中,make install时并不会自动随zhcon一起安装,这应该是个bug, 该目录中有个README,有使用方法,
     ./win2mb < winpy.txt > winpy.mb
     然后把winpy.mb拷贝到/usr/local/lib/zhcon/input中
  cp -f ./winpy.mb /usr/local/lib/zhcon/input/py.mb
     然后修改/usr/local/etc/zhcon.conf中第98中有关设定值
  ime = 全拼,,input/py.mb,gb,native,修改为
  ime = 全拼,,input/py.mb,gbk,native

  其他输入法一样修改之,应该是可以用的
  也许还有其他的问题,但我目前没试出来,也许没写出来,欢迎大家与我QQ(1247741)交流,

[ 本帖最后由 whitecat 于 2008-10-15 16:49 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-10-20 14:08 |只看该作者
可惜很久没有更新了`~

论坛徽章:
0
3 [报告]
发表于 2008-11-30 00:25 |只看该作者

zhcon在kernel 2.6.27上无法切换至中文输入法的解决

http://blog.donews.com/quickmouse/archive/2008/10/23/1366752.aspx
zhcon在kernel 2.6.27上无法切换至中文输入法的解决
by quickmouse <quickmouse@263.net>
2008年10月23日

    今天上午才发的昨天工作总结,今天下午终于解决了其中的一个——zhcon无法切换输入法的问题。其表现是进入zhcon以后,按ctrl-space,无法像原来一样切换到中文输入法,而只是在屏幕上出现一个怪异的汉字,同时其他的快捷键也没有正确的反应。google一番似乎有不少人碰到过这个问题,其中最值得借鉴的一个页面是:http://www.linuxsir.org/bbs/archive/index.php/t-274306.html当中的:
============
yscong07-01-14, 12:00
这么久,都没人解决这个问题,难道国人都很笨,还是很懒,
我只好自己动手看源代码,在INPUTMANAGE.CPP这个文件里,会对键盘输入做处理.
原来LINUX支持不同的键盘编码,使用KDB_MODE就可以显示出来,ZHCON不能使用功能键是因为编码用了UTF8,用KDB_MODE -A 切换到ASCII后,ZHCON就正常了,ZHCON不支持UTF8编码的键盘,不知那位高人可以写个PATCH让ZHCON支持UTF8键盘编码.
中国人要自己写软件,不能都靠别人,台湾地震震断光纤对中国的影响值得大家认真思考这个问题
============

    我的环境当中没有KDB_MODE,但我立刻在环境变量、Linux kernel src的Documentation目录下查询了所有带utf字样的内容,终于在kernel-parameters.txt当中找到:
       vt.default_utf8=
                        [VT]
                        Format=<0|1>
                        Set system-wide default UTF-8 mode for all tty's.
                        Default is 1, i.e. UTF-8 mode is enabled for all
                        newly opened terminals.

    又跳回2.6.23.1的内核,同样的参数是:
        default_utf8=   [VT]
                        Format=<0|1>
                        Set system-wide default UTF-8 mode for all tty's.
                        Default is 0 and by setting to 1, it enables UTF-8
                        mode for all newly opened or allocated terminals.
    注意,在2.6.27上,这个参数的default已经调整到1了,于是重启机器在grub的kernel参数当中加上vt.default_utf8=0进行启动,一切又ok了。

论坛徽章:
0
4 [报告]
发表于 2008-11-30 00:31 |只看该作者
kbd_mod -a 好似也行

论坛徽章:
0
5 [报告]
发表于 2008-12-05 21:52 |只看该作者
我今天试了下zhcon,只成功了一次,其它的都死机了,很久没有任何反应,只得重启。
“zhcon --uft8 --drv=vga"
有错吗?
是不是locale设置不符合就会死啊?那可不好玩
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP