|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T X
Length: 14532 (0x38c4) Types: TextFile Names: »XimProto.doc«
└─⟦276d19d6e⟧ Bits:30007243 EUUGD5_I: X11R5 └─⟦4856bf7e7⟧ »./mit-4/mit-4.00« └─⟦635ff9e7e⟧ └─⟦this⟧ »mit/doc/I18N/Xsi/Xim/XimProto.doc«
$Header: XimProtocol.doc,v 1.2 90/12/30 19:00:19 morisaki Exp $ $Date: 90/12/30 19:00:19 $ [This is the internal document on I18N sample implementation group of X Consortium. This material is new verison of the oldest distributed one as follows: Date: Thu, 4 Oct 90 22:34:29 jst From: Hiroshi Kuribayashi <proj@rnb.ncl.omron> No body distributed on Public domain. -- M.Morisaki/NTT -- ] \f Communication Protocol between XIM and xwnmo Ver major 4, minor 0 May 23 1991 OMRON Corporation This chapter defines the Communication protocol between the XIM library and the input manager. This chapter does not describe the protocol between the input manager and the language conversion server. 1 Communicating data using properties Properties are used for receiving information from the input manager. Name of property: _XWNMO (a) This is a property of the root window structure. (b) The following are the components of this property. char hostname[128] Specifies the host name of the input manager. long portnumber long major_version Sepecifies the major version of XIM protocol. long mijor_version Sepecifies the minor version of XIM protocol. 2 Communicating data using socket The data format for each case is described below. There are 10 protocols existing. (0) initialize initialize an input method (1) XIM_GetIM querying Input Method (2) XIM_CreateIC create a new input context (3) XIM_ChangeIC setting input context slots (4) XIM_GetIC reading input context slots (5) XIM_DestroyIC destroy the input context (6) XIM_SetICFocus enable conversion (7) XIM_UnsetICFocus uneable conversion (8) XIM_ResetIC reset the state of an input context to initial state (9) XIM_Event pass the key event and get from input server (0) initialize Request Encording # of Bytes Value Description XIM -> xwnmo (ximConnClient) 1 byte-order: 'B' MSB first 'l' LSB first 1 unused 2 n length of display name n STRING8 display name Reply Encording # of Bytes Value Description XIM <- xwnmo (ximNormalReply) 2 Reply 0 success -1 failed 2 unused (1) XIM_GetIM Request Encording # of Bytes Value Description XIM -> xwnmo (ximGetIMReq) 1 XIM_GetIM Req type 1 unused 2 8 length of data 4 mask Reply Encording # of Bytes Value Description XIM <- xwnmo (ximGetIMReply) 2 Reply 0 success -1 failed 2 n count_style 2 m length of language string 4n XIMStyle supported_styles m language string (2) XIM_CreateIC Request Encording # of Bytes Value Description XIM -> xwnmo (ximCreateICReq) 1 XIM_CreateIC Req type 1 unused 2 n length of data XIM -> xwnmo (ximICValuesReq) 4 CARD32 mask 4 XIMStyle input method style 4 Window client_window 4 Window focus_window 4 CARD32 filter evets mask 4 INT32 maximum keycode 2 INT16 length of using language string 2 INT16 length of current language string XIM -> xwnmo (ximICAttributesReq) pre-edit 2 INT16 pre-edit area x 2 INT16 pre-edit area y 2 CARD16 pre-edit area width 2 CARD16 pre-edit area height 2 CARD16 pre-edit need area width 2 CARD16 pre-edit need area height 2 INT16 spot location x 2 INT16 spot location y 4 Colormap colormap 4 Atom std_colormap 4 CARD32 foreground 4 CARD32 background 4 Pixmap background pixmap 2 INT16 line_space 2 unused 4 Cursor cursor 2 n number of font 2 m length of fontname string m String8 fontname string XIM -> xwnmo (ximICAttributesReq) status 2 INT16 status area x 2 INT16 status area y 2 CARD16 status area width 2 CARD16 status area height 2 CARD16 status need area width 2 CARD16 status need area height 2 INT16 spot location x 2 INT16 spot location y 4 Colormap colormap 4 Atom std_colormap 4 CARD32 foreground 4 CARD32 background 4 Pixmap background pixmap 2 INT16 line_space 2 unused 4 Cursor cursor 2 n number of font 2 m length of fontname string m String8 fontname string Reply Encording # xwnmo returns callback (a) or ic (b) for ( ) { # of Bytes Value Description (a) callback XIM <- xwnmo (ximEventICReply) 2 CARD16 state 0 succsess -1 failed 2 XIM_CALLBACK detail 4 CARD32 xic (Call 2.1 CALLBACK ROOP) (b) ic XIM <- xwnmo (ximEventICReply) 2 CARD16 state 0 succsess -1 failed 2 XIM_IC detail 4 CARD32 xic break; } XIM <- xwnmo (ximCreateICReply) 2 CARD16 state 0 succsess -1 failed 2 CARD16 detail 4 CARD32 xic (3) XIM_ChangeIC Request Encording # of Bytes Value Description XIM -> xwnmo (ximChangeICReq) 1 XIM_ChangeIC Req type 1 unused 2 36 length of client data 4 CARD32 xic XIM -> xwnmo (ximICValuesReq) 4 CARD32 mask 4 XIMStyle input method style 4 Window client_window 4 Window focus_window 2 INT16 spot location x 2 INT16 spot location y 4 CARD32 filter evets mask 4 INT32 maximum keycode 2 INT16 length of using language string 2 INT16 length of current language string XIM -> xwnmo (ximICAttributesReq) pre-edit 2 INT16 pre-edit area x 2 INT16 pre-edit area y 2 CARD16 pre-edit area width 2 CARD16 pre-edit area height 2 CARD16 pre-edit need area width 2 CARD16 pre-edit need area height 2 INT16 spot location x 2 INT16 spot location y 4 Colormap colormap 4 Atom std_colormap 4 CARD32 foreground 4 CARD32 background 4 Pixmap background pixmap 2 INT16 line_space 2 unused 4 Cursor cursor 2 n number of font 2 m length of fontname string m String8 fontname string XIM -> xwnmo (ximICAttributesReq) status 2 INT16 status area x 2 INT16 status area y 2 CARD16 status area width 2 CARD16 status area height 2 CARD16 status need area width 2 CARD16 status need area height 2 INT16 spot location x 2 INT16 spot location y 4 Colormap colormap 4 Atom std_colormap 4 CARD32 foreground 4 CARD32 background 4 Pixmap background pixmap 2 INT16 line_space 2 unused 4 Cursor cursor 2 n number of font 2 m length of fontname string m String8 fontname string Reply Encoding # xwnmo returns callback (a) or else (b) for ( ) { # of Bytes Value Description (a) callback XIM <- xwnmo (ximEventICReply) 2 CARD16 state 0 succsess -1 failed 2 XIM_CALLBACK detail 4 CARD32 xic (Call 2.1 CALLBACK ROOP) (b) else XIM <- xwnmo (ximEventICReply) 2 CARD16 state 0 succsess -1 failed 2 0 detail 4 0 unused break; } (4) XIM_GetIC Request Encording # of Bytes Value Description XIM -> xwnmo (ximGetICReq) 1 XIM_GetIC Req type 1 unused 2 12 length of data 4 CARD32 xic 4 CARD32 mask Reply Encording # of Bytes Value Description XIM <- xwnmo (ximGetICReply = ximGetICReply) 2 CARD16 state 0 succsess -1 failed 2 CARD16 detail XIM <- xwnmo (ximICValuesReq) # Data of Client area 4 CARD32 mask 4 XIMStyle input method style 4 Window client_window 4 Window focus_window 2 INT16 spot location x 2 INT16 spot location y 4 CARD32 filter evets mask 4 INT32 maximum keycode 2 INT16 length of using language string 2 INT16 length of current language string XIM -> xwnmo (ximICAttributesReq) # Data of pre-edit window 2 INT16 pre-edit area x 2 INT16 pre-edit area y 2 CARD16 pre-edit area width 2 CARD16 pre-edit area height 2 CARD16 pre-edit need area width 2 CARD16 pre-edit need area height 4 Colormap colormap 4 Atom std_colormap 4 CARD32 foreground 4 CARD32 background 4 Pixmap background pixmap 2 INT16 line_space 2 unused 4 Cursor cursor 2 n number of font 2 m length of fontname string m String8 fontname string XIM -> xwnmo (ximICAttributesReq) # Data of status window 2 INT16 status area x 2 INT16 status area y 2 CARD16 status area width 2 CARD16 status area height 2 CARD16 status need area width 2 CARD16 status need area height 4 Colormap colormap 4 Atom std_colormap 4 CARD32 foreground 4 CARD32 background 4 Pixmap background pixmap 2 INT16 line_space 2 unused 4 Cursor cursor 2 n number of font 2 m length of fontname string m String8 fontname string (5) XIM_DestroyIC Request Encording # of Bytes Value Description XIM -> xwnmo (ximDestroyICReq) 1 XIM_DestroyIC Req type 1 unused 2 8 length of data 4 CARD32 xic Reply Encording # xwnmo returns callback (a) or else (b) for ( ) { # of Bytes Value Description (a) callback XIM <- xwnmo (ximEventICReply) 2 CARD16 state 0 succsess -1 failed 2 XIM_CALLBACK detail 4 CARD32 xic (Call 2.1 CALLBACK ROOP) (b) else XIM <- xwnmo (ximEventICReply) 2 CARD16 state 0 succsess -1 failed 2 0 detail 4 0 unused break; } (6) XIM_SetICFocus Request Encording # of Bytes Value Description XIM -> xwnmo (ximICFocusReq) 1 XIM_SetICFocus Req type 1 unused 2 8 length of data 4 CARD32 xic Reply Encording # xwnmo returns callback (a) or else (b) for ( ) { # of Bytes Value Description (a) callback XIM <- xwnmo (ximEventICReply) 2 CARD16 state 0 succsess -1 failed 2 XIM_CALLBACK detail 4 CARD32 xic (Call 2.1 CALLBACK ROOP) (b) else XIM <- xwnmo (ximEventICReply) 2 CARD16 state 0 succsess -1 failed 2 0 detail 4 0 unused break; } (7) XIM_UnsetICFocus Request Encording # of Bytes Value Description XIM -> xwnmo (ximICFocusReq) 1 XIM_UnsetICFocus Req type 1 unused 2 8 length of data 4 CARD32 xic Reply Encording # xwnmo returns callback (a) or else (b) for ( ) { # of Bytes Value Description (a) callback XIM <- xwnmo (ximEventICReply) 2 CARD16 state 0 succsess -1 failed 2 XIM_CALLBACK detail 4 CARD32 xic (Call 2.1 CALLBACK ROOP) (b) else XIM <- xwnmo (ximEventICReply) 2 CARD16 state 0 succsess -1 failed 2 0 detail 4 0 unused break; } (8) XIM_ResetIC Request Encording # of Bytes Value Description XIM -> xwnmo (ximResetICReq) 1 XIM_ResetIC Req type 1 unused 2 8 length of data 4 CARD32 xic Reply Encording # xwnmo returns callback (a) or else (b) for ( ) { # of Bytes Value Description (a) callback XIM <- xwnmo (ximEventICReply) 2 CARD16 state 0 succsess -1 failed 2 XIM_CALLBACK detail 4 CARD32 xic (Call 2.1 CALLBACK ROOP) (b) else XIM <- xwnmo (ximEventICReply) 2 CARD16 state 0 succsess -1 failed 2 0 detail 4 0 unused break; } (9) XIM_Event Request Encording # of Bytes Value Description XIM -> xwnmo (ximEventReq) 1 XIM_Event Req type 1 unused 2 n length of data (sizeof(XEvent) + 8) 4 CARD32 xic n-8 XEVENT # There are 5 kind of reply. (a)Reply Encording (in case of XIM_NOTHING) # of Bytes Value Description XIM <- xwnmo (ximEventReply) 2 Reply 0 succcess -1 failed 2 XIM_NOTHING mode 2 0 number 2 unuse (b)Reply Encording (in case of XIM_NOFILTER) # of Bytes Value Description XIM <- xwnmo (ximEventReply) 2 Reply 0 succcess -1 failed 2 XIM_NOFILTER mode 2 0 number 2 unuse (c)Reply Encording (in case of XIM_RETURN) # of Bytes Value Description XIM <- xwnmo (ximEventReply) 2 Reply 0 succcess -1 failed 2 XIM_RETURN mode 2 0 number 2 unuse # of Bytes Value Description XIM <- xwnmo (ximReturnReply) # xwnmo returns keysym (c-1) or strings (c-2) or end (c-3) for ( ) { (c-1) 2 XIM_KEYSYM type 2 n length 4 KeySym keysym n STRING8 string (c-2) 2 XIM_STRING type 2 n length of string 4 0 keysym n STRING8 string (c-3) 2 0 type 2 0 length 4 0 keysym break; } (d)Reply Encording (in case of XIM_CALLBACK) # of Bytes Value Description XIM <- xwnmo (ximEventReply) 2 Reply 0 succcess -1 failed 2 XIM_CALLBACK mode 2 0 number 2 unuse (Call 2.1 CALLBACK ROOP) (e)Reply Encording (in case of XIM_CH_LOCALE) # of Bytes Value Description XIM <- xwnmo (ximEventReply) 2 Reply 0 succcess -1 failed 2 XIM_CH_LOCALE mode 2 n number 2 unuse n STRING8 locale name 2.1 CALLBACK ROOP # There are 8 kind of reply. for ( ) { (1) Preedit start # of Bytes Value Description XIM <- xwnmo (ximNormalReply) 2 Reply 0 succcess -1 failed 2 XIM_CB_PRE_START type (2) Preedit done # of Bytes Value Description XIM <- xwnmo (ximNormalReply) 2 Reply 0 succcess -1 failed 2 XIM_CB_PRE_DONE type (3) Preedit draw # of Bytes Value Description XIM <- xwnmo (ximNormalReply) 2 Reply 0 succcess -1 failed 2 XIM_CB_PRE_DRAW type XIM <- xwnmo (ximPreDrawReply) 2 INT16 caret 2 INT16 change first 2 INT16 change length 2 INT16 encoding_is_wchar True WCHAR False CompoundText 2 n length 2 CARD6 unused 4 INT32 feedback (3-1) WCHAR 4n wchar (3-2) CompoundText n STRING8 compound text (4) Preedit caret # of Bytes Value Description XIM <- xwnmo (ximNormalReply) 2 Reply 0 succcess -1 failed 2 XIM_CB_PRE_CARET type XIM <- xwnmo (ximPreCaretReply) 2 INT16 position 2 CARD16 direction 2 CARD16 style 2 CARD16 unused (5) Status start # of Bytes Value Description XIM <- xwnmo (ximNormalReply) 2 Reply 0 succcess -1 failed 2 XIM_CB_ST_DONE type (6) Status done # of Bytes Value Description XIM <- xwnmo (ximNormalReply) 2 Reply 0 succcess -1 failed 2 XIM_CB_ST_DONE type (7) Status draw # of Bytes Value Description XIM <- xwnmo (ximNormalReply) 2 Reply 0 succcess -1 failed 2 XIM_CB_ST_DONE type XIM <- xwnmo (ximPreDrawReply) 2 CARD16 type 2 INT16 encoding_is_wchar True WCHAR False CompoundText 2 n length 4 INT32 feedback 4 Pixmap bitmap (7-1) WCHAR 4n wchar (7-2) CompoundText n STRING8 compound text (8) End # of Bytes Value Description XIM <- xwnmo (ximNormalReply) 2 0 Reply 2 0 type break; } 3 Protocol list each XIM function uses example: (*) Xim function protocal (1) XOpenIM() (0) initalize (2) XCloseIM() Nothing (3) XGetIMValues() (1) XIM_GetIM (4) XCreateIC() (2) XIM_CreateIC (4) XIM_GetIC (5) XDestroyIC() (5) XIM_DestroyIC (6) XSetICFocus() (6) XIM_SetICFocus (7) XUnsetICFocus() (7) XIM_UnsetICFocus (8) XmbResetIC(), XwcResetIC() (8) XIM_ResetIC (9) XIMOfIC() Nothing (10) XDisplayOfIM() Nothing (11) XLocaleOfIM() Nothing (12) XSetICValues() (3) XIM_ChangeIC (13) XGetICValues() (4) XIM_GetIC (14) XFileterEvent() (9) XIM_Event (15) XRegisterFilter() Nothing (16) XUnRegisterFilter() Nothing (17) XmbLookupString() Nothing (18) XwcLookupString() Nothing