1 /******************************************************************
2 Copyright 1993, 1994 by Digital Equipment Corporation, Maynard, Massachusetts,
3 Copyright 1993, 1994 by Hewlett-Packard Company
5 Copyright 1994, 1995 by Sun Microsystems, Inc.
9 Permission to use, copy, modify, and distribute this software and its
10 documentation for any purpose and without fee is hereby granted,
11 provided that the above copyright notice appear in all copies and that
12 both that copyright notice and this permission notice appear in
13 supporting documentation, and that the names of Digital or MIT not be
14 used in advertising or publicity pertaining to distribution of the
15 software without specific, written prior permission.
17 DIGITAL AND HEWLETT-PACKARD COMPANY DISCLAIMS ALL WARRANTIES WITH REGARD
18 TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
19 FITNESS, IN NO EVENT SHALL DIGITAL AND HEWLETT-PACKARD COMPANY BE LIABLE
20 FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
21 RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
22 CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
23 CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
25 Author: Hiroyuki Miyamoto Digital Equipment Corporation
27 Hidetoshi Tajima(tajima@Eng.Sun.COM) Sun Microsystems, Inc.
29 This version tidied and debugged by Steve Underwood May 1999
31 ******************************************************************/
33 /* Protocol Packet frames */
37 /* Data type definitions */
39 static XimFrameRec ximattr_fr[] =
41 _FRAME(BIT16), /* attribute ID */
42 _FRAME(BIT16), /* type of the value */
43 _FRAME(BIT16), /* length of im-attribute */
44 _FRAME(BARRAY), /* im-attribute */
49 static XimFrameRec xicattr_fr[] =
51 _FRAME(BIT16), /* attribute ID */
52 _FRAME(BIT16), /* type of the value */
53 _FRAME(BIT16), /* length of ic-attribute */
54 _FRAME(BARRAY), /* ic-attribute */
59 static XimFrameRec ximattribute_fr[] =
61 _FRAME(BIT16), /* attribute ID */
62 _FRAME(BIT16), /* value length */
63 _FRAME(BARRAY), /* value */
68 static XimFrameRec xicattribute_fr[] =
70 _FRAME(BIT16), /* attribute ID */
71 _FRAME(BIT16), /* value length */
72 _FRAME(BARRAY), /* value */
77 static XimFrameRec ximtriggerkey_fr[] =
79 _FRAME(BIT32), /* keysym */
80 _FRAME(BIT32), /* modifier */
81 _FRAME(BIT32), /* modifier mask */
85 static XimFrameRec encodinginfo_fr[] =
87 _FRAME(BIT16), /* length of encoding info */
88 _FRAME(BARRAY), /* encoding info */
93 static XimFrameRec str_fr[] =
95 _FRAME(BIT8), /* number of byte */
96 _FRAME(BARRAY), /* string */
100 static XimFrameRec xpcs_fr[] =
102 _FRAME(BIT16), /* length of string in bytes */
103 _FRAME(BARRAY), /* string */
107 static XimFrameRec ext_fr[] =
109 _FRAME(BIT8), /* extension major-opcode */
110 _FRAME(BIT8), /* extension minor-opcode */
111 _FRAME(BIT16), /* length of extension name */
112 _FRAME(BARRAY), /* extension name */
117 static XimFrameRec inputstyle_fr[] =
119 _FRAME(BIT32), /* inputstyle */
122 /* Protocol definitions */
124 xim_externaldef XimFrameRec attr_head_fr[] =
126 _FRAME(BIT16), /* attribute id */
127 _FRAME(BIT16), /* attribute length */
131 xim_externaldef XimFrameRec short_fr[] =
133 _FRAME(BIT16), /* value */
137 xim_externaldef XimFrameRec long_fr[] =
139 _FRAME(BIT32), /* value */
143 xim_externaldef XimFrameRec xrectangle_fr[] =
145 _FRAME(BIT16), /* x */
146 _FRAME(BIT16), /* y */
147 _FRAME(BIT16), /* width */
148 _FRAME(BIT16), /* height */
152 xim_externaldef XimFrameRec xpoint_fr[] =
154 _FRAME(BIT16), /* x */
155 _FRAME(BIT16), /* y */
159 xim_externaldef XimFrameRec fontset_fr[] =
161 _FRAME(BIT16), /* length of base font name */
162 _FRAME(BARRAY), /* base font name list */
163 _PAD4(2), /* unused */
167 xim_externaldef XimFrameRec input_styles_fr[] =
169 _FRAME(BIT16), /* number of list */
170 _PAD4(1), /* unused */
171 _FRAME(ITER), /* XIMStyle list */
177 xim_externaldef XimFrameRec packet_header_fr[] =
179 _FRAME(BIT8), /* major-opcode */
180 _FRAME(BIT8), /* minor-opcode */
181 _FRAME(BIT16), /* length */
185 xim_externaldef XimFrameRec error_fr[] =
187 _FRAME(BIT16), /* input-method-ID */
188 _FRAME(BIT16), /* input-context-ID */
189 _FRAME(BIT16), /* flag */
190 _FRAME(BIT16), /* Error Code */
191 _FRAME(BIT16), /* length of error detail */
192 _FRAME(BIT16), /* type of error detail */
193 _FRAME(BARRAY), /* error detail */
198 xim_externaldef XimFrameRec connect_fr[] =
200 _FRAME(BIT8), /* byte order */
201 _PAD2(1), /* unused */
202 _FRAME(BIT16), /* client-major-protocol-version */
203 _FRAME(BIT16), /* client-minor-protocol-version */
204 _BYTE_COUNTER(BIT16, 1), /* length of client-auth-protocol-names */
205 _FRAME(ITER), /* client-auth-protocol-names */
211 xim_externaldef XimFrameRec connect_reply_fr[] =
213 _FRAME(BIT16), /* server-major-protocol-version */
214 _FRAME(BIT16), /* server-minor-protocol-version */
218 xim_externaldef XimFrameRec auth_required_fr[] =
220 _FRAME(BIT8), /* auth-protocol-index */
221 _FRAME(BIT8), /* auth-data1 */
222 _FRAME(BARRAY), /* auth-data2 */
228 xim_externaldef XimFrameRec auth_reply_fr[] =
236 xim_externaldef XimFrameRec auth_next_fr[] =
238 _FRAME(BIT8), /* auth-data1 */
239 _FRAME(BARRAY), /* auth-data2 */
244 xim_externaldef XimFrameRec auth_setup_fr[] =
246 _BYTE_COUNTER(BIT16, 2), /* number of client-auth-protocol-names */
247 _PAD4(1), /* unused */
248 _FRAME(ITER), /* server-auth-protocol-names */
254 xim_externaldef XimFrameRec auth_ng_fr[] =
259 xim_externaldef XimFrameRec disconnect_fr[] =
264 xim_externaldef XimFrameRec disconnect_reply_fr[] =
269 xim_externaldef XimFrameRec open_fr[] =
271 _FRAME(POINTER), /* locale name */
277 xim_externaldef XimFrameRec open_reply_fr[] =
279 _FRAME(BIT16), /* input-method-ID */
280 _BYTE_COUNTER(BIT16, 1), /* byte length of IM attributes supported */
281 _FRAME(ITER), /* IM attribute supported */
284 _BYTE_COUNTER(BIT16, 2), /* number of IC attribute supported */
285 _PAD4(1), /* unused */
286 _FRAME(ITER), /* IC attribute supported */
292 xim_externaldef XimFrameRec close_fr[] =
294 _FRAME(BIT16), /* input-method-ID */
295 _PAD4(1), /* unused */
299 xim_externaldef XimFrameRec close_reply_fr[] =
301 _FRAME(BIT16), /* input-method-ID */
302 _PAD4(1), /* unused */
306 xim_externaldef XimFrameRec register_triggerkeys_fr[] =
308 _FRAME(BIT16), /* input-method-ID */
309 _PAD4(1), /* unused */
310 _BYTE_COUNTER(BIT32, 1), /* byte length of on-keys */
311 _FRAME(ITER), /* on-keys list */
313 _PTR(ximtriggerkey_fr),
314 _BYTE_COUNTER(BIT32, 1), /* byte length of off-keys */
315 _FRAME(ITER), /* off-keys list */
317 _PTR(ximtriggerkey_fr),
321 xim_externaldef XimFrameRec trigger_notify_fr[] =
323 _FRAME(BIT16), /* input-mehotd-ID */
324 _FRAME(BIT16), /* input-context-ID */
325 _FRAME(BIT32), /* flag */
326 _FRAME(BIT32), /* index of keys list */
327 _FRAME(BIT32), /* client-select-event-mask */
331 xim_externaldef XimFrameRec trigger_notify_reply_fr[] =
333 _FRAME(BIT16), /* input-method-ID */
334 _FRAME(BIT16), /* input-context-ID */
338 xim_externaldef XimFrameRec set_event_mask_fr[] =
340 _FRAME(BIT16), /* input-method-ID */
341 _FRAME(BIT16), /* input-context-ID */
342 _FRAME(BIT32), /* forward-event-mask */
343 _FRAME(BIT32), /* synchronous-event-mask */
347 xim_externaldef XimFrameRec encoding_negotiation_fr[] =
349 _FRAME(BIT16), /* input-method-ID */
350 _BYTE_COUNTER(BIT16, 1), /* byte length of encodings listed by name */
351 _FRAME(ITER), /* supported list of encoding in IM library */
355 _BYTE_COUNTER(BIT16, 2), /* byte length of encodings listed by
358 _FRAME(ITER), /* list of encodings supported in the
361 _PTR(encodinginfo_fr),
365 xim_externaldef XimFrameRec encoding_negotiation_reply_fr[] =
367 _FRAME(BIT16), /* input-method-ID */
368 _FRAME(BIT16), /* category of the encoding determined */
369 _FRAME(BIT16), /* index of the encoding dterminated */
374 xim_externaldef XimFrameRec query_extension_fr[] =
376 _FRAME(BIT16), /* input-method-ID */
377 _BYTE_COUNTER(BIT16, 1), /* byte length of extensions supported
379 _FRAME(ITER), /* extensions supported by the IM library */
386 xim_externaldef XimFrameRec query_extension_reply_fr[] =
388 _FRAME(BIT16), /* input-method-ID */
389 _BYTE_COUNTER(BIT16, 1), /* byte length of extensions supported
391 _FRAME(ITER), /* list of extensions supported by the
398 xim_externaldef XimFrameRec get_im_values_fr[] =
400 _FRAME(BIT16), /* input-method-ID */
401 _BYTE_COUNTER(BIT16, 1), /* byte length of im-attribute-id */
402 _FRAME(ITER), /* im-attribute-id */
408 xim_externaldef XimFrameRec get_im_values_reply_fr[] =
410 _FRAME(BIT16), /* input-method-ID */
411 _BYTE_COUNTER(BIT16, 1), /* byte length of im-attribute returned */
412 _FRAME(ITER), /* im-attribute returned */
414 _PTR(ximattribute_fr),
418 xim_externaldef XimFrameRec create_ic_fr[] =
420 _FRAME(BIT16), /* input-method-ID */
421 _BYTE_COUNTER(BIT16, 1), /* byte length of ic-attributes */
422 _FRAME(ITER), /* ic-attributes */
424 _PTR(xicattribute_fr),
428 xim_externaldef XimFrameRec create_ic_reply_fr[] =
430 _FRAME(BIT16), /* input-method-ID */
431 _FRAME(BIT16), /* input-context-ID */
435 xim_externaldef XimFrameRec destroy_ic_fr[] =
437 _FRAME(BIT16), /* input-method-ID */
438 _FRAME(BIT16), /* input-context-ID */
442 xim_externaldef XimFrameRec destroy_ic_reply_fr[] =
444 _FRAME(BIT16), /* input-method-ID */
445 _FRAME(BIT16), /* input-context-ID */
449 xim_externaldef XimFrameRec set_ic_values_fr[] =
451 _FRAME(BIT16), /* input-method-ID */
452 _FRAME(BIT16), /* input-context-ID */
453 _BYTE_COUNTER(BIT16, 2), /* byte length of ic-attributes */
455 _FRAME(ITER), /* ic-attribute */
457 _PTR(xicattribute_fr),
461 xim_externaldef XimFrameRec set_ic_values_reply_fr[] =
463 _FRAME(BIT16), /* input-method-ID */
464 _FRAME(BIT16), /* input-context-ID */
468 xim_externaldef XimFrameRec get_ic_values_fr[] =
470 _FRAME(BIT16), /* input-method-ID */
471 _FRAME(BIT16), /* input-context-ID */
472 _BYTE_COUNTER(BIT16, 1), /* byte length of ic-attribute-id */
473 _FRAME(ITER), /* ic-attribute */
479 xim_externaldef XimFrameRec get_ic_values_reply_fr[] =
481 _FRAME(BIT16), /* input-method-ID */
482 _FRAME(BIT16), /* input-context-ID */
483 _BYTE_COUNTER(BIT16, 2), /* byte length of ic-attribute */
485 _FRAME(ITER), /* ic-attribute */
487 _PTR(xicattribute_fr),
491 xim_externaldef XimFrameRec set_ic_focus_fr[] =
493 _FRAME(BIT16), /* input-method-ID */
494 _FRAME(BIT16), /* input-context-ID */
498 xim_externaldef XimFrameRec unset_ic_focus_fr[] =
500 _FRAME(BIT16), /* input-method-ID */
501 _FRAME(BIT16), /* input-context-ID */
505 xim_externaldef XimFrameRec forward_event_fr[] =
507 _FRAME(BIT16), /* input-method-ID */
508 _FRAME(BIT16), /* input-context-ID */
509 _FRAME(BIT16), /* flag */
510 _FRAME(BIT16), /* sequence number */
514 xim_externaldef XimFrameRec wire_keyevent_fr[] = {
515 _FRAME(BIT8), /* type */
516 _FRAME(BIT8), /* detail */
517 _FRAME(BIT16), /* serial number */
518 _FRAME(BIT32), /* time */
519 _FRAME(BIT32), /* root */
520 _FRAME(BIT32), /* window */
521 _FRAME(BIT32), /* subwindow */
522 _FRAME(BIT16), /* rootX */
523 _FRAME(BIT16), /* rootY */
524 _FRAME(BIT16), /* X */
525 _FRAME(BIT16), /* Y */
526 _FRAME(BIT16), /* state */
527 _FRAME(BIT8), /* sameScreen */
531 xim_externaldef XimFrameRec sync_fr[] =
533 _FRAME(BIT16), /* input-method-ID */
534 _FRAME(BIT16), /* input-context-ID */
538 xim_externaldef XimFrameRec sync_reply_fr[] =
540 _FRAME(BIT16), /* input-method-ID */
541 _FRAME(BIT16), /* input-context-ID */
546 xim_externaldef XimFrameRec commit_fr[] =
548 _FRAME(BIT16), /* input-method-ID */
549 _FRAME(BIT16), /* input-context-ID */
550 _FRAME(BIT16), /* flag */
551 _FRAME(BIT16), /* byte length of committed string */
552 _FRAME(BARRAY), /* committed string */
554 _BYTE_COUNTER(BIT16, 1), /* byte length of keysym */
555 _FRAME(ITER), /* keysym */
562 xim_externaldef XimFrameRec commit_chars_fr[] =
564 _FRAME(BIT16), /* input-method-ID */
565 _FRAME(BIT16), /* input-context-ID */
566 _FRAME(BIT16), /* flag */
567 _FRAME(BIT16), /* byte length of committed string */
568 _FRAME(BARRAY), /* committed string */
573 xim_externaldef XimFrameRec commit_both_fr[] =
575 _FRAME(BIT16), /* input-method-ID */
576 _FRAME(BIT16), /* input-context-ID */
577 _FRAME(BIT16), /* flag */
578 _PAD4(1), /* unused */
579 _FRAME(BIT32), /* keysym */
580 _FRAME(BIT16), /* byte length of committed string */
581 _FRAME(BARRAY), /* committed string */
586 xim_externaldef XimFrameRec reset_ic_fr[] =
588 _FRAME(BIT16), /* input-method-ID */
589 _FRAME(BIT16), /* input-context-ID */
593 xim_externaldef XimFrameRec reset_ic_reply_fr[] =
595 _FRAME(BIT16), /* input-method-ID */
596 _FRAME(BIT16), /* input-context-ID */
597 _FRAME(BIT16), /* byte length of committed string */
598 _FRAME(BARRAY), /* committed string */
603 xim_externaldef XimFrameRec geometry_fr[] =
605 _FRAME(BIT16), /* input-method-ID */
606 _FRAME(BIT16), /* input-context-ID */
610 xim_externaldef XimFrameRec str_conversion_fr[] =
612 _FRAME(BIT16), /* input-method-ID */
613 _FRAME(BIT16), /* input-context-ID */
614 _FRAME(BIT32), /* XIMStringConversionPosition */
615 _FRAME(BIT32), /* XIMStringConversionType */
616 _FRAME(BIT32), /* XIMStringConversionOperation */
617 _FRAME(BIT16), /* length to multiply the
618 XIMStringConversionType */
619 _FRAME(BIT16), /* length of the string to be
622 _FRAME(BARRAY), /* string */
628 xim_externaldef XimFrameRec str_conversion_reply_fr[] =
630 _FRAME(BIT16), /* input-method-ID */
631 _FRAME(BIT16), /* input-context-ID */
632 _FRAME(BIT32), /* XIMStringConversionFeedback */
633 _FRAME(BIT16), /* length of the retrieved string */
634 _FRAME(BARRAY), /* retrieved string */
636 _BYTE_COUNTER(BIT16, 2), /* number of feedback array */
638 _FRAME(ITER), /* feedback array */
643 xim_externaldef XimFrameRec preedit_start_fr[] =
645 _FRAME(BIT16), /* input-method-ID */
646 _FRAME(BIT16), /* input-context-ID */
650 xim_externaldef XimFrameRec preedit_start_reply_fr[] =
652 _FRAME(BIT16), /* input-method-ID */
653 _FRAME(BIT16), /* input-context-ID */
654 _FRAME(BIT32), /* return value */
658 xim_externaldef XimFrameRec preedit_draw_fr[] =
660 _FRAME(BIT16), /* input-method-ID */
661 _FRAME(BIT16), /* input-context-ID */
662 _FRAME(BIT32), /* caret */
663 _FRAME(BIT32), /* chg_first */
664 _FRAME(BIT32), /* chg_length */
665 _FRAME(BIT32), /* status */
666 _FRAME(BIT16), /* length of preedit string */
667 _FRAME(BARRAY), /* preedit string */
669 _BYTE_COUNTER(BIT16, 2), /* number of feedback array */
671 _FRAME(ITER), /* feedback array */
676 xim_externaldef XimFrameRec preedit_caret_fr[] =
678 _FRAME(BIT16), /* input-method-ID */
679 _FRAME(BIT16), /* input-context-ID */
680 _FRAME(BIT32), /* position */
681 _FRAME(BIT32), /* direction */
682 _FRAME(BIT32), /* style */
686 xim_externaldef XimFrameRec preedit_caret_reply_fr[] =
688 _FRAME(BIT16), /* input-method-ID */
689 _FRAME(BIT16), /* input-context-ID */
690 _FRAME(BIT32), /* position */
694 xim_externaldef XimFrameRec preedit_done_fr[] =
696 _FRAME(BIT16), /* input-method-ID */
697 _FRAME(BIT16), /* input-context-ID */
701 xim_externaldef XimFrameRec status_start_fr[] =
703 _FRAME(BIT16), /* input-method-ID */
704 _FRAME(BIT16), /* input-context-ID */
708 xim_externaldef XimFrameRec status_draw_text_fr[] =
710 _FRAME(BIT16), /* input-method-ID */
711 _FRAME(BIT16), /* input-context-ID */
712 _FRAME(BIT32), /* type */
713 _FRAME(BIT32), /* status */
714 _FRAME(BIT16), /* length of status string */
715 _FRAME(BARRAY), /* status string */
717 _BYTE_COUNTER(BIT16, 2), /* number of feedback array */
719 _FRAME(ITER), /* feedback array */
724 xim_externaldef XimFrameRec status_draw_bitmap_fr[] =
726 _FRAME(BIT16), /* input-method-ID */
727 _FRAME(BIT16), /* input-context-ID */
728 _FRAME(BIT32), /* type */
729 _FRAME(BIT32), /* pixmap data */
733 xim_externaldef XimFrameRec status_done_fr[] =
735 _FRAME(BIT16), /* input-method-ID */
736 _FRAME(BIT16), /* input-context-ID */
740 xim_externaldef XimFrameRec ext_set_event_mask_fr[] =
742 _FRAME(BIT16), /* input-method-ID */
743 _FRAME(BIT16), /* input-context-ID */
744 _FRAME(BIT32), /* filter-event-mask */
745 _FRAME(BIT32), /* intercept-event-mask */
746 _FRAME(BIT32), /* select-event-mask */
747 _FRAME(BIT32), /* forward-event-mask */
748 _FRAME(BIT32), /* synchronous-event-mask */
752 xim_externaldef XimFrameRec ext_forward_keyevent_fr[] =
754 _FRAME(BIT16), /* input-method-ID */
755 _FRAME(BIT16), /* input-context-ID */
756 _FRAME(BIT16), /* flag */
757 _FRAME(BIT16), /* sequence number */
758 _FRAME(BIT8), /* xEvent.u.u.type */
759 _FRAME(BIT8), /* keycode */
760 _FRAME(BIT16), /* state */
761 _FRAME(BIT32), /* time */
762 _FRAME(BIT32), /* window */
766 xim_externaldef XimFrameRec ext_move_fr[] =
768 _FRAME(BIT16), /* input-method-ID */
769 _FRAME(BIT16), /* input-context-ID */
770 _FRAME(BIT16), /* X */
771 _FRAME(BIT16), /* Y */