zhcon 高效的中日韩多内码虚拟控制台

Simplified Chinese Version English Version


简介

文档

  • 英文
  • 简体中文
  • pdf
下载

开发 其它

  • 历史
  • 致谢
  • 链接
zhcon的开发工作

编写zhcon的初衷是为广大Linux爱好者提供一个便捷的控制台中文使用环境目前zhcon仍远非完美,还在不断改进之中。 zhcon是开放源代码的自由软件,在GPL版权下发行,欢迎对Linux中文开发有兴趣的朋友加入开发,愿我们的共同努力能为Linux中文化作出一点贡献。

zhcon的开发计划在 http://sourceforge.net/projects/zhcon,通过该页面可以得到更多的开发信息。

对开发有兴趣的朋友可以加入开发邮件列表zhcon-devel,任何使用、开发方面的问题都可以直接发信到:
zhcon-devel@lists.sourceforge.net.

Linux控制台中文化的现状

Linux是一个功能强大,性能出众,稳定可靠的操作系统,但Linux设计之初并未考虑到非英语国家使用者的需要,从而造成在Linux上使用中文的困难,并极大制约了Linux在国内的应用和普及。随着Linux的普及,一些有识之士已经在中文化课题上展开了研究,从早期的chdrv,yact,wzce,cce到后来的蓝点,TurboLinux汉化内核,许多自由软件的爱好者为Linux中文化作出了贡献。

基于字符界面的控制台本身并不支持点阵化字符输出,要想使之支持中文,必须将控制台切换到图形模式并加入中文解码支持。这些控制台中文解决方案使用的技术不尽相同,基本上可以分为外挂式和内核汉化两种方式。外挂式解决方案使用伪终端技术来挂接中文平台,优点是不用重新编译内核,缺点是兼容性不太好,特别是控制台的escape处理 (需要重写VT Parser),相当困难。

现有的中文平台在易用性、扩展性、应用程序兼容性方面或多或少存在着不足,zhcon就是在这样的背景下诞生的。zhcon的目标是为中文Linux使用者提供一个便捷易用的中文环境,特别适用于初学者,以及需要发布linux中文应用程序的开发者。

基本工作原理

通常Linux的控制台工作在文本模式下,要想在屏幕上正确显示,汉字必须将屏幕切换到图形模式,这可以通过调用内核FrameBuffer驱动程序来实现。此外,还要能正确识别系统输出到控制台的汉字信息,并调用汉字显示模块将其输出到屏幕。

一种方法是像DOS下的汉字系统所做的那样:利用系统时钟中断定时监视显存地址B800:0000处的显示缓冲区 ,动态识别缓冲区中的字符信息。这种方法要求修改内核中断和TTY驱动程序,实现起来比较困难,而且需要直接操纵硬件视频缓冲区,大大影响了系统的可移植性和稳定性。

另一种方法就是UNIX下多数中文平台采用的基于伪终端(Pseudo-Terminals)的外挂式解决方案。伪终端(Pseudo-Terminal)是一种类似于终端的特殊的进程间通信通道(channel)。通道的一端被称为主设备(master pseudo-terminal device),另一端被称为从设备。写入主设备的数据被发送到从设备,而写入从设备的数据也可从主设备读出,对用户来说就好像自己实际上连接到了真正的计算机终端之上。简而言之,伪终端是位于虚拟终端和最终的终端设备之间的一种承担着输入输出转换功能的设备。

伪终端诞生之初就得到了广泛应用,典型的例子是Telnet服务程序。Telnet是一种远程登录服务,用户使用Telnet客户端程序通过网络登录到远程主机之上进行各种操作。Telnet服务程序就是一个伪终端,一端连接到Telnet客户端程序,另一端连接到主机应用程序,客户和应用程序之间通过伪终端进行对话。

当应用程序需要从输入设备(键盘)读入数据时,它向控制台设备(/dev/console)发出 系统调用read() ,接着内核 console 驱动响应该系统请求,从输入设备驱动程序(通常为键盘驱动keyboard.c)获得输入数据,并将之返回给应用程序。而当应用程序需要想控制台输出数据时,它通过write()系统调用将数据发送至console设备,再由内核 console 驱动转发到真正的输出设备(终端、打印机...)上去。

通过以上分析可以发现如果在应用程序从控制台设备(/dev/console)读入数据之前截获键盘输入信息,并提交输入法模块处理,再将处理后得到的中英文信息发送至应用程序即可完成中文输入。而在应用程序将输出数据写入/dev/console设备之前截获输出并交由汉字识别模块处理,最终由汉字显示模块输出至屏幕,即可实现中英文输出。这就是zhcon之类的中文控制台的基本工作原理。

邮件列表

 

zhcon-announce 只读邮件列表,发布zhcon的最新消息 achieves subscribe/unsubscribe
zhcon-users 讨论zhcon使用中的问题 achieves subscribe/unsubscribe
zhcon-devel The development, future, patch, bug report etc. achieves subscribe/unsubscribe
主要贡献人员

在zhcon的开发和维护得到了很多朋友的帮助,主要贡献人员是:

ejoy 发起人,主要开发者 ejoy@users.sf.net
Hu Yong 图形驱动、界面设计 huyong@ecircle.com.cn
Rick Lei 最初的BSD port和VGA 驱动代码, 主要贡献者 rick@uestc.edu.cn
Jia Zhendong 维护zhcon的RPM包。  

 

Todo List

 

 


最后更新于: 20 September, 2003 by ejoy, huyong
Powered by SourceForge Logo