|
|
|
|
|
| |
| ★初始化 使用汉字输入服务器Chinput1.0前, 用户必须调用 HZclientInit() 进行初始化. 它的主要用途是注册原子(Atom). 当 服务器起动后, 便不能再起动相同的服务器. void HZclientInit(dpy) 参数调用: Display *dpy; /* X server display */ 返回值: None 有下列原子被该函数注册: hz_protocol_atom /* marking the server */ hz_input_atom /* client send */ hz_output_atom /* server send */ hz_query_atom /* query information */ hz_reply_atom /* answering information */ hz_config_atom /* configure server */ ★获取服务器信息 有时客户程序必须获取并核对服务器的有关信息, 目前客户程序可以访问 如下信息: 协议, 版本, 编码, 状态. int HZqueryServer(dpy, win, type, str) 参数调用 Display *dpy; Window win; /* 客户窗口ID */ int type; (type 定义在 hzclient.h 中, 为 HZCLIENT_QUERY_PROTOCOL 0 HZCLIENT_QUERY_VERSION 1 HZCLIENT_QUERY_ENCODING 2 HZCLIENT_QUERY_STATUS 3 返回 char *str; 函数值: 0 (服务器未起动), 1: 正常 ★向服务器输送按键信息 用户按键信息(KeyPress, KeyRelease)都可以送到服务器, 由服务器处理. 然后等待服务器的回送. 这样就涉及到两个问题, 一是如果服务器未起动或 在使用过程中死掉怎么办? 二是如果用户需要特殊按键如: Escape, Delete, Home, End, 箭头键等怎么办? 本函数巧妙地解决了上述两个问题. 函数首先检查服务器是否存在, 如存在, 则把按键送给服务器, 否则, 把按键信息以客户信息(ClientMessage)的形式 送给自己. 这样, 用户只需要处理ClientMessage即可. 解决第二个问题的方法是, 对服务器不起作用的按键返送给客户程序. 如用户 按了删除键或空格键, 它们既对服务器有重要作用, 又对客户程序有重要意义, 删除键通常用来编辑用户的输入区, 空格键用作首字输入. 但当它们不对服务 器不起作用时, 如用户的输入区删除干净或联想输入内容已尽, 服务器则把 按键和按键状态(如是否当时有Control, Shift键按下)返还给客户程序. int HZsendKey(dpy, win, eve) 参数调用 Display *dpy; Window win; /* 客户窗口 ID */ XKeyEvent *eve; 返回 OK 当然, 用户还可以首先过滤键然后决定送出与否. ★接收服务器的汉字转换 当用户发现有ClientMessage时, 可以调用下列函数处理 int HZprocInput(ev, number, keycode, keystate, str) 参数调用 XClientMessageEvent *ev; 返回 int *number; /* key number */ unsigned int *keycode; /* keysym */ unsigned int *keystate; /* keystate */ char *str; /* hanzi, if any */ 函数值为 HZSERVER_OUTPUT_NORMAL_KEY 0 HZSERVER_OUTPUT_FUNCTION_KEY 1 HZSERVER_OUTPUT_HANZI 2 HZSERVER_OUTPUT_BAD -1 -1: 错误 0: 正常按键(此时keycode有意义) 1: 特殊按键(此时keycode 和keystate有意义) 2: 汉字(只有此时str才有意义) ★设置服务器属性 虽然服务器的属性几乎可以全部由热键设定, 但是提供对 客户程序提供设置函数更为方便 HZconfigServer(dpy, win, flag, n1, n2, n3) 参数调用: Display *dpy; Window win; /* 客户窗口ID */ int flag; 指定设置种类 HZCLIENT_CONFIG_DEFAULTCOLOR 0 HZCLIENT_CONFIG_DIMCOLOR 1 HZCLIENT_CONFIG_LIGHTCOLOR 2 HZCLIENT_CONFIG_PANELCOLOR 3 HZCLIENT_CONFIG_TEXTCOLOR 4 HZCLIENT_CONFIG_HZFONT 5 HZCLIENT_CONFIG_FONT 6 HZCLIENT_CONFIG_INMETHOD 7 HZCLIENT_CONFIG_ENCODING 8 No HZCLIENT_CONFIG_DICTIONARY 9 No HZCLIENT_CONFIG_ASSOCIATION 10 No int n1, n2, n3; 放置设置参数 如果设置颜色, 则放置三元色值(0-255), 如设置输入方法, 仅仅把输入方法号码放置在 n1中, 如设置成为系统缺省颜色系列, 则毋须 设置此三参数(不用的参数可置零). 返回 OK | |
作者:于明俭
中国科学院高能物理研究所计算中心 | |
|
|
| ©Tcl/Tk中文网 2003-2008 |
|
|