

















                   XXIIMM ȥݡȻ


                           00..11 

               XX С 1111,, ꡼ 66..44




                      _T_a_k_a_s_h_i _F_u_j_i_w_a_r_a
                      FUJITSU LIMITED





                          _A_B_S_T_R_A_C_T



     λͽǤϡXlib  IM д֤Υȥ󥹥ݡ
     ؤΥ󥿥ե롣Υ󥿥ե
     ȤȡX ץȥ롢TCP/IP, DECnet ͡
     ̿ͥ뤬ѲǽȤʤ롣







































Copyright (C) 1994 by FUJITSU LIMITED

Permission to use, copy, modify, and distribute this docu-
mentation for any purpose and without fee is hereby granted,
provided that the above copyright notice and this permission
notice appear in all copies.  Fujitsu makes no representa-
tions about the suitability for any purpose of the informa-
tion in this document.  This documentation is provided as is
without express or implied warranty.





Copyright (C) 1994 X Consortium

Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documenta-
tion files (the ``Software''), to deal in the Software with-
out restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to
whom the Software is furnished to do so, subject to the fol-
lowing conditions:

The above copyright notice and this permission notice shall
be included in all copies or substantial portions of the
Software.

THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY
KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PUR-
POSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE X CONSOR-
TIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of the X Con-
sortium shall not be used in advertising or otherwise to
promote the sale, use or other dealings in this Software
without prior written authorization from the X Consortium.














_X _W_i_n_d_o_w _S_y_s_t_e_m is a trademark of X Consortium, Inc.

































































11..  Ϥ

Xlib ˤ XIM μ3Ĥεǽ(ץȥء
եءȥ󥹥ݡ)ʬƤ롣Τ褦ؤ
ʬŪϡץȥ뤬ȥ󥹥ݡȤμ˰¸ʤ
ˤ뤳ȤǤ롣ؤεǽʲ˼:

     ץȥ
          XIM ƤεǽIM Ф̿ɬ
          ݤˤϥ󥿥եؤδؿƤӽФ

     󥿥ե
          ȥ󥹥ݡؤμץȥؤʬΥ롣
          ȡȥ󥹥ݡؤδؿФ
          Ωʥեå󶡤롣

     ȥ󥹥ݡ
          IM ФȤμºݤΥǡ̿򰷤ϥȥ
          ݡȸƤФؿˤäƹԤ롣

λͽǤϥ󥿥եؤȥȥ󥹥ݡؤˤĤ
롣ȤäơX ץȥ TCP/IP, DECnet, STREAM 
褦̿ͥ͡뤬Ѳǽˤʤ롣λͽϤ
̤οȥ󥹥ݡؤɲä뤿ɬפʾͿ
롣äơȥ󥹥ݡ X ³Ѥץ
4롣

22..  

22..11..  빽¤¤ΤϿϿ

TransportSW Ȥι¤ΤϡμݡȤƤ
ȥ󥹥ݡؤΥꥹȤġ


typedef struct {
      char *transport_name;
      Bool (*config);
} TransportSW;



_t_r_a_n_s_p_o_r_t___n_a_m_e ȥ󥹥ݡȤ̾(*1)

_c_o_n_f_i_g         ؿ

Xlib 򥵥ݡȤȥ󥹥ݡФ륨ȥ꡼
˼:


TransportSW _XimTransportRec[] = {
-----------
(*1) "The Input Method Protocol: Appendix B" 
Ȥ뤳ȡ



                              11





XXIIMM ȥݡȻ                     XX1111,, ꡼ 66..44


/*   char _*_:
 _*   _t_r_a_n_s_p_o_r_t___n_a_m_e,     Bool _(_*_c_o_n_f_i_g_)_(_)
 */
     ``X'',              _XimXConf,
     ``tcp'',            _XimTransConf,
     ``local'',          _XimTransConf,
     ``decnet'',         _XimTransConf,
     ``streams'',        _XimTransConf,
     (char *)NULL,       (Bool (*)())NULL,
};



22..22..  ؿ

Xlib ȥ󥹥ݡؿꤷȤˤϡʲδؿ1
ƤФ롣

Bool (*config)(_i_m, _t_r_a_n_s_p_o_r_t___d_a_t_a)
      XIM _i_m;
      char _*_t_r_a_n_s_p_o_r_t___d_a_t_a;


