当前位置:Linux教程 - Linux - Chdrv_HOWTO

Chdrv_HOWTO

版权声明 :
(1) 你可以在不涉及商业行为的情况下拷贝,储存本资料
(2) 你可以把它转为书面之形式, 但以一份为限. 且任何书面形式的传
播需取得作者的同意.
(3) 作者保留其它一切相关的权利
(4) 任何转载及加工的行为均不得将版权声明删除


对於任何和本文有关的事项请直接和[email protected]连络

=====================================================================

chdrv是一套用绘图模式来模拟中文终端机的程式,对於惯於使用DOS 的人来说
我们可以叫它中文系统,而正式的名称为中文终端机模拟程式。本文即在描述如
何使用这套程式来使LINUX可以直接执行中文有关之动作。


一 如何取得CHDRV
CHDRV可由NCTUCCCA.EDU.TW:/Chinese/UNIX/Linux/Chinese-TTY取得,至本文完
成为止最新的版本为0.5pl3。本套程式可分source、binary、font三部份。你至
少需取得字型及source,binary二者之一。

二 如何安装

2-1 由原始程式安装
你必须先取得chdrv0.5-2.tar.gz及chdrvfont.tar.gz,然後在/tmp或程何一个
子目录下建一新的子目录,例如叫chdrv,然後用下面命令将它们解开。

gzip -dc chdrv0.5-2.tar.gz | tar xvf -

在成功的解开这二个档案後应该可以得到Makefile和许多其它的档案。接下来你
可以在正式安装前根据你的系统对Makefile做适当的修改。值得提醒的是,这个
动作通常是不需要的。但你可以经由这个动作指定你的原始程式,执行码及系统
档案会被放在那些地方。


接下来打入如下的命令使你的原始程式安装到正确的地方,

make unpack

你应该此时用ls命令确定档案已被拷贝到正确的地方,如果不对可能问题出在你
修改Makefile的时候,请仔细修正。确定无误後你就可以把原来的档案(在/tmp
下的)删除。然後切换到你的工作目录,如果你没有修改的话应该是/usr/local/
src/chinese/,再打入make install。接下来可能要经过一段相当时间的编译动
作(在我的486-33上要15分钟)。当make正确的完成後你应该已经得到一份可以工
作的系统了。如果有问题,你可以自已处理,或是直接和作者连络,作者的
email
是([email protected])。

2-2 由二进位码安装
和上述过程比较,二进位码安装是比较简单的。你必须取得chdrvbin05-2.tar.
gz
和chdrvfont.tar.gz二档案,然後在把它们放在一空的目录中,打入

gzip -dc chdrvfont.tar.gz | tar xvf -

然後再打入
./installbin

应该就可以得到一份可工作的系统了。

三 如何启动CHDRV
CHDRV使用一种类似Client/Server的模式来启动系统,你必须在进入中文模式前先

启动ttyserver这支Server程式,在打入ttyserver後,你会见到系统闪二下,这二

下可能间隔很长。这要视你的机器而定,闪完之後,会回到shell 但没有任何改变

。(当然ttyserver已经在系统内做了很多看不见的动作)你这时可以切换到任何一

个萤幕然後打入ccc 就可以进入中文模式内了。你这时依然可以和平时一样使用
Alt-F#切换萤幕,你也可在其它的萤幕上打人ccc而使其它萤幕也进入中文模式内

但请不要在已进入中文模式的萤幕上再打入ccc,这虽然并不会造成伤害,但可以

会干扰至系统的连作。另外ccc也可加上 -wx## -wy##两个参数来设定萤幕的长宽

有些系统会假设你的VT100萤幕有25列,所以请在使用这种系统时加上ccc -wx80
-wy25
的参数,此时萤幕的最後四行永远是空白。但有时你会看到有些残留的字在最後四

行,此时按下ctrl-l就可以把它清除了。

四 如何设定CHDRV
CHDRV的大部份参数都是在ttyserver启动前被设定,而大部份可设定的参数都
被放在/etc/chinese.conf中,如果你已经安装过0.5pl2以後版本的chdrv,应该已

经在/etc/chinese.conf中有一份参数,安装程式在此时不会将套装程式中的新参

数档放入/etc中。所以如果在新版中你发现有你所需要的参数,请依套装程式中的

chinese.conf档自行加入您的参数档。

而这个参数档的格式如下,在参数档内依参数之种类分成许多区段,每一个区段由


BEGIN 区段名称
....
END 区段名称

包起来。以下分区说明,我们在说明中采用下列惯例
(1) ## 代表数字 如 80
(2) $$ 代表未用引号的字串 如 abcd
(3) ''$$''代表有引号的字串 如 ''abcd''
(4) *表示该参数目前无作用

