Index
 1 LD_PRELOAD的意义 和 XA+CV的原理
 2 DEBUG OUTPUT
 3 指定 libX11.so的位置
 4 输入模式和显示模式
 5 适用软体
 6 +CV
 7 已知 BUG

1  LD_PRELOAD 的意义
	在许多作业系统下(sunos , linux , freebsd ....)
	执行程式会自动动态联结到环境变数LD_PRELOAD所指向的动态程式库档
	XA 的原理就是利用这个方法拦截 libX11.so 的函数功能,只要程式本身
	原本有呼叫libX11.so 的 NextEvent 或 XLookupStrings的话,都会被XA
	拦截,依照一般的程式写作方式,可以让被拦截的程式拥有和Xcin沟通的机会.
	进而拥有中文输入的能力.
	由於XA的原理就是利用拦截函数的方式欺上瞒下,所以有很多情形XA的骗术会
	失灵,就如同DOS时代的中文系统一样,但一般的情形下是可以的,不过有些英
	文软体有由没有考虑到8bit的输入,所以有时要把locale调对才行,不过这是
	软体的问题,XA or Xcin 不负责,就如同cwin95下有些软体中文也有问题.

	另外一个问题是 LD_PRELOAD本身的限制,由於安全上的问题, 当你执行到
	改变身份或权限的程式时,导致uid!=euid,则LD_PRELOAD自动失效,XA当然
	失去作用,可以利用XA的办法修改libX11.so,就不用LD_PRELOAD了.

	比较难解觉得问题是,如果程式是static linked 的话,那就算修改libX11.so
	也没用,只好利用"类似"XA的方法修改Xserver .

	在一些作业系统下,没有LD_*系列的环境变数,但有_RLD_*系列的,
	用法有一点差异,但差不多

	+CV 类似 XA ,只不过他取代的是 显示的部份(XDraw.....Strings)

2 DEBUG OUTPUT
	 /tmp/wraplog 是 log 所在,可以导向到/dev/stderr 等等地方,
	如果需要较多的除错讯息,请在make时define P_LOG

3 指定 libX11.so的位置  
	compile是会猜一下你的libX11.so 的位置,大致上会猜对,
	如果你用的是其他地方compile来的binary,或者改变系统的话
	可以用 环境变数 XA_LIBX11 的质,取代原本内定的libX11.so 的路径, 
	比方XA_LIBX11=/usr/X11/lib/libX11.so

4 输入模式和显示模式
	输入模式有三种 0) Disable   
			使XA的功能失效, 用在使用本来就支援xcin软体的时候
	      	 1) Tradition
			XA0.3之前的方法,输入时配合CXwin的画面比较好
		 2) Discrete 
			一键 1byte,能使用的软体较多, cmdtool, textedit,
			xcoral 等等.但输入时配合CXwin显示比较有问题,这主
			要是CXwin的问题,不是XA的问题,此模式内定
	要改变输入模式,只要按下 F12 这个键 ,会跑出一个窗子,显示现在的模式
	然後按下 0 ,1 ,or 2 选择模式,窗子就会消失,如果按下的键不是 0,1,2的话
	输入模式不改变.

	环境变数 XA_MODE 可以取代原来的内定模式
	可能的质是 0 ,1 , 2 三种(eg export XA_MODE=1
				or  setenv XA_MODE 1 ) 

	显示模式有两种  a 打开   b 关闭
	     用法与输入模式类似, ,只要按下 F12 这个键 ,再按下 a 或 b 可改变
	预设值是打开. XA_CVMODE 这个环境变数可以改变预设值
	可接受的值是 a 和 b

5 适用软体
	  成功者 :  xedit , xpaint , xterm ,color_xterm ,cxterm,rxvt
  		  netscape (3.x 4.x linux 使用mode 1) , xmftp , chpower ,nedit,
		  xjed ,nedit ,xxgdb ,  xman , xclipboard , xposit+ 
 		(不代表配合CXwin中文显示没问题)

	  需要mode 2者: textedit , cmdtool ,等openwin程式
			xcoral: xcoral中的f_ascii中有用到  isprint( infos -> ch ) 
        	          isprint 和 locale有关 (at least linux and freebsd)
			如果设好的话旧没问题,要不然有两个办法....
 			1) 改 xcoral的source 把isprint remark掉
			2) 在 XA 中拦截 isprint (这可没那麽简单 ,因为
				每个程式库对isprint有不同的处理方式
				有些用define 的)
	  需要 mode 0(disable)者: crxvt ,ted(中文)等等本来就支援xcin的软体

	  失败者: 
		   netscape(sunos4 version) 因为 没有联结到 libX11.so
		   staroffice: swrite 失败 (xa 0.3)
	           xcoral: xcoral中的f_ascii中有用到  isprint( infos -> ch ) 
        	          isprint 和 locale有关 (at least linux and freebsd)
			如果设好的话就可以用mode 2没问题,(中文显示的不错)
			要不然有两个办法....
	 		1) 改 xcoral的source 把isprint remark掉
			2) 在 XA 中拦截 isprint (这可没那麽简单,因为不同环境对
				isprint有不同处理法,有些会把isprint等等的ctype 
				做一个#define)
		   xv:  和xcoral问题应该类似
	大多数的软体 用预设值 输入模式 2 , 显示模式 a(打开) 可正常运做
	但仍有不少软体需要特定模式
	netscape 最好设成  XA_MODE=1 XA_CVMODE=b
	crxvt 等等本来有支援 xcin的软体 通常必须 XA_MODE=0
	如果本来就有中文显示的软体,最好也  XA_CMODE=b 省得麻烦,
	不过大多数应该没有太大问题,
	有CXwin 中文Xserver时,也可使用 XA_CVMODE=a 打开,显示效果通常会比只用
	CXwin 时好,(但速度有可能比较慢)	
	某些XA_MODE=1 可用的软体, XA_MODE=1 时比 XA_MODE=2 舒服, 但XA_MODE=2
	仍然可用
  
6 +CV
	可用  XA_FACE这个值来指定 字体 ,如 XA_FACE=kai 
				   XA_FACE=ming 
	当然,你相对映的字形要装好
	显示模式部份参考前面 "4 输入模式和显示模式"
	其他可参考 README.+CV


7 已知 BUG
	目前,已知的bug如下
	xa 的bug , crtl-win95  为core dump
	     常常按下 右下角的 0/Ins   会中断程式
	     按下 F12 时 会擦掉部份萤幕
	              而且, 显示很差,字形有时太小,有时看不到,待改进
	+cv bug
	字形大小判断仍不够好,有的时候会使得萤幕看起来脏脏的,有时会有问题
	中文断字文法处理