_i_m        XIM ¤ΤΥɥ쥹ꤹ롣

_t_r_a_n_s_p_o_r_t___d_a_t_a
          ȥ󥹥ݡͭΥǡ IM ФΥɥ쥹
          ꤹ롣(*1)

δؿϥȥ󥹥ݡؿΥݥ󥿤ꤷʤФʤ


ºݤ _c_o_n_f_i_g ؿϡ³λ IM Ф򤹤롣
 __XXiimmTTrraannssppoorrttRReecc ǻꤷ _t_r_a_n_s_p_o_r_t___n_a_m_e Ȥ
ޥå󥰤뤳ȤˤäƹԤʲ˼ XimProto ¤
ΥФϡŬڤʥȥ󥹥ݡؿؤ褦˽
ʤФʤʤ

ꤵ줿ȥ󥹥ݡޤꤵƤСδؿ
True ֤ؿΤΤˤϡ򥨥ȥ꡼Ϥʤ

¤ XimProto ϰʲδؿݥ󥿤:

     Bool (*connect)();       /* ³Υץ */
     Bool (*shutdown)();      /* ³Υ */
     Bool (*write)();         /* ǡν񤭹 */
     Bool (*read)();          /* ǡɤ߹ */
     Bool (*flush)();         /* ǡХåեΥեå */
     Bool (*register_dispatcher)();/* ƱǡϥɥϿ */
     Bool (*call_dispatcher)();/* ǥѥåθƤӽФ */

-----------
(*1) "The Input Method Protocol: Appendix B" 
Ȥ뤳ȡ



                              22





XXIIMM ȥݡȻ                     XX1111,, ꡼ 66..44


δؿ Xlib  IM Ф̿ɬפ˸Ƥ
Ф롣δؿϰʲ˽Ҥ٤Ŭڤʼ³ʤ
Фʤʤ


33..  ե//ȥݡؤδؿ

ʲδؿϥȥ󥹥ݡؤΥ󥿥եȤѤ
롣

               ɽ 3-1; ȥ󥹥ݡؤδؿ

+-----------------------+---------------------+------------+
|    ȥ꡼     |  XXiimmPPrroottoo Υ  |  |
|  ((ե))   | ((ȥݡ))  |            |
+-----------------------+---------------------+------------+
|__XXiimmCCoonnnneecctt            | connect             |    3.1     |
+-----------------------+---------------------+------------+
|__XXiimmSShhuuttddoowwnn           | shutdown            |    3.2     |
+-----------------------+---------------------+------------+
|__XXiimmWWrriittee              | write               |    3.3     |
+-----------------------+---------------------+------------+
|__XXiimmRReeaadd               | read                |    3.4     |
+-----------------------+---------------------+------------+
|__XXiimmFFlluusshh              | flush               |    3.5     |
+-----------------------+---------------------+------------+
|__XXiimmRReeggiisstteerrDDiissppaattcchheerr | register_dispatcher |    3.6     |
+-----------------------+---------------------+------------+
|__XXiimmCCaallllDDiissppaattcchheerr     | call_dispatcher     |    3.7     |
+-----------------------+---------------------+------------+

ץȥؤϡΥ򥨥ȥ꡼Ȥäƾ嵭δؿ
ƤӽФȥ󥹥ݡؤμϱΥ XimProto 
дؿ롣򥨥ȥ꡼ϡץȥؤμ
פˤ뤿ͿƤ롣


33..11..  ³³Υץ

XXOOppeennIIMM ƤФ줿ȤIM Ф³뤿˰ʲδؿ
ƤӽФ롣

Bool (*connect)(_i_m)
      XIM _i_m;


_i_m        XIM ¤ΤΥɥ쥹ꤹ롣

δؿ IM ФȤ³ΩʤФʤʤ³
ΩʤСδؿ True ֤δؿФ
򥨥ȥ꡼ϰʲǤ:






                              33





XXIIMM ȥݡȻ                     XX1111,, ꡼ 66..44


Bool _XimConnect(_i_m)
      XIM _i_m;


_i_m        XIM ¤ΤΥɥ쥹ꤹ롣


33..22..  ³³Υ

XXCClloosseeIIMM ƤӽФȡʲδؿƤӽФ졢IM 
Ȥ³Ĥ롣δؿФ򥨥ȥ꡼ϰʲ
:

Bool (*shutdown)(_i_m)
      XIM _i_m;


_i_m        XIM ¤ΤΥɥ쥹ꤹ롣

δؿ IM ФȤ³򥯥ʤФʤʤ
³ΥʤСδؿ True ֤δ
򥨥ȥ꡼ϰʲǤ:

Bool _XimShutdown(_i_m)
      XIM _i_m;


_i_m   XIM ¤ΤΥɥ쥹ꤹ롣


33..33..  ǡν

Xlib  IM Ф˥ǡ񤭹ɬפȤˤϡʲ
δؿƤӽФ롣

Bool (*write)(_i_m, _l_e_n, _d_a_t_a)
      XIM _i_m;
      INT16 _l_e_n;
      XPointer _d_a_t_a;


_i_m        XIM ¤ΤΥɥ쥹ꤹ롣

_l_e_n       񤭹ǡĹꤹ롣

_d_a_t_a      񤭹ǡꤹ롣

δؿ _d_a_t_a  IM Ф˽񤭹ࡣκݤˤϥǡ
ƤϹθʤǡΥХȿ _l_e_n Ϥ졢񤭹
ǡ _d_a_t_a Ϥ롣ǡȡ
ؿ True ֤񤭹ǡƤˤĤƤϡɥ
 "The Input Method Protocol" 򻲾Ȥ뤳ȡδؿ
Ф򥨥ȥ꡼ϰʲǤ:




                              44





XXIIMM ȥݡȻ                     XX1111,, ꡼ 66..44


Bool _XimWrite(_i_m, _l_e_n, _d_a_t_a)
      XIM _i_m;
      INT16 _l_e_n;
      XPointer _d_a_t_a;


_i_m        XIM ¤ΤΥɥ쥹ꤹ롣

_l_e_n       񤭹ǡĹꤹ롣

_d_a_t_a      񤭹ǡꤹ롣


33..44..  ǡɤ߹

Xlib  IM ФαƱŪԤĤȤʲδؿ
ƤӽФ롣

Bool (*read)(_i_m, _r_e_a_d___b_u_f, _b_u_f___l_e_n, _r_e_t___l_e_n)
      XIM _i_m;
      XPointer _r_e_a_d___b_u_f;
      int _b_u_f___l_e_n;
      int _*_r_e_t___l_e_n;


_i_m        XIM ¤ΤΥɥ쥹ꤹ롣

_r_e_a_d___b_u_f  ǡǼХåեꤹ롣

_b_u_f___l_e_n   _b_u_f_f_e_r Υꤹ롣

_r_e_t___l_e_n   ǼǡĹꤹ롣

δؿɤ߹ǡ _r_e_a_d___b_u_f ˳Ǽ롣ΥХ
եΥ _b_u_f___l_e_n ǻꤹ롣ǡΥ _r_e_t___l_e_n
˥åȤ롣ǡɤ߹ޤ줿硢ޤϥǡ
ɤ߹ߤλˤϡδؿ True ֤

δؿФ򥨥ȥ꡼ϰʲǤ:

Bool _XimRead(_i_m, _r_e_t___l_e_n, _b_u_f, _b_u_f___l_e_n, _p_r_e_d_i_c_a_t_e, _p_r_e_d_i_c_a_t_e___a_r_g)
      XIM _i_m;
      INT16 _*_r_e_t___l_e_n;
      XPointer _b_u_f;
      int _b_u_f___l_e_n;
      Bool _(_*_p_r_e_d_i_c_a_t_e_)_(_);
      XPointer _p_r_e_d_i_c_a_t_e___a_r_g;


_i_m        XIM ¤ΤΥɥ쥹ꤹ롣

_r_e_t___l_e_n   _d_a_t_a ХåեΥꤹ롣





                              55





XXIIMM ȥݡȻ                     XX1111,, ꡼ 66..44


_b_u_f       ǡǼХåեΥꤹ롣

_b_u_f___l_e_n   _b_u_f_f_e_r Ĺꤹ롣

_p_r_e_d_i_c_a_t_e XIM ǡνꤹ롣

_p_r_e_d_i_c_a_t_e___a_r_g
          ͭΥǡꤹ롣

³ _d_a_t_a  XIM ФΤɤ򼨤δ
ɤ߹ǡ _b_u_f ˳Ǽ롣ΥХåեΥ
 _b_u_f___l_e_n ǻꤵ롣ǡΥ _r_e_t___l_e_n ˥åȤ
롣_p_r_e_e_d_i_c_a_t_e_(_)  True ֤硢δؿ True 
֤Ǥʤ硢Ͽ줿ХåؿƤӽФ
롣

³Ȥΰʲ˼:


Bool (*predicate)(_i_m, _l_e_n, _d_a_t_a, _p_r_e_d_i_c_a_t_e___a_r_g)
      XIM _i_m;
      INT16 _l_e_n;
      XPointer _d_a_t_a;
      XPointer _p_r_e_d_i_c_a_t_e___a_r_g;


_i_m        XIM ¤ΤΥɥ쥹ꤹ롣

_l_e_n       _d_a_t_a ХåեΥꤹ롣

_d_a_t_a      ǡǼХåեꤹ롣

_p_r_e_d_i_c_a_t_e___a_r_g
          ͭΥǡꤹ롣


33..55..  ХåեΥեå

Xlib ǡեå夹ɬפȤʲδؿ
ӽФ롣

void (*flush)(_i_m)
      XIM _i_m;


_i_m        XIM ¤ΤΥɥ쥹ꤹ롣

δؿϥȥ󥹥ݡؤХåեäƤǡ
եå夷ʤФʤʤǡžλ顢δ
 True ֤δؿ򥨥ȥ꡼ϰʲǤ:

void _XimFlush(_i_m)
      XIM _i_m;




                              66





XXIIMM ȥݡȻ                     XX1111,, ꡼ 66..44


_i_m        XIM ¤ΤΥɥ쥹֤


33..66..  ƱƱǡϥɥϿϿ

Xlib  IM ФƱα򰷤ɬפ롣
ϡXIM ǡ X Υ٥ȤȤƱŪ˵뤳Ȥ
Ǥ롣

Υǡ _F_i_l_t_e_r ǽ롣 _F_i_l_t_e_r ϥץ
ƱǡϥɥƤӽФ줫ȥ󥹥
Υǥѥå㤬ƤӽФ롣Υǥѥå
ץȥؤˤäƼƤ롣δؿϾݻ
Ū __XXiimmCCaallllDDiissppaattcchheerr ѤǥѥåθƤӽФ
ʤФʤʤ

ʣΥǥѥå㤬ϿƤȡƱǡ
˥ǥѥåϿ˽֤˸ƤӽФ롣register_dis-
patcher ϰʲΤ褦Ƥ롣

Bool (*register_dispatcher)(_i_m, _d_i_s_p_a_t_c_h_e_r, _c_a_l_l___d_a_t_a)
      XIM _i_m;
      Bool _(_*_d_i_s_p_a_t_c_h_e_r_)_(_);
      XPointer _c_a_l_l___d_a_t_a;


_i_m        XIM ¤ΤΥɥ쥹ꤹ롣

_d_i_s_p_a_t_c_h_e_r
          Ͽǥѥåؿꤹ롣

_c_a_l_l___d_a_t_a _d_i_s_p_a_t_c_h_e_r Фѥ᡼ꤹ롣

ǥѥåϰʲηĴؿǤ:

Bool (*dispatcher)(_i_m, _l_e_n, _d_a_t_a, _c_a_l_l___d_a_t_a)
      XIM _i_m;
      INT16 _l_e_n;
      XPointer _d_a_t_a;
      XPointer _c_a_l_l___d_a_t_a;


_i_m        XIM ¤ΤΥɥ쥹ꤹ롣

_l_e_n       _d_a_t_a ХåեΥꤹ롣

_d_a_t_a      ǡǼХåեꤹ롣

_c_a_l_l___d_a_t_a register_dispatcher Ϥѥ᡼ꤹ
          롣

ǥѥåϥץȥؤͿ롣ϡƱǡ
Ȥ1 ٸƤФ롣θƤӽФϿ˹Ԥ롣ǡ
Ȥ줿ʤСǥѥå True ֤ʤФʤ



                              77





XXIIMM ȥݡȻ                     XX1111,, ꡼ 66..44


Ǥʤ False ֤ʤФʤʤ

ǥѥåؿ True ֤硢ȥ󥹥ݡؤϥ
̤ؤǽ줿Τꤹ롣δؿ򥨥
ȥ꡼ϰʲǤ:

Bool _XimRegisterDispatcher(_i_m, _d_i_s_p_a_t_c_h_e_r, _c_a_l_l___d_a_t_a)
      XIM _i_m;
      Bool _(_*_d_i_s_p_a_t_c_h_e_r_)_(_);
      XPointer _c_a_l_l___d_a_t_a;


_i_m        XIM ¤ΤΥɥ쥹ꤹ롣

_d_i_s_p_a_t_c_h_e_r
          Ͽǥѥåؿꤹ롣

_c_a_l_l___d_a_t_a _d_i_s_p_a_t_c_h_e_r Фѥ᡼ꤹ롣


33..77..  ǥѥåθƤӽФ

IM ФƱαϤȤʲδؿȤäơ
Ͽ줿ǥѥåؿƤӽФ롣

Bool (*call_dispatcher)(_i_m, _l_e_n, _d_a_t_a)
      XIM _i_m;
      INT16 _l_e_n;
      XPointer _d_a_t_a;


_i_m        XIM ¤ΤΥɥ쥹ꤹ롣

_l_e_n       _d_a_t_a Хåե礭ꤹ롣

_d_a_t_a      ǡǼХåեꤹ롣

call_dispatcher ϥǥѥåؿϿ˸ƤӽФʤ
Фʤʤ _l_e_n  _d_a_t_a  register_dispatcher Ϥ
Ǥ롣

ᤷͤϸƤӽФȤ˥å졢줬 True ξ硢
call_dispatcher ᤷ True ¨¤롣

ϡɤ߹ǡ XIM ץȥѥåȥ˥åȤ
ɤ˾̤ؤ˰¸롣

Bool _XimCallDispatcher(_i_m, _l_e_n, _d_a_t_a)
      XIM _i_m;
      INT16 _l_e_n;
      XPointer _c_a_l_l___d_a_t_a;






                              88





XXIIMM ȥݡȻ                     XX1111,, ꡼ 66..44


44..  ȥݡؤФ륵ץ

X ³Ѥȥ󥹥ݡΥץʲ롣


44..11..  XX ȥݡ

XIM ȥ󥹥ݡȵΤ X ȥ󥹥ݡ³γϻ
ˤϡXlib  XIM  IM ФΤ줾˹2Ĥΰۤʤ
ɥʤФʤʤΥɥ֤
ClientMessage ٥Ȥ Window ץѥƥѤXlib  IM
Ф XIM ȥ󥹥ݡȤ򴹤롣ʲǤϡXlib
ɥϡ֥饤̿ɥפȸ
ӡIM ФɥϡIMS ̿ɥפ
Ƥ֤Ȥˤ롣


44..11..11..  XX ³³

³Ω뤿̿ɥ롣ʲ˼
٥ȤΥեޥåȤ ClientMessage  XIM_SERVER 쥯
νͭԤǤ륦ɥ롣Υɥ
IM ФΤǤ롣

XIM_SERVER ȥˤĤƤ "The Input Method Protocol" 
Ȥ뤳ȡ

       ɽ 4-1; IMS ɥ ClientMessage

-----------------------+------------------------------------------------
¤¤ΤΥ         | 
-----------------------+------------------------------------------------
int       type         | ClientMessage
u_long    serial       | X ɥƥबåȤ
Bool      send_event   | X ɥƥबåȤ
Display   *display     | ³ǥץ쥤
Window    window       | IMS ɥ  ID
Atom      message_type | XInternAtom(display, ``_XIM_XCONNECT'', False)
int       format       | 32
long      data.l[0]    | 饤̿ɥID
long      data.l[1]    | client-major-transport-version (*1)
long      data.l[2]    | client-major-transport-version (*1)
-----------------------+------------------------------------------------


³Ω뤿(IM ̿ɥΤ뤿
)IM Ф ClientMessage 򥯥饤̿ɥ
롣ClientMessage ϰʲ˼٥ȤΥեޥåȤǤ
롣

           ɽ 4-2; IM Ф ClientMessage






                              99





XXIIMM ȥݡȻ                     XX1111,, ꡼ 66..44


-----------------------+------------------------------------------------
¤¤ΤΥ         | 
-----------------------+------------------------------------------------
int       type         | ClientMessage
u_long    serial       | X ɥƥबåȤ
Bool      send_event   | X ɥƥबåȤ
Display   *display     | ³륦ɥ
Window    window       | 饤̿ɥ ID
Atom      message_type | XInternAtom(display, ``_XIM_XCONNECT'', False)
int       format       | 32
long      data.l[0]    | IMS ̿ɥ ID
long      data.l[1]    | server-major-transport-version (*1)
long      data.l[2]    | server-minor-transport-version (*1)
long      data.l[3]    | ClientMessage  Property δ֤ʬ䥵(*2)
-----------------------+------------------------------------------------



(*1) major/minor-transport-version
          ɤ߽񤭤ˡϡʲΤ褦 major/minor-trans-
          port-version ȹ礻ˤäƷ롣

     ɽ 4-3; ɤ߽񤭤ˡ major/minor-transport-version

   +------------------+---------------------------------------+
   |ttrraannssppoorrtt--vveerrssiioonn | ɤ߽                              |
   +--------+---------+---------------------------------------+
   | mmaajjoorr  |  mmiinnoorr  |                                       |
   +--------+---------+---------------------------------------+
   |   0    |    0    | only-CM & Property-with-CM            |
   |        |    1    | only-CM & multi-CM                    |
   |        |    2    | only-CM & multi-CM & Property-with-CM |
   +--------+---------+---------------------------------------+
   |   1    |    0    | PropertyNotify                        |
   +--------+---------+---------------------------------------+
   |   2    |    0    | only-CM & PropertyNotify              |
   |        |    1    | only-CM & multi-CM & PropertyNotify   |
   +--------+---------+---------------------------------------+



  only-CM            :   ǡ1Ĥ ClientMessage ͳ
  multi-CM           :   ǡʣ ClientMessage ͳ
  Property-with-CM   :   data is written in Property, and its Atom
                         is send via ClientMessage ǡϥץ
                         ƥ˽񤭹ޤ졢Υȥब ClientMes-
                         sage ͳ
  PropertyNotify     :   ǡϥץѥƥ˽񤭹ޤ졢Υȥ
                          PropertyNotify ͳ


     major/minor-transport-version ˡʲ˼:





                             1100





XXIIMM ȥݡȻ                     XX1111,, ꡼ 66..44


     (1)  饤Ȥ IM ФФ major/minor-
          transport-version Ȥ 0 롣饤Ȥ
          ɽ4-3ƤΥ᥽åɤ򥵥ݡȤƤʤФʤ
          ʤŪ˾嵭ʳΥ᥽åɤȤ硢饤
          Ȥ major/minor-transport-version Ȥ̤
          ȤȤǤ롣

     (2)  IM Ф major/minor-transport-version ֹ
          饤Ȥ롣饤ȤIM Ф˻ꤵ
          줿ˡǥǡ롣

     (3)  major/minor-transport-version ֹ椬ʤä
          硢0ȸʤ롣


(*2) ClientMessage ȥץѥƥ֤Υʬ
          ʣ CliemtMessage ȥץѥƥξȤäƥǡ
          ϡ ClientMessage ȥץѥƥ
          ֤Υʬꤹ뤳ȡΥ꾮
          ǡʣ ClientMessage (Ĥޤ ClientMessage
          )ͳ졢Υ礭ǡϥ
          ѥƥȤä롣


44..11..22..  ɤ߹//

ǡ X ɥƥ ClientMessage ޤϥ
ץѥƥȤäž롣


44..11..22..11..  饤Ȥ IIMM ФǡΥե
ޥå

CClliieennttMMeessssaaggee

     ClientMessage ͳǥǡ硢եޥåȤϰ
     Τ褦ˤʤ:

     ɽ 4-4; ClientMessage ٥ȤΥեޥå (ǽޤϿ)

     -----------------------+------------------------------------------------
     ¤¤ΤΥ         | 
     -----------------------+------------------------------------------------
     int       type         | ClientMessage
     u_long    serial       | X ɥƥबåȤ
     Bool      send_event   | X ɥƥबåȤ
     Display   *display     | ³ǥץ쥤
     Window    window       | IMS ̿ɥ ID
     Atom      message_type | XInternAtom(display, ``_XIM_MOREDATA'', False)
     int       format       | 8
     char      data.b[20]   | (ɤ߽񤭤ǡ : 20 Х)
     -----------------------+------------------------------------------------





                             1111





XXIIMM ȥݡȻ                     XX1111,, ꡼ 66..44


     ɽ 4-5; ClientMessage ٥ȤΥեޥå
          (ClientMessage ΤȤޤϺǸΤȤ)

     -----------------------+------------------------------------------------
     ¤¤ΤΥ         | 
     -----------------------+------------------------------------------------
     int       type         | ClientMessage
     u_long    serial       | X ɥƥबåȤ
     Bool      send_event   | X ɥƥबåȤ
     Display   *display     | ³ǥץ쥤
     Window    window       | IMS ̿ɥ ID
     Atom      message_type | XInternAtom(display, ``_XIM_PROTOCOL'', False)
     int       format       | 8
     char      data.b[20]   | (ɤ߽񤭤ǡ :  20 Х)  (*1)
     -----------------------+------------------------------------------------


     (*1) ǡ20ХȤ꾮硢ºݤǡ
          ʬ0ǤʤФʤʤ

ץѥƥ

     礭ǡξ硢ǡ򥦥ɥץѥƥͳ
     ۤΨɤץѥƥΤˤϰʲ2
     ˡꡢɤˡѤ뤫 transport-ver-
     sion ˤäƷޤ롣


     (1)  XChangeProperty ؿѤƥ饤̿
          ɥ˥ǡǼ롣Ǽ줿ǡΥȥ
          ClientMessage ٥ȷͳ IM ФΤ
          롣

     (2)  XChangeProperty ؿѤƥ饤̿
          ɥ˥ǡǼ롣Ǽ줿ǡΥȥ
          PropertyNotify ٥ȷͳ IM ФΤ
          롣

     XChangeProperty ΰϰʲǤ:

         ɽ 4-6; XChangeProperty ٥ȤΥեޥå

     --------------------+--------------------------------------
                   | 
     --------------------+--------------------------------------
     Display   *display  | ³ǥץ쥤
     Window    window    | IMS ̿ɥ ID
     Atom      property  | ɤ߽񤭤ץѥƥΥȥ (*1)
     Atom      type      | XA_STRING
     int       format    | 8
     int       mode      | PropModeAppend
     u_char    *data     | ɤ߽񤭤ǡ





                             1122





XXIIMM ȥݡȻ                     XX1111,, ꡼ 66..44


     --------------------+--------------------------------------
                   | 
     --------------------+--------------------------------------
     int       nelements | ǡĹ
     --------------------+--------------------------------------



     (*1) ɤ߽񤭤ץѥƥΥȥϡXXIInntteerrnnAAttoomm 
          ȤäưʲʸƤ롣
               ``_clientXXX''

     饤Ȥ PropModeAppend ⡼ɤȤäƥץѥƥ
     ѹIM  Ϻ⡼ɤĤޤ(delete = True)
     ȤäƤΥץѥƥɤ߹ࡣ

     ȥ ClientMessage ٥ȷͳΤ
     롣ClientMessage ΥեޥåȤʲ˼:

     ɽ 4-7; ץѥƥΥȥ ClientMessage ٥ȤΥեޥå

     -----------------------+------------------------------------------------
     ¤¤ΤΥ         | 
     -----------------------+------------------------------------------------
     int       type         | ClientMessage
     u_long    serial       | X ɥƥबåȤ
     Bool      send_event   | X ɥƥबåȤ
     Display   *display     | ³ǥץ쥤
     Window    window       | IMS ̿ɥ ID
     Atom      message_type | XInternAtom(display, ``_XIM_PROTOCOL'', False)
     int       format       | 32
     long      data.l[0]    | ɤ߽񤭤ץѥƥΥȥĹ
     long      data.l[1]    | ɤ߽񤭤ץѥƥΥȥ
     -----------------------+------------------------------------------------



44..11..22..22..  IIMM Ф饯饤ȤǡΥե
ޥå

CClliieennttMMeessssaaggee

     ClientMessage ΥեޥåȤʲ˼:

     ɽ 4-8; ClientMessage ٥ȤΥեޥå (ǽޤϿ)

     -----------------------+------------------------------------------------
     ¤¤ΤΥ         | 
     -----------------------+------------------------------------------------
     int       type         | ClientMessage
     u_long    serial       | X ɥƥबåȤ
     Bool      send_event   | X ɥƥबåȤ
     Display   *display     | ³ǥץ쥤




                             1133





XXIIMM ȥݡȻ                     XX1111,, ꡼ 66..44


     -----------------------+------------------------------------------------
     ¤¤ΤΥ         | 
     -----------------------+------------------------------------------------
     Window    window       | 饤̿ɥ ID
     Atom      message_type | XInternAtom(display, ``_XIM_MOREDATA'', False)
     int       format       | 8
     char      data.b[20]   | (ɤ߽񤭤ǡ : 20 Х)
     -----------------------+------------------------------------------------


     ɽ 4-9; ClientMessage ٥ȤΥեޥå(ClientMes-
               sage ΤȤޤϺǸΤȤ)

     -----------------------+------------------------------------------------
     ¤¤ΤΥ         | 
     -----------------------+------------------------------------------------
     int       type         | ClientMessage
     u_long    serial       | X ɥƥबåȤ
     Bool      send_event   | X ɥƥबåȤ
     Display   *display     | ³ǥץ쥤
     Window    window       | 饤̿ɥ ID
     Atom      message_type | XInternAtom(display, ``_XIM_PROTOCOL'', False)
     int       format       | 8
     char      data.b[20]   | (ɤ߽񤭤ǡ:  20 Х) (*1)
     -----------------------+------------------------------------------------



     (*1) ǡ20ХȤ꾮硢ºݤ˻Ȥǡ
          ʬ0ǤʤФʤʤ

ץѥƥ

     礭ǡξ硢ǡ򥦥ɥץѥƥͳ
     ۤΨɤץѥƥΤˤϰʲ2
     ˡꡢɤˡѤ뤫 transport-ver-
     sion ˤäƷޤ롣


     (1)  XChangeProperty ؿѤ IMS ̿ɥ
          ǡǼ롣ץѥƥΥȥ ClientMes-
          sage ٥ȷͳ롣

     (2)  XChangeProperty ؿѤ IMS ̿ɥ
          ǡǼ롣ץѥƥΥȥ PropertyNo-
          tify ٥ȷͳ롣

     XChangeProperty ΰϰʲǤ:

         ɽ 4-10; XChangeProperty ٥ȤΥեޥå







                             1144





XXIIMM ȥݡȻ                     XX1111,, ꡼ 66..44


     --------------------+-------------------------------------
                   | 
     --------------------+-------------------------------------
     Display   *display  | ³ǥץ쥤
     Window    window    | 饤̿ɥ ID
     Atom      property  | ɤ߽񤭤ץѥƥΥȥ (*1)
     Atom      type      | XA_STRING
     int       format    | 8
     int       mode      | PropModeAppend
     u_char    *data     | ɤ߽񤭤ǡ
     int       nelements | ǡĹ
     --------------------+-------------------------------------



     (*1) ɤ߽񤭤ץѥƥΥȥʸ
          롣ϥ饤Ȥ XXIInntteerrnnAAttoomm ȤäƳ
          ƤΤǤϤʤ

     IM Ф PropModeAppend ⡼ɤȤäƥץѥƥ
     饤ȤϺ⡼ɡĤޤ (delete = True)
     Ȥäƥץѥƥɤ߹ࡣ

     ȥब ClientMessage ͳΤ줿硢ClientMes-
     sage ΥեޥåȤϰʲΤ褦ˤʤ:

     ɽ 4-11; ץѥƥΥȥ ClientMessage ٥ȤΥեޥå

     -----------------------+------------------------------------------------
     ¤¤ΤΥ         | 
     -----------------------+------------------------------------------------
     int       type         | ClientMessage
     u_long    serial       | X ɥƥबåȤ
     Bool      send_event   | X ɥƥबåȤ
     Display   *display     | ³ǥץ쥤
     Window    window       | 饤̿ɥ ID
     Atom      message_type | XInternAtom(display, ``_XIM_PROTOCOL'', False)
     int       format       | 32
     long      data.l[0]    | ɤ߽񤭤ץѥƥΥȥĹ
     long      data.l[1]    | ɤ߽񤭤ץѥƥΥȥ
     -----------------------+------------------------------------------------



44..11..33..  ³³Υ

饤Ȥ IM ФȤ³ڤ硢åȥ
̿ɥΥץѥƥʤФʤʤ


55..  ʸʸ

[1] Masahiko Narita and Hideki Hiura, _`_`_T_h_e _I_n_p_u_t _M_e_t_h_o_d
_P_r_o_t_o_c_o_l_'_'



                             1155





XXIIMM ȥݡȻ                     XX1111,, ꡼ 66..44



























































                             1166