4-1 萤幕模式设定
格式:
BEGIN WINDOW

END WINDOW

其中可用的参数有
SIZE ## ## 定义萤幕上可见区域的宽度及长度
*FORECOLOR ## 定义前景的颜色
*BACKCOLOR ## 定义背景的颜色
STSTEMCOLOR ## 定义状态列的颜色
4-2 输入法表格
格式:
BEGIN INPUT

END INPUT
其中可用的参数有
PHONETIC $$ 定义注音输入法的表格,此参数只能出现一次。
MULTI $$ 定义万能输入法所需的表格,此参数可以出现至
多六次,所对应的表格将依序放在第三到八号输
入法。
4-3 系统使用字型
格式:
BEGIN FONT
STYLE {INTERNAL|HBF}

END FONT
系统字型可分二种,一种是系统内定格式,一种是HBF(Hanzi Bitmap Font)格
式,以下分别说明之。

4-3-1 内定格式字型
当字型区的第一行为STYLE INTERNAL时,系统使用内定字型格式。此时你必须
指定中文和英文(ASCII)所需的字型档及该档的格式。举个例说,在系统内定的
国乔字型之英文字型档为kctext16.f00,而该档有256bytes的档头且档内每个
字是8x16故需使用下列参数

ASCII kctext16.f00 256 16

而其中文字型档的格式较奇怪,刚开始的765字是图型码,所以为16x16的字型,
但其後的中文字为16x14的点阵字。所以应用下列参数

CFONT kcchin16.f00 256 16
1023 411 0 354 0 0

此处1023代表从字型档的第一字到第411字应放在顺序码1023-->1023+411的地
方。而字型档第412到765(=411+354)字应在顺序码0-354的地方。这边的顺序码
是将0-0x800保留为图型字码,而0x800以後则依序将所有big5的字码排入。故
下一个参数应该为

CFONT kcchin16.f00 24736 14
2047 13094 0 0

最後一对 0 0是表式本列结束,你可以在其後至行末加入一些注解。
所以总结来说,描述一个KC FONT的参数为

ASCII kctext16.f00 256 16
CFONT kcchin16.f00 256 16
1023 411 0 354 0 0
CFONT kcchin16.f00 24736 14
2047 13094 0 0

4-3-2 HBF字型
4-3-2 HBF字型
HBF字型的定义和实作请参考HBF_std_v1.0这份文件,你可以在NCTUCCCA.EDU.TW
的/Chinese/ifcss/software/fonts/HBF中找到它,而在同一个地方也可以找到
所有的HBF字型的定义档和相对应的字型档。但在设定字型时你只要拿到正确的
字型档和定义档即可,也就是说,如果你用倚天的字型你必须有倚天的定义档。
而当你用cclib16这个简体字字型时你必须拿到cclib16.hbf这个定义义档。

由於HBF中只规定了中文字型档而没有规定如何取用ASCII码的字型档,所以我们
仍沿用内定格式的字型档。要使用HBF字型在字型区的第一行必须为
STYLE HBF
而下一行应为ASCII字型定义。然後以HBF为关□字,
HBF $$
$$为HBF定义档(如前述cclib16.hbf)的完整路径及档名。如
HBF /usr/local/lib/chinese/cclib16.hbf
如此便可。但由於HBF格式的档名均无路径在内,我们必须告诉系统到那去取得字

型档。故需加入一参数以告诉系统字型档的位置
HBF /usr/local/lib/chinese/cclib16.hbf /usr/local/lib/chinese/
如此可以完整设定一个中文HBF字型。

4-3-3 列印字型
列印字型全采HBF格式,无论系统字型是内定或是HBF。你必须先给定印列字型的
路径
路径
PFONTPATH $$
然後给定各种字体的字型
PFONTL 隶书
PFONTK 楷书
PFONTM 明体
PFONTD 内定
即可。这些字型档和HBF定义档都可在上述的位置上找到。本系统是用cnprint来
将输入转成postscript显示,所以你须还有一个postscript印表机或是
postscript
的转译器。

五 环境设定
本区中可以让你设定当你进入中文时在shell将控制权交给你前所执行的一些命令

在本区中的所有字都会被逐一抄到这个命令档中。所以你可以用它来初始一些环境

变数。是有点类似sh中profile的功能。你也可以指定一个~/.chrc的档让每个使用

者可以做自已的初始化工作。

六 如何设定一个使用简体字的环境

这个问题应分二方面来说,首先你必须确定你要用那一种内码,目前有GB和BIG5二

种可能性。如果你使用BIG5码,你应该用国乔的kcchin16.f15和kcchin24.f15这二

个字型档来做列印和显示的工作。如果你使用GB码,那应用cclib.16和cclib.24这

二个档。至於格式不管内定或HBF均可,当然用HBF你可以省去很多工作。在这边我

举二个例子说明如何设定

6-2 用BIG5码
如果你用BIG5码那问题比较简单,你唯一需要做的工作是取得kcchin15.f15这个档

案,然後把它拷贝到你的系统目录(通常是/usr/local/lib/chinese)中. 後设定
/etc/chinese.conf使它由kcchin16.f00改成kcchin16.f15. 然後执行
chconfig /usr/local/lib/chinese/
系统重新设定後再启动中文DAEMON ttyserver即可

6-3 用GB码
如果你使用GB码,则你必需使用HBF格式,首先取得cclib.16和cclib16.hbf. 然後

修改/etc/chinese.conf中使用HBF font如下

BEGIN FONT
ASCII /usr/local/lib/chinese/kctext16.f00 256 16
HBF /usr/local/lib/chinese/cclib16.hbf
...
END FONT
然後重新启动系统即可



七 如何设计自己的万能输入法表格
Chdrv中的万能输入法表格之格式是沿用DOS下一个中文系统格的格式
. 它的格式相当直接, 直接阅读系统的□例档dayi.def就可以了解了. 在
这边我提供一个概要使大家能较快了解其内容. 在表格上可区分为三段,
段与段间以%%区隔. 第一段为提供一些旗标的设定, 如在复选时要不要发
出声音来提醒使用者. 目前系统提供的功能相当少, 只有MARK和BELL二个
选项. MARK用来设定状态列上的代表符号, 如

MARK = [大易]
BELL

代表在这个表格生效时在状态列上显示""大易""二个字, 而常复选择时电脑
会出声提醒使用者.

第二段是用来设定当键盘被按下时状态列上所出现的符号. 在中文输
入中, 通常必须2-4 键才能代表一个字, 系统必须在实际送字前先在状态
列上显示一些符号. (我想用过中文系统的人应该知我在说什麽)本段即在
一一将这些符号和键盘上的符号相对应. 为了减少重复, 我们允许连续的
对印不必一一列出. 我用一个例子说明

a 日月星

代表当输入a时状态列显示''日'' ,b显示''月'', c 显示 ''星'' . 我们不必把
bc也写出来, 只要它们在ASCII码上是连续的.

第三段是实际的按键--字码对照表,按键和字码以空白分开. 字码只有
二个byte有效, 其後可加上任意的注解.对照表以行为单位一行一字.

CXTERM的TIT档和我们的格式差异不大, 可以半自动的转换. tit2def
便提供这样的功能. 但转完後我们还必须做一些人工的加工工作.

在系统内的注音表格的格式和上述并不相同, 它只有第三段, 且它的
键盘对印一定是四个字母

1 l3 保

四个字母依序为子音,介音,母音,声符.




十 如何使用和内建不同的注音输入法键盘对照表
本节暂时保留, 下一版将有比较简单的做法

九 如何在网路上使用中文
在LINUX中用
tel -8 xxx.xxx.xxx.xxx
就可以使用中文, 但目前因模拟上的缺失故画面有时会混乱. 但目前为
止作者在网路上使用时尚无严重的缺, 最多是按CTRL-L叫它重画而己.




十 如何让chdrv和x-windows共存
Chdrv理论上因为和x-window使用相同的技术, 所以可以和x-window完
全相容. 但为避免不必要的问题, 我们应避开x-window所使用的console.
在SLS和SLackware中x-windows的console设在console#7,CHDRV预设为1-6
故完全没有问题. 但在Debian中x-windows的console设在5, 故我们应
把它自己设到7去.

十一 如何读取HZ格式的文字档
待有心人提供资料

十二 如何使用mule(多语文版本的emacs)
Chdrv可以支援mule所需的EUC格式, F11是切换键, 不过若你原先不是
用mule,或你并不需要多语文的环境,建议你使用13节中的方法使用Emacs.
既简单又可未来版本的Emacs相容.


十三 如何在EMACS 19下直接使用中文

由Emacs 19版後Emacs已可在8-bit模式下运作, 所以想要用Emacs来编辑
中文未必一定要用Mule. 我们可以用Emacs的LISP程式达到我们想要的效果.

你应该把cemacs.el或cemacs.elc之一先拿回来, 它们可以在

NCTUCCCA.EDU.TW:/Chinese/UNIX/Linux/Chinese-TTY

中获得. 把它们放在emacs的lisp目录内, 通常我们把它们放在
/usr/lib/emacs/site-lisp中. 然後用

emacs -nw -l cemacs

来叫出Emacs就可直接使用中文. 我们通常在bashrc中用

alias cemacs=''emacs -nw -l cemacs.elc''

以後用cemacs就可以编辑中文.