1 /*
2  * SPDX-FileCopyrightText: 2014 Weng Xuetian <wengxt@gmail.com>
3  *
4  * SPDX-License-Identifier: LGPL-2.1-only
5  *
6  */
7 
8 #ifndef XIMPROTO_H
9 #define XIMPROTO_H
10 
11 #include "ximcommon.h"
12 #include "ximproto-gen.h" // IWYU pragma: export
13 #include <stdint.h>
14 
15 XCBIMDKIT_DECL_BEGIN
16 
17 #define XCB_IM_HEADER_SIZE 4
18 
19 /*
20  * Client Message data size
21  */
22 #define XCB_XIM_CM_DATA_SIZE 20
23 
24 /*
25  * Xim implementation revision
26  */
27 #define XCB_XIM_PROTOCOLMAJORVERSION 0
28 #define XCB_XIM_PROTOCOLMINORVERSION 0
29 
30 /*
31  * Major Protocol number
32  */
33 #define XCB_XIM_CONNECT 1
34 #define XCB_XIM_CONNECT_REPLY 2
35 #define XCB_XIM_DISCONNECT 3
36 #define XCB_XIM_DISCONNECT_REPLY 4
37 
38 #define XCB_XIM_AUTH_REQUIRED 10
39 #define XCB_XIM_AUTH_REPLY 11
40 #define XCB_XIM_AUTH_NEXT 12
41 #define XCB_XIM_AUTH_SETUP 13
42 #define XCB_XIM_AUTH_NG 14
43 
44 #define XCB_XIM_ERROR 20
45 
46 #define XCB_XIM_OPEN 30
47 #define XCB_XIM_OPEN_REPLY 31
48 #define XCB_XIM_CLOSE 32
49 #define XCB_XIM_CLOSE_REPLY 33
50 #define XCB_XIM_REGISTER_TRIGGERKEYS 34
51 #define XCB_XIM_TRIGGER_NOTIFY 35
52 #define XCB_XIM_TRIGGER_NOTIFY_REPLY 36
53 #define XCB_XIM_SET_EVENT_MASK 37
54 #define XCB_XIM_ENCODING_NEGOTIATION 38
55 #define XCB_XIM_ENCODING_NEGOTIATION_REPLY 39
56 #define XCB_XIM_QUERY_EXTENSION 40
57 #define XCB_XIM_QUERY_EXTENSION_REPLY 41
58 #define XCB_XIM_SET_IM_VALUES 42
59 #define XCB_XIM_SET_IM_VALUES_REPLY 43
60 #define XCB_XIM_GET_IM_VALUES 44
61 #define XCB_XIM_GET_IM_VALUES_REPLY 45
62 
63 #define XCB_XIM_CREATE_IC 50
64 #define XCB_XIM_CREATE_IC_REPLY 51
65 #define XCB_XIM_DESTROY_IC 52
66 #define XCB_XIM_DESTROY_IC_REPLY 53
67 #define XCB_XIM_SET_IC_VALUES 54
68 #define XCB_XIM_SET_IC_VALUES_REPLY 55
69 #define XCB_XIM_GET_IC_VALUES 56
70 #define XCB_XIM_GET_IC_VALUES_REPLY 57
71 #define XCB_XIM_SET_IC_FOCUS 58
72 #define XCB_XIM_UNSET_IC_FOCUS 59
73 #define XCB_XIM_FORWARD_EVENT 60
74 #define XCB_XIM_SYNC 61
75 #define XCB_XIM_SYNC_REPLY 62
76 #define XCB_XIM_COMMIT 63
77 #define XCB_XIM_RESET_IC 64
78 #define XCB_XIM_RESET_IC_REPLY 65
79 
80 #define XCB_XIM_GEOMETRY 70
81 #define XCB_XIM_STR_CONVERSION 71
82 #define XCB_XIM_STR_CONVERSION_REPLY 72
83 #define XCB_XIM_PREEDIT_START 73
84 #define XCB_XIM_PREEDIT_START_REPLY 74
85 #define XCB_XIM_PREEDIT_DRAW 75
86 #define XCB_XIM_PREEDIT_CARET 76
87 #define XCB_XIM_PREEDIT_CARET_REPLY 77
88 #define XCB_XIM_PREEDIT_DONE 78
89 #define XCB_XIM_STATUS_START 79
90 #define XCB_XIM_STATUS_DRAW 80
91 #define XCB_XIM_STATUS_DONE 81
92 
93 typedef enum {
94     XCB_XIM_SYNCHRONOUS = (1 << 0),
95     XCB_XIM_LOOKUP_CHARS = (1 << 1),
96     XCB_XIM_LOOKUP_KEYSYM = (1 << 2),
97     XCB_XIM_LOOKUP_BOTH = XCB_XIM_LOOKUP_CHARS | XCB_XIM_LOOKUP_KEYSYM,
98 } xcb_xim_lookup_flags_t;
99 
100 typedef struct _xcb_im_ext_list {
101     char *name;
102     uint8_t major_opcode;
103     uint8_t minor_opcode;
104 } xcb_im_ext_list;
105 
106 /*
107  * Minor Protocol Number for Extension Protocol
108  */
109 #define XCB_XIM_EXTENSION 128
110 #define XCB_XIM_EXT_SET_EVENT_MASK (0x30)
111 #define XCB_XIM_EXT_FORWARD_KEYEVENT (0x32)
112 #define XCB_XIM_EXT_MOVE (0x33)
113 
114 #define XCB_XIM_XNQueryInputStyle "queryInputStyle"
115 #define XCB_XIM_XNClientWindow "clientWindow"
116 #define XCB_XIM_XNInputStyle "inputStyle"
117 #define XCB_XIM_XNFocusWindow "focusWindow"
118 #define XCB_XIM_XNFilterEvents "filterEvents"
119 #define XCB_XIM_XNPreeditAttributes "preeditAttributes"
120 #define XCB_XIM_XNStatusAttributes "statusAttributes"
121 #define XCB_XIM_XNArea "area"
122 #define XCB_XIM_XNAreaNeeded "areaNeeded"
123 #define XCB_XIM_XNSpotLocation "spotLocation"
124 #define XCB_XIM_XNColormap "colorMap"
125 #define XCB_XIM_XNStdColormap "stdColorMap"
126 #define XCB_XIM_XNForeground "foreground"
127 #define XCB_XIM_XNBackground "background"
128 #define XCB_XIM_XNBackgroundPixmap "backgroundPixmap"
129 #define XCB_XIM_XNFontSet "fontSet"
130 #define XCB_XIM_XNLineSpace "lineSpace"
131 #define XCB_XIM_XNSeparatorofNestedList "separatorofNestedList"
132 
133 typedef enum _xcb_im_style_t {
134     XCB_IM_PreeditArea = 0x0001,
135     XCB_IM_PreeditCallbacks = 0x0002,
136     XCB_IM_PreeditPosition = 0x0004,
137     XCB_IM_PreeditNothing = 0x0008,
138     XCB_IM_PreeditNone = 0x0010,
139     XCB_IM_StatusArea = 0x0100,
140     XCB_IM_StatusCallbacks = 0x0200,
141     XCB_IM_StatusNothing = 0x0400,
142     XCB_IM_StatusNone = 0x0800,
143 } xcb_im_style_t;
144 
145 enum { XCB_IM_TextType = 0, XCB_IM_BitmapType = 1 };
146 
147 typedef enum {
148     XCB_XIM_REVERSE = (1 << 0),
149     XCB_XIM_UNDERLINE = (1 << 1),
150     XCB_XIM_HIGHLIGHT = (1 << 2),
151     XCB_XIM_PRIMARY = (1 << 5),
152     XCB_XIM_SECONDARY = (1 << 6),
153     XCB_XIM_TERTIARY = (1 << 7),
154     XCB_XIM_VISIBLE_TO_FORWARD = (1 << 8),
155     XCB_XIM_VISIBLE_TO_BACKWORD = (1 << 9),
156     XCB_XIM_VISIBLE_TO_CENTER = (1 << 10),
157 } xcb_im_feedback_t;
158 
159 typedef struct _xcb_im_trigger_keys_t {
160     uint16_t nKeys;
161     xcb_im_ximtriggerkey_fr_t *keys;
162 } xcb_im_trigger_keys_t;
163 
164 XCBIMDKIT_DECL_END
165 
166 #endif // XIMPROTO_H
167