4.5 KB、166行 生 Blame 履歴
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
15XCBIMDKIT_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
93typedef 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
100typedef 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
133typedef 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
145enum { XCB_IM_TextType = 0, XCB_IM_BitmapType = 1 };
146
147typedef 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
159typedef struct _xcb_im_trigger_keys_t {
160 uint16_t nKeys;
161 xcb_im_ximtriggerkey_fr_t *keys;
162} xcb_im_trigger_keys_t;
163
164XCBIMDKIT_DECL_END
165
166#endif // XIMPROTO_H