libghostty
Loading...
Searching...
No Matches
event.h
Go to the documentation of this file.
1
6
7#ifndef GHOSTTY_VT_KEY_EVENT_H
8#define GHOSTTY_VT_KEY_EVENT_H
9
10#include <stdbool.h>
11#include <stddef.h>
12#include <stdint.h>
13#include <ghostty/vt/result.h>
15
25
31typedef enum {
39
56typedef uint16_t GhosttyMods;
57
59#define GHOSTTY_MODS_SHIFT (1 << 0)
61#define GHOSTTY_MODS_CTRL (1 << 1)
63#define GHOSTTY_MODS_ALT (1 << 2)
65#define GHOSTTY_MODS_SUPER (1 << 3)
67#define GHOSTTY_MODS_CAPS_LOCK (1 << 4)
69#define GHOSTTY_MODS_NUM_LOCK (1 << 5)
70
75#define GHOSTTY_MODS_SHIFT_SIDE (1 << 6)
80#define GHOSTTY_MODS_CTRL_SIDE (1 << 7)
85#define GHOSTTY_MODS_ALT_SIDE (1 << 8)
90#define GHOSTTY_MODS_SUPER_SIDE (1 << 9)
91
106typedef enum {
107 GHOSTTY_KEY_UNIDENTIFIED = 0,
108
109 // Writing System Keys (W3C § 3.1.1)
110 GHOSTTY_KEY_BACKQUOTE,
111 GHOSTTY_KEY_BACKSLASH,
112 GHOSTTY_KEY_BRACKET_LEFT,
113 GHOSTTY_KEY_BRACKET_RIGHT,
114 GHOSTTY_KEY_COMMA,
115 GHOSTTY_KEY_DIGIT_0,
116 GHOSTTY_KEY_DIGIT_1,
117 GHOSTTY_KEY_DIGIT_2,
118 GHOSTTY_KEY_DIGIT_3,
119 GHOSTTY_KEY_DIGIT_4,
120 GHOSTTY_KEY_DIGIT_5,
121 GHOSTTY_KEY_DIGIT_6,
122 GHOSTTY_KEY_DIGIT_7,
123 GHOSTTY_KEY_DIGIT_8,
124 GHOSTTY_KEY_DIGIT_9,
125 GHOSTTY_KEY_EQUAL,
126 GHOSTTY_KEY_INTL_BACKSLASH,
127 GHOSTTY_KEY_INTL_RO,
128 GHOSTTY_KEY_INTL_YEN,
129 GHOSTTY_KEY_A,
130 GHOSTTY_KEY_B,
131 GHOSTTY_KEY_C,
132 GHOSTTY_KEY_D,
133 GHOSTTY_KEY_E,
134 GHOSTTY_KEY_F,
135 GHOSTTY_KEY_G,
136 GHOSTTY_KEY_H,
137 GHOSTTY_KEY_I,
138 GHOSTTY_KEY_J,
139 GHOSTTY_KEY_K,
140 GHOSTTY_KEY_L,
141 GHOSTTY_KEY_M,
142 GHOSTTY_KEY_N,
143 GHOSTTY_KEY_O,
144 GHOSTTY_KEY_P,
145 GHOSTTY_KEY_Q,
146 GHOSTTY_KEY_R,
147 GHOSTTY_KEY_S,
148 GHOSTTY_KEY_T,
149 GHOSTTY_KEY_U,
150 GHOSTTY_KEY_V,
151 GHOSTTY_KEY_W,
152 GHOSTTY_KEY_X,
153 GHOSTTY_KEY_Y,
154 GHOSTTY_KEY_Z,
155 GHOSTTY_KEY_MINUS,
156 GHOSTTY_KEY_PERIOD,
157 GHOSTTY_KEY_QUOTE,
158 GHOSTTY_KEY_SEMICOLON,
159 GHOSTTY_KEY_SLASH,
160
161 // Functional Keys (W3C § 3.1.2)
162 GHOSTTY_KEY_ALT_LEFT,
163 GHOSTTY_KEY_ALT_RIGHT,
164 GHOSTTY_KEY_BACKSPACE,
165 GHOSTTY_KEY_CAPS_LOCK,
166 GHOSTTY_KEY_CONTEXT_MENU,
167 GHOSTTY_KEY_CONTROL_LEFT,
168 GHOSTTY_KEY_CONTROL_RIGHT,
169 GHOSTTY_KEY_ENTER,
170 GHOSTTY_KEY_META_LEFT,
171 GHOSTTY_KEY_META_RIGHT,
172 GHOSTTY_KEY_SHIFT_LEFT,
173 GHOSTTY_KEY_SHIFT_RIGHT,
174 GHOSTTY_KEY_SPACE,
175 GHOSTTY_KEY_TAB,
176 GHOSTTY_KEY_CONVERT,
177 GHOSTTY_KEY_KANA_MODE,
178 GHOSTTY_KEY_NON_CONVERT,
179
180 // Control Pad Section (W3C § 3.2)
181 GHOSTTY_KEY_DELETE,
182 GHOSTTY_KEY_END,
183 GHOSTTY_KEY_HELP,
184 GHOSTTY_KEY_HOME,
185 GHOSTTY_KEY_INSERT,
186 GHOSTTY_KEY_PAGE_DOWN,
187 GHOSTTY_KEY_PAGE_UP,
188
189 // Arrow Pad Section (W3C § 3.3)
190 GHOSTTY_KEY_ARROW_DOWN,
191 GHOSTTY_KEY_ARROW_LEFT,
192 GHOSTTY_KEY_ARROW_RIGHT,
193 GHOSTTY_KEY_ARROW_UP,
194
195 // Numpad Section (W3C § 3.4)
196 GHOSTTY_KEY_NUM_LOCK,
197 GHOSTTY_KEY_NUMPAD_0,
198 GHOSTTY_KEY_NUMPAD_1,
199 GHOSTTY_KEY_NUMPAD_2,
200 GHOSTTY_KEY_NUMPAD_3,
201 GHOSTTY_KEY_NUMPAD_4,
202 GHOSTTY_KEY_NUMPAD_5,
203 GHOSTTY_KEY_NUMPAD_6,
204 GHOSTTY_KEY_NUMPAD_7,
205 GHOSTTY_KEY_NUMPAD_8,
206 GHOSTTY_KEY_NUMPAD_9,
207 GHOSTTY_KEY_NUMPAD_ADD,
208 GHOSTTY_KEY_NUMPAD_BACKSPACE,
209 GHOSTTY_KEY_NUMPAD_CLEAR,
210 GHOSTTY_KEY_NUMPAD_CLEAR_ENTRY,
211 GHOSTTY_KEY_NUMPAD_COMMA,
212 GHOSTTY_KEY_NUMPAD_DECIMAL,
213 GHOSTTY_KEY_NUMPAD_DIVIDE,
214 GHOSTTY_KEY_NUMPAD_ENTER,
215 GHOSTTY_KEY_NUMPAD_EQUAL,
216 GHOSTTY_KEY_NUMPAD_MEMORY_ADD,
217 GHOSTTY_KEY_NUMPAD_MEMORY_CLEAR,
218 GHOSTTY_KEY_NUMPAD_MEMORY_RECALL,
219 GHOSTTY_KEY_NUMPAD_MEMORY_STORE,
220 GHOSTTY_KEY_NUMPAD_MEMORY_SUBTRACT,
221 GHOSTTY_KEY_NUMPAD_MULTIPLY,
222 GHOSTTY_KEY_NUMPAD_PAREN_LEFT,
223 GHOSTTY_KEY_NUMPAD_PAREN_RIGHT,
224 GHOSTTY_KEY_NUMPAD_SUBTRACT,
225 GHOSTTY_KEY_NUMPAD_SEPARATOR,
226 GHOSTTY_KEY_NUMPAD_UP,
227 GHOSTTY_KEY_NUMPAD_DOWN,
228 GHOSTTY_KEY_NUMPAD_RIGHT,
229 GHOSTTY_KEY_NUMPAD_LEFT,
230 GHOSTTY_KEY_NUMPAD_BEGIN,
231 GHOSTTY_KEY_NUMPAD_HOME,
232 GHOSTTY_KEY_NUMPAD_END,
233 GHOSTTY_KEY_NUMPAD_INSERT,
234 GHOSTTY_KEY_NUMPAD_DELETE,
235 GHOSTTY_KEY_NUMPAD_PAGE_UP,
236 GHOSTTY_KEY_NUMPAD_PAGE_DOWN,
237
238 // Function Section (W3C § 3.5)
239 GHOSTTY_KEY_ESCAPE,
240 GHOSTTY_KEY_F1,
241 GHOSTTY_KEY_F2,
242 GHOSTTY_KEY_F3,
243 GHOSTTY_KEY_F4,
244 GHOSTTY_KEY_F5,
245 GHOSTTY_KEY_F6,
246 GHOSTTY_KEY_F7,
247 GHOSTTY_KEY_F8,
248 GHOSTTY_KEY_F9,
249 GHOSTTY_KEY_F10,
250 GHOSTTY_KEY_F11,
251 GHOSTTY_KEY_F12,
252 GHOSTTY_KEY_F13,
253 GHOSTTY_KEY_F14,
254 GHOSTTY_KEY_F15,
255 GHOSTTY_KEY_F16,
256 GHOSTTY_KEY_F17,
257 GHOSTTY_KEY_F18,
258 GHOSTTY_KEY_F19,
259 GHOSTTY_KEY_F20,
260 GHOSTTY_KEY_F21,
261 GHOSTTY_KEY_F22,
262 GHOSTTY_KEY_F23,
263 GHOSTTY_KEY_F24,
264 GHOSTTY_KEY_F25,
265 GHOSTTY_KEY_FN,
266 GHOSTTY_KEY_FN_LOCK,
267 GHOSTTY_KEY_PRINT_SCREEN,
268 GHOSTTY_KEY_SCROLL_LOCK,
269 GHOSTTY_KEY_PAUSE,
270
271 // Media Keys (W3C § 3.6)
272 GHOSTTY_KEY_BROWSER_BACK,
273 GHOSTTY_KEY_BROWSER_FAVORITES,
274 GHOSTTY_KEY_BROWSER_FORWARD,
275 GHOSTTY_KEY_BROWSER_HOME,
276 GHOSTTY_KEY_BROWSER_REFRESH,
277 GHOSTTY_KEY_BROWSER_SEARCH,
278 GHOSTTY_KEY_BROWSER_STOP,
279 GHOSTTY_KEY_EJECT,
280 GHOSTTY_KEY_LAUNCH_APP_1,
281 GHOSTTY_KEY_LAUNCH_APP_2,
282 GHOSTTY_KEY_LAUNCH_MAIL,
283 GHOSTTY_KEY_MEDIA_PLAY_PAUSE,
284 GHOSTTY_KEY_MEDIA_SELECT,
285 GHOSTTY_KEY_MEDIA_STOP,
286 GHOSTTY_KEY_MEDIA_TRACK_NEXT,
287 GHOSTTY_KEY_MEDIA_TRACK_PREVIOUS,
288 GHOSTTY_KEY_POWER,
289 GHOSTTY_KEY_SLEEP,
290 GHOSTTY_KEY_AUDIO_VOLUME_DOWN,
291 GHOSTTY_KEY_AUDIO_VOLUME_MUTE,
292 GHOSTTY_KEY_AUDIO_VOLUME_UP,
293 GHOSTTY_KEY_WAKE_UP,
294
295 // Legacy, Non-standard, and Special Keys (W3C § 3.7)
296 GHOSTTY_KEY_COPY,
297 GHOSTTY_KEY_CUT,
298 GHOSTTY_KEY_PASTE,
299} GhosttyKey;
300
314
326
336
346
356
366
376
386
396
406
416
426
439void ghostty_key_event_set_utf8(GhosttyKeyEvent event, const char *utf8, size_t len);
440
452const char *ghostty_key_event_get_utf8(GhosttyKeyEvent event, size_t *len);
453
463
473
474#endif /* GHOSTTY_VT_KEY_EVENT_H */
const char * ghostty_key_event_get_utf8(GhosttyKeyEvent event, size_t *len)
GhosttyMods ghostty_key_event_get_consumed_mods(GhosttyKeyEvent event)
void ghostty_key_event_set_utf8(GhosttyKeyEvent event, const char *utf8, size_t len)
void ghostty_key_event_set_mods(GhosttyKeyEvent event, GhosttyMods mods)
uint32_t ghostty_key_event_get_unshifted_codepoint(GhosttyKeyEvent event)
void ghostty_key_event_set_consumed_mods(GhosttyKeyEvent event, GhosttyMods consumed_mods)
void ghostty_key_event_set_action(GhosttyKeyEvent event, GhosttyKeyAction action)
GhosttyMods ghostty_key_event_get_mods(GhosttyKeyEvent event)
GhosttyKeyAction ghostty_key_event_get_action(GhosttyKeyEvent event)
GhosttyKey ghostty_key_event_get_key(GhosttyKeyEvent event)
GhosttyResult ghostty_key_event_new(const GhosttyAllocator *allocator, GhosttyKeyEvent *event)
void ghostty_key_event_set_unshifted_codepoint(GhosttyKeyEvent event, uint32_t codepoint)
void ghostty_key_event_set_composing(GhosttyKeyEvent event, bool composing)
uint16_t GhosttyMods
Definition event.h:56
GhosttyKeyAction
Definition event.h:31
bool ghostty_key_event_get_composing(GhosttyKeyEvent event)
GhosttyKey
Definition event.h:106
struct GhosttyKeyEvent * GhosttyKeyEvent
Definition event.h:24
void ghostty_key_event_free(GhosttyKeyEvent event)
void ghostty_key_event_set_key(GhosttyKeyEvent event, GhosttyKey key)
@ GHOSTTY_KEY_ACTION_REPEAT
Definition event.h:37
@ GHOSTTY_KEY_ACTION_PRESS
Definition event.h:35
@ GHOSTTY_KEY_ACTION_RELEASE
Definition event.h:33
GhosttyResult
Definition result.h:13