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