9 KB、183行 生 Blame 履歴
1/*
2 * SPDX-FileCopyrightText: 2014 Weng Xuetian <wengxt@gmail.com>
3 *
4 * SPDX-License-Identifier: LGPL-2.1-only
5 *
6 */
7#ifndef _XCB_IMDKIT_IMCLIENT_H_
8#define _XCB_IMDKIT_IMCLIENT_H_
9
10#include "ximcommon.h"
11#include "ximproto.h"
12#include <stdbool.h>
13#include <stddef.h>
14#include <stdint.h>
15#include <xcb/xcb.h>
16#include <xcb/xproto.h>
17
18XCBIMDKIT_DECL_BEGIN
19
20typedef struct _xcb_xim_t xcb_xim_t;
21typedef uint16_t xcb_xic_t;
22
23typedef struct _xcb_xim_nested_list {
24 uint8_t *data;
25 size_t length;
26} xcb_xim_nested_list;
27
28typedef void (*xcb_xim_set_event_mask_callback)(xcb_xim_t *im, xcb_xic_t ic,
29 uint32_t forward_event_mask,
30 uint32_t synchronous_event_mask,
31 void *user_data);
32typedef void (*xcb_xim_forward_event_callback)(xcb_xim_t *im, xcb_xic_t ic,
33 xcb_key_press_event_t *event,
34 void *user_data);
35typedef void (*xcb_xim_commit_string_callback)(xcb_xim_t *im, xcb_xic_t ic,
36 uint32_t flag, char *str,
37 uint32_t length,
38 uint32_t *keysym, size_t nKeySym,
39 void *user_data);
40typedef void (*xcb_xim_geometry_callback)(xcb_xim_t *im, xcb_xic_t ic,
41 void *user_data);
42typedef void (*xcb_xim_preedit_start_callback)(xcb_xim_t *im, xcb_xic_t ic,
43 void *user_data);
44typedef void (*xcb_xim_preedit_draw_callback)(xcb_xim_t *im, xcb_xic_t ic,
45 xcb_im_preedit_draw_fr_t *frame,
46 void *user_data);
47typedef void (*xcb_xim_preedit_caret_callback)(xcb_xim_t *im, xcb_xic_t ic,
48 xcb_im_preedit_caret_fr_t *frame,
49 void *user_data);
50typedef void (*xcb_xim_preedit_done_callback)(xcb_xim_t *im, xcb_xic_t ic,
51 void *user_data);
52typedef void (*xcb_xim_status_start_callback)(xcb_xim_t *im, xcb_xic_t ic,
53 void *user_data);
54typedef void (*xcb_xim_status_draw_text_callback)(
55 xcb_xim_t *im, xcb_xic_t ic, xcb_im_status_draw_text_fr_t *frame,
56 void *user_data);
57typedef void (*xcb_xim_status_draw_bitmap_callback)(
58 xcb_xim_t *im, xcb_xic_t ic, xcb_im_status_draw_bitmap_fr_t *frame,
59 void *user_data);
60typedef void (*xcb_xim_status_done_callback)(xcb_xim_t *im, xcb_xic_t ic,
61 void *user_data);
62typedef void (*xcb_xim_sync_callback)(xcb_xim_t *im, xcb_xic_t ic,
63 void *user_data);
64typedef void (*xcb_xim_disconnected_callback)(xcb_xim_t *im, void *user_data);
65
66typedef struct _xcb_xim_im_callback {
67 xcb_xim_set_event_mask_callback set_event_mask;
68 xcb_xim_forward_event_callback forward_event;
69 xcb_xim_commit_string_callback commit_string;
70 xcb_xim_geometry_callback geometry;
71 xcb_xim_preedit_start_callback preedit_start;
72 xcb_xim_preedit_draw_callback preedit_draw;
73 xcb_xim_preedit_caret_callback preedit_caret;
74 xcb_xim_preedit_done_callback preedit_done;
75 xcb_xim_status_start_callback status_start;
76 xcb_xim_status_draw_text_callback status_draw_text;
77 xcb_xim_status_draw_bitmap_callback status_draw_bitmap;
78 xcb_xim_status_done_callback status_done;
79 xcb_xim_sync_callback sync;
80 xcb_xim_disconnected_callback disconnected;
81} xcb_xim_im_callback;
82
83typedef enum _xcb_xim_trigger_key_type_t {
84 XCB_XIM_IS_NOT_TRIGGER,
85 XCB_XIM_TRIGGER_ON_KEY,
86 XCB_XIM_TRIGGER_OFF_KEY,
87} xcb_xim_trigger_key_type_t;
88
89typedef enum _xcb_xim_encoding_t {
90 XCB_XIM_COMPOUND_TEXT,
91 XCB_XIM_UTF8_STRING,
92} xcb_xim_encoding_t;
93
94typedef void (*xcb_xim_open_callback)(xcb_xim_t *im, void *user_data);
95typedef void (*xcb_xim_create_ic_callback)(xcb_xim_t *im, xcb_xic_t ic,
96 void *user_data);
97typedef void (*xcb_xim_get_im_values_callback)(
98 xcb_xim_t *im, xcb_im_get_im_values_reply_fr_t *reply, void *user_data);
99typedef void (*xcb_xim_get_ic_values_callback)(
100 xcb_xim_t *im, xcb_xic_t ic, xcb_im_get_ic_values_reply_fr_t *reply,
101 void *user_data);
102typedef void (*xcb_xim_set_ic_values_callback)(xcb_xim_t *im, xcb_xic_t ic,
103 void *user_data);
104typedef void (*xcb_xim_destroy_ic_callback)(xcb_xim_t *im, xcb_xic_t ic,
105 void *user_data);
106typedef void (*xcb_xim_reset_ic_callback)(xcb_xim_t *im, xcb_xic_t ic,
107 xcb_im_reset_ic_reply_fr_t *reply,
108 void *user_data);
109
110XCBIMDKIT_EXPORT xcb_xim_t *xcb_xim_create(xcb_connection_t *conn,
111 int screen_id, const char *imname);
112XCBIMDKIT_EXPORT void
113xcb_xim_set_log_handler(xcb_xim_t *im, void (*logger)(const char *, ...));
114XCBIMDKIT_EXPORT void xcb_xim_set_use_compound_text(xcb_xim_t *im, bool enable);
115XCBIMDKIT_EXPORT void xcb_xim_set_use_utf8_string(xcb_xim_t *im, bool enable);
116XCBIMDKIT_EXPORT
117xcb_xim_encoding_t xcb_xim_get_encoding(xcb_xim_t *im);
118XCBIMDKIT_EXPORT void xcb_xim_destroy(xcb_xim_t *im);
119XCBIMDKIT_EXPORT bool xcb_xim_open(xcb_xim_t *im,
120 xcb_xim_open_callback callback,
121 bool auto_connect, void *user_data);
122XCBIMDKIT_EXPORT void
123xcb_xim_set_im_callback(xcb_xim_t *im, const xcb_xim_im_callback *callbacks,
124 void *user_data);
125XCBIMDKIT_EXPORT void
126xcb_xim_set_im_callback(xcb_xim_t *im, const xcb_xim_im_callback *callbacks,
127 void *user_data);
128XCBIMDKIT_EXPORT bool xcb_xim_filter_event(xcb_xim_t *im,
129 xcb_generic_event_t *event);
130
131XCBIMDKIT_DEPRECATED_EXPORT xcb_xim_trigger_key_type_t
132xcb_xim_check_trigger_key(xcb_xim_t *im, xcb_keysym_t keysym, uint32_t modifier,
133 uint32_t *idx);
134XCBIMDKIT_EXPORT bool xcb_xim_check_trigger_on_key(xcb_xim_t *im,
135 xcb_keysym_t keysym,
136 uint32_t modifier,
137 uint32_t *idx);
138XCBIMDKIT_EXPORT bool xcb_xim_check_trigger_off_key(xcb_xim_t *im,
139 xcb_keysym_t keysym,
140 uint32_t modifier,
141 uint32_t *idx);
142XCBIMDKIT_EXPORT bool xcb_xim_trigger_notify(xcb_xim_t *im, xcb_xic_t ic,
143 uint32_t idx, bool off);
144
145XCBIMDKIT_EXPORT bool
146xcb_xim_get_im_values(xcb_xim_t *im, xcb_xim_get_im_values_callback callback,
147 void *user_data, ...);
148XCBIMDKIT_EXPORT xcb_xim_nested_list xcb_xim_create_nested_list(xcb_xim_t *im,
149 ...);
150XCBIMDKIT_EXPORT bool xcb_xim_create_ic(xcb_xim_t *im,
151 xcb_xim_create_ic_callback callback,
152 void *user_data, ...);
153XCBIMDKIT_EXPORT bool
154xcb_xim_get_ic_values(xcb_xim_t *im, xcb_xic_t ic,
155 xcb_xim_get_ic_values_callback callback, void *user_data,
156 ...);
157XCBIMDKIT_EXPORT bool
158xcb_xim_set_ic_values(xcb_xim_t *im, xcb_xic_t ic,
159 xcb_xim_set_ic_values_callback callback, void *user_data,
160 ...);
161XCBIMDKIT_EXPORT bool xcb_xim_set_ic_focus(xcb_xim_t *im, xcb_xic_t ic);
162XCBIMDKIT_EXPORT bool xcb_xim_unset_ic_focus(xcb_xim_t *im, xcb_xic_t ic);
163XCBIMDKIT_EXPORT bool xcb_xim_forward_event(xcb_xim_t *im, xcb_xic_t ic,
164 xcb_key_press_event_t *event);
165XCBIMDKIT_EXPORT bool xcb_xim_forward_event_full(xcb_xim_t *im, xcb_xic_t ic,
166 uint16_t sequence,
167 xcb_key_press_event_t *event);
168XCBIMDKIT_EXPORT bool xcb_xim_reset_ic(xcb_xim_t *im, xcb_xic_t ic,
169 xcb_xim_reset_ic_callback callback,
170 void *user_data);
171XCBIMDKIT_EXPORT bool xcb_xim_destroy_ic(xcb_xim_t *im, xcb_xic_t ic,
172 xcb_xim_destroy_ic_callback callback,
173 void *user_data);
174XCBIMDKIT_EXPORT void xcb_xim_close(xcb_xim_t *im);
175XCBIMDKIT_EXPORT bool xcb_xim_support_extension(xcb_xim_t *im,
176 uint16_t major_code,
177 uint16_t minor_code);
178XCBIMDKIT_EXPORT bool xcb_xim_ext_move(xcb_xim_t *im, xcb_xic_t ic, int16_t x,
179 int16_t y);
180
181XCBIMDKIT_DECL_END
182
183#endif // _XCB_IMDKIT_IMCLIENT_H_