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 */