================>8 BEGIN of WHITEPAPER_UNICON.TXT 8<================

                         LINUX ն˹ʻ
			==========================
                         ˼˾
                        arthur.ma@turbolinux.com.cn

ժ  ҪľUniconϸLinuxն˹ʻ漰
	Linuxںˣ豸Locale뷨ֿ
	뷨ͻ˵ȵȡ
ؼʣʻLinuxںˣ豸Locale뷨뷨
	ͻˣ 뷨ģ顣

һ. Linuxʻ״
    Inernetռرʹ޶ֵֽĹңʼ
ʶʻҪԡ
    ĿǰԼı룬磬ձJIS,KSC,йGBKͼ
ҪʵʩGB13080ȵȡ˶ı룬ʹϵͳݺ͹ʽΪܴ
⡣
    ֵ˸˵ǣLinuxʱ׼֯ڽշLi18nux2000
ݰòݰķʵLinuxϵͳ׼һؽ
ʹȫ忪Ա͸档LinuxĹʻһӴḶ́
֧ԺַֽǲɻȱģƶLinux
ռ
    ʻ֯ƶUNICODE׼ں̶ܴϽ⡣Ŀǰͳһ
UNICODEɵʱڣԣǻָ֧ı׼
    ĿǰLINUXʻϻڴͳUNIXʽϡͨLOCALEΪ
ʻں˲֧˫ֽڡXFree86ֶֽ֧ԣʹùʻ
һЩHackingĹǲøַʽ޸ںˣUNICONд
TTY޸п⣬޸XһЩѾ̶LOCALE
ȡ
    õķҪȵʻ±׼

. Unicon зʷ
    Linuxں˴2.2濪ʼ֧framebuffer(һͼηʽ)͹ṩ
նĵĿɹڵһں˺ӦǺ. ̩
Emailᵽ˼. 199910£TurboLinuxUniconƻͬ
11µףȷˡLinuxĵĺʾĳԡ
ϸ˫ֽʾʵ֣еԴǹ״ι
˺Դ롣
    TurboLinux ʦUnicon뷨ķֲṹơ
ù˾֧֡20001£Uniconһ档ͬʱϲдBig5
ģ顣Unicon֧Եʵ롣
    Unicon1.020003TurboLinux6.0. ð汾֧CCE
뵫νṹǺ
    µ˼뷨ͻ/ṹʱTCP/IP
ʵֿͻͨѶġ2000ѮUnicon2.0Խ׶Ρʦ
ӦٶȲǺܿ죬ö̬ʵַ˼·ʵ
֣ˣUnicon2.0 ɣBetaԡ 
    ³TurboLinux6.1 棬Unicon2.0汾һ߶ȷֲ
Ľṹÿһ뷨ֻǶӦһûԼ
뷨ֻ밴̶ʽдԼ򼴿ɣ󷽱ûĿ
⣬ϵͳʿķʽҲΪûʡϵͳԴͬʱXFree86ʹ
Chinput뷨ʹTurboLinuxĲƷ߶ͳһ
    ·ݣUniconʾ塣ʹʾGBGBKBIG5JIS
KSCM
    £ЯUniconʹϵͳڲͬTTYʾͬ
塣
    £д˶뷨ֳ֧򡣲дùߡ
    ʮ£Unicon3.0˲Խ׶Ρ
    ʮһ£Unicon3.0
      
. ʲôUnicon
    UniconLinuxں˻ϣӹʻֵ֧ĳں˲
豸뷨UniconͻӦóڴ˻
ԡնϵͳȣUniconŵ㣺
       1. ޶ֹ֧ʻĿǰϵͳ֧Big5GBGBK
	  JISKSCȡ
       2. õļ
          UniconСں˸Ķȡϵͳݡն
	  ȣԶ̣꣬ʾõ֧֡ʹο
	  ǣֹ֧Ҫ޸ģͿ
	  ɵشԡ
       3. ÿTTYǶĻԼ״̬뷨,Localeȣ
       4. õķֲṹʹϵͳչ
          ϵͳUNIXϵͳṹķϵͳ㣺ں˼
	  뷨뷨˽ṹչֲ
	  磬ҪϵͳֲһµĻʱҪĹ
	  豸ϣಿֻϲҪܴ޸ġ
       5. ṩAPIͨ뷨ӿ
          ΪͨԱṩӿڳĺ
	  1> 뷨ģĽӿڣûֻ谴˽ӿھͿԽԼ뷨
	     ӵϵͳȥ
	  2> Client & Server Ľӿڣϵͳıʱֻ޸ⲿ֣
	     ϵͳ䡣
       6. ֶ֧
          ϵͳֶ֧ںˣڴ˻ϣṩĶ̬л
       7. ֶ֧̬лԼ뷨
          ϵͳ뷨Ļϣṩ̬л
	  󷽱û
       8. ΪXFree86Chinputṩ뷨
          XFree86ChinputUniconʹͬһ뷨ԣ
	  ǿԹ뷨
       9. ṩȼԶ̬л
          ϵͳṩȼлԣ弰뷨

. Unicon
    ϵͳͬUniconʱǼٶÿTTYһĻ
Լ״̬ɴˣÿԼ뷨塣ϵͳϣ
Unixϵͳص㣬ϵͳΪɲ㣬ܽں˵޸ļ
ٵСϵͳΪ¼㣺
        1. ں˲
           Ʊʶ
	       ṩƱʶ֧ϵͳ˵ȵȷʾⲿ
	       ִdrivers/char/console.c
           ʾ
	       ʾFrameBufferƳϡ
	       ֻ޸ĸ߲ģ飬ȥܵײø
	       ʹǵüԴﵽѡΣUNIKEYԷص
	       򣬷ؿʾϸԲμںԴļ
	       drivers/video/fbcon.c
           ̹˳UNIKEY)
	       طԼ̽йˡһڼжϣ
	       TTY̴ϡ֮Ϊ
	       1> Ǳ˼,һЩܼϼ
	       2> Ǳ뽫Ľͻزϵͳǽ
	          ýͻϵͳʱ졢÷ǽ
	          дصTTYȥUNIKEYԺܷضԼ
	          ˡϸμںԴļdrivers/char/pc_keyb.c
	          include/linux/tty_flip.c
           
               Ϊ֧TTYʾ
	       ͨȷǰTTY弰뷽ʽ
	       ȷȷʾϸμdrivers/video/fbcon.cȡ
        2. 豸UNIKEY
           ģΪ߲ģṩ˼̹ˡ뷨ʾȵȡ
	   ⣬ϵͳȼ˷룬Դ͵߲ģ顣¼
	   棺
           뷨ʾ
	       ģǶUNICON뷨ʾ֧֡ͨ׼UNIX
	       ioctlʵֵġ
           ˳
               ģTTY1TTY6ģ⣬
	       1. ϵͳˣԹܼϼķ룬ȷ
		  뷨ȷ׼ȷؽϵͳļϢ
	       2. 뷨ϵͳͼĽӿڣͨӿڣ
		  뷨򽫷ý͵TTYӶӦó
		  ý
           
               ̬塣ûԸԼϲã
	       ͬģŵϵͳУӶﵽûЧ
        3. 뷨
           ģ뷨ĹΪͻṩ뷨
	   άÿӣʹÿͻԼ״̬⣬ͨ
	   ʿ⣬ʹϵͳڴ濪͵͡
        4. 뷨ͻ
           ģΪûն˳ȣͨ뷨
	   һ뷨ͨUNIKEYϵͳ̣õļ
	   ͵뷨뷨ͻȡ
	   ýʾĻϡ⣬Ҫ
	   лûʵȵȡ

. Unicon Ĺԭ
    1. ʾ
       ʾģ֣Ҫ
	   1> ͼηʽ£
	   2> бֿ⡣

       ٶTTY2³
            main ( )
            {
                puts("helloworld.\n");
            }
       ϵͳͨopen("/dev/tty1")Ȼͨϵͳwrite(2)ϵ
   ͳںconsole.cdo_con_writedo_con_writeں˵FrameBuffer
   ߲fbcon.cfbcon.c þ豸
       FrameBufferַʾĻϡϵͳõĬϵںֿ⡣
       Uniconʵϣ޸FrameBuffer߲Ƴfbcon.cĬ
   ϵָָֿǵֿ⣬ϵͳͿʾˡ

    2. 豸
       ǵUnikeyֻΪӦó뷨ں֮ṩ
   һͨѶĽӿڡǲñ׼Unix豸ӿڣstruct file_operations
   Դ룬һ豸γˡ
       ϵͳʼ豸ʱǽںйUniconֵָ֧븳
   ֵʹںܵĺ

    3. 뷨
       뷨ƼϵͳΪӿࡢ뷨
   ģ顢뷨ģתģȵȡ
       һͻӵʱһͻ
   һ뷨ȼ뷨Ƿ򿪣ûд򿪣ͽ
   򿪣Ȼʼ뷨ͻά뷨״̬
   ͻ𵽷ȡϢ⣬ͻ״̬ά
  ȫǵȣ
    4. 뷨ͻ
       ͻͷӣͨ뷨
   ͻӷȡϢʾ⣬ͻ
   ǰ״̬ȫǵȣ           

. Uniconϵͳͼ
             Unicon User/Kernel/Hardware Architecture
             ========================================

                             +------------------+ 
   +-------------------+     | libimm_server.so |     +--------------+
   |   unicon          |  +->|                  |<-+  |   chinput    |
   |                   |  |  |   shared input   |  |  |              |
   |   console         |  |  |   method server  |  |  |              |
   |   daemon          |  |  +------------------+  |  | X Window XIM |
   |                   |  |  |.so input methods |  |  |              |
   |      +------------|  |  |  /usr/local/lib  |  |  |--------------|
   |      |immclient.a |--+  +------------------+  +--| immclient.a  |
   +-------------------+                              +--------------+
     ^  ^ 
     |  |              +---------------+
     |  |              |  text mode    | 
     |  |              | applications  |
     |  |              +---------------+
     |  |                      ^
     |  |                      |                              user
   --------------------------------------------------------------------
     |  |                      |                              kernel
     |  +-----------------+    |          font modules  
     v                    |    |         +--------------+
   +---------------+      |    |         | encode-gb.o  |------+
   |  /dev/unikey  |      |    |         +--------------+      |  +---------+
   |               |      |    |         +--------------+      |--|         |
   | driver module |      |    |         | encode-gbk.o |------+--| font    |
   +---------------+      |    |         +--------------+      |--| manager |
        ^                 |    |         +--------------+      |  +---------+
        |                 |    |         | encode-big5.o|------+     | | |
        |                 |    |         +--------------+            | | |
        v                 v    v                                     | | |
   +-------------+    +-------------+    +--------------+            | | |
   | keyboard    |    |/dev/tty[0-6]|    | frame buffer |<-----------+ | |
   | driver      |<-->|             |<-->| driver       |<-------------+ |
   |             |    | console tty |    |              |<---------------+
   | pc_keyb.c   |    |   driver    |    | fbcon.c      |
   +-------------+    +-------------+    +--------------+
        ^                                      |
        |                                      |
   --------------------------------------------------------------------
        |                                      |               hardware
        |                                      v
   +-----------+                         +------------+
   | keyboard  |                         |  display   |
   +-----------+                         +------------+

. Uniconδ
   ĿǰUniconƷһ̶ûҪ󣬵ȱǷҪ
:
       1. 뷨дߡǺܶûҪ
       2. ϵͳõ߳ģTTYǺܺõĽṹ
       3. ϵͳ廹ģ顣ûֱӼ嵽ں˵Ĺߡ
       4. ŷ֧

   ԣδUniconչǡ
       1. ߳ģÿTTY
       2. 뵽ں˵ʵù
       3. ŷԵ֧֡
   ⷽøá

================>8  END of WHITEPAPER_UNICON.TXT  8<================
