libghostty-vt 0.0.0
Loading...
Searching...
No Matches
key/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/types.h>
15
24typedef struct GhosttyKeyEventImpl *GhosttyKeyEvent;
25
31typedef enum GHOSTTY_ENUM_TYPED {
38 GHOSTTY_KEY_ACTION_MAX_VALUE = GHOSTTY_ENUM_MAX_VALUE,
40
57typedef uint16_t GhosttyMods;
58
60#define GHOSTTY_MODS_SHIFT (1 << 0)
62#define GHOSTTY_MODS_CTRL (1 << 1)
64#define GHOSTTY_MODS_ALT (1 << 2)
66#define GHOSTTY_MODS_SUPER (1 << 3)
68#define GHOSTTY_MODS_CAPS_LOCK (1 << 4)
70#define GHOSTTY_MODS_NUM_LOCK (1 << 5)
71
78#define GHOSTTY_MODS_SHIFT_SIDE (1 << 6)
85#define GHOSTTY_MODS_CTRL_SIDE (1 << 7)
92#define GHOSTTY_MODS_ALT_SIDE (1 << 8)
99#define GHOSTTY_MODS_SUPER_SIDE (1 << 9)
100
115typedef enum GHOSTTY_ENUM_TYPED {
116 GHOSTTY_KEY_UNIDENTIFIED = 0,
117
118 // Writing System Keys (W3C § 3.1.1)
119 GHOSTTY_KEY_BACKQUOTE = 1,
120 GHOSTTY_KEY_BACKSLASH = 2,
121 GHOSTTY_KEY_BRACKET_LEFT = 3,
122 GHOSTTY_KEY_BRACKET_RIGHT = 4,
123 GHOSTTY_KEY_COMMA = 5,
124 GHOSTTY_KEY_DIGIT_0 = 6,
125 GHOSTTY_KEY_DIGIT_1 = 7,
126 GHOSTTY_KEY_DIGIT_2 = 8,
127 GHOSTTY_KEY_DIGIT_3 = 9,
128 GHOSTTY_KEY_DIGIT_4 = 10,
129 GHOSTTY_KEY_DIGIT_5 = 11,
130 GHOSTTY_KEY_DIGIT_6 = 12,
131 GHOSTTY_KEY_DIGIT_7 = 13,
132 GHOSTTY_KEY_DIGIT_8 = 14,
133 GHOSTTY_KEY_DIGIT_9 = 15,
134 GHOSTTY_KEY_EQUAL = 16,
135 GHOSTTY_KEY_INTL_BACKSLASH = 17,
136 GHOSTTY_KEY_INTL_RO = 18,
137 GHOSTTY_KEY_INTL_YEN = 19,
138 GHOSTTY_KEY_A = 20,
139 GHOSTTY_KEY_B = 21,
140 GHOSTTY_KEY_C = 22,
141 GHOSTTY_KEY_D = 23,
142 GHOSTTY_KEY_E = 24,
143 GHOSTTY_KEY_F = 25,
144 GHOSTTY_KEY_G = 26,
145 GHOSTTY_KEY_H = 27,
146 GHOSTTY_KEY_I = 28,
147 GHOSTTY_KEY_J = 29,
148 GHOSTTY_KEY_K = 30,
149 GHOSTTY_KEY_L = 31,
150 GHOSTTY_KEY_M = 32,
151 GHOSTTY_KEY_N = 33,
152 GHOSTTY_KEY_O = 34,
153 GHOSTTY_KEY_P = 35,
154 GHOSTTY_KEY_Q = 36,
155 GHOSTTY_KEY_R = 37,
156 GHOSTTY_KEY_S = 38,
157 GHOSTTY_KEY_T = 39,
158 GHOSTTY_KEY_U = 40,
159 GHOSTTY_KEY_V = 41,
160 GHOSTTY_KEY_W = 42,
161 GHOSTTY_KEY_X = 43,
162 GHOSTTY_KEY_Y = 44,
163 GHOSTTY_KEY_Z = 45,
164 GHOSTTY_KEY_MINUS = 46,
165 GHOSTTY_KEY_PERIOD = 47,
166 GHOSTTY_KEY_QUOTE = 48,
167 GHOSTTY_KEY_SEMICOLON = 49,
168 GHOSTTY_KEY_SLASH = 50,
169
170 // Functional Keys (W3C § 3.1.2)
171 GHOSTTY_KEY_ALT_LEFT = 51,
172 GHOSTTY_KEY_ALT_RIGHT = 52,
173 GHOSTTY_KEY_BACKSPACE = 53,
174 GHOSTTY_KEY_CAPS_LOCK = 54,
175 GHOSTTY_KEY_CONTEXT_MENU = 55,
176 GHOSTTY_KEY_CONTROL_LEFT = 56,
177 GHOSTTY_KEY_CONTROL_RIGHT = 57,
178 GHOSTTY_KEY_ENTER = 58,
179 GHOSTTY_KEY_META_LEFT = 59,
180 GHOSTTY_KEY_META_RIGHT = 60,
181 GHOSTTY_KEY_SHIFT_LEFT = 61,
182 GHOSTTY_KEY_SHIFT_RIGHT = 62,
183 GHOSTTY_KEY_SPACE = 63,
184 GHOSTTY_KEY_TAB = 64,
185 GHOSTTY_KEY_CONVERT = 65,
186 GHOSTTY_KEY_KANA_MODE = 66,
187 GHOSTTY_KEY_NON_CONVERT = 67,
188
189 // Control Pad Section (W3C § 3.2)
190 GHOSTTY_KEY_DELETE = 68,
191 GHOSTTY_KEY_END = 69,
192 GHOSTTY_KEY_HELP = 70,
193 GHOSTTY_KEY_HOME = 71,
194 GHOSTTY_KEY_INSERT = 72,
195 GHOSTTY_KEY_PAGE_DOWN = 73,
196 GHOSTTY_KEY_PAGE_UP = 74,
197
198 // Arrow Pad Section (W3C § 3.3)
199 GHOSTTY_KEY_ARROW_DOWN = 75,
200 GHOSTTY_KEY_ARROW_LEFT = 76,
201 GHOSTTY_KEY_ARROW_RIGHT = 77,
202 GHOSTTY_KEY_ARROW_UP = 78,
203
204 // Numpad Section (W3C § 3.4)
205 GHOSTTY_KEY_NUM_LOCK = 79,
206 GHOSTTY_KEY_NUMPAD_0 = 80,
207 GHOSTTY_KEY_NUMPAD_1 = 81,
208 GHOSTTY_KEY_NUMPAD_2 = 82,
209 GHOSTTY_KEY_NUMPAD_3 = 83,
210 GHOSTTY_KEY_NUMPAD_4 = 84,
211 GHOSTTY_KEY_NUMPAD_5 = 85,
212 GHOSTTY_KEY_NUMPAD_6 = 86,
213 GHOSTTY_KEY_NUMPAD_7 = 87,
214 GHOSTTY_KEY_NUMPAD_8 = 88,
215 GHOSTTY_KEY_NUMPAD_9 = 89,
216 GHOSTTY_KEY_NUMPAD_ADD = 90,
217 GHOSTTY_KEY_NUMPAD_BACKSPACE = 91,
218 GHOSTTY_KEY_NUMPAD_CLEAR = 92,
219 GHOSTTY_KEY_NUMPAD_CLEAR_ENTRY = 93,
220 GHOSTTY_KEY_NUMPAD_COMMA = 94,
221 GHOSTTY_KEY_NUMPAD_DECIMAL = 95,
222 GHOSTTY_KEY_NUMPAD_DIVIDE = 96,
223 GHOSTTY_KEY_NUMPAD_ENTER = 97,
224 GHOSTTY_KEY_NUMPAD_EQUAL = 98,
225 GHOSTTY_KEY_NUMPAD_MEMORY_ADD = 99,
226 GHOSTTY_KEY_NUMPAD_MEMORY_CLEAR = 100,
227 GHOSTTY_KEY_NUMPAD_MEMORY_RECALL = 101,
228 GHOSTTY_KEY_NUMPAD_MEMORY_STORE = 102,
229 GHOSTTY_KEY_NUMPAD_MEMORY_SUBTRACT = 103,
230 GHOSTTY_KEY_NUMPAD_MULTIPLY = 104,
231 GHOSTTY_KEY_NUMPAD_PAREN_LEFT = 105,
232 GHOSTTY_KEY_NUMPAD_PAREN_RIGHT = 106,
233 GHOSTTY_KEY_NUMPAD_SUBTRACT = 107,
234 GHOSTTY_KEY_NUMPAD_SEPARATOR = 108,
235 GHOSTTY_KEY_NUMPAD_UP = 109,
236 GHOSTTY_KEY_NUMPAD_DOWN = 110,
237 GHOSTTY_KEY_NUMPAD_RIGHT = 111,
238 GHOSTTY_KEY_NUMPAD_LEFT = 112,
239 GHOSTTY_KEY_NUMPAD_BEGIN = 113,
240 GHOSTTY_KEY_NUMPAD_HOME = 114,
241 GHOSTTY_KEY_NUMPAD_END = 115,
242 GHOSTTY_KEY_NUMPAD_INSERT = 116,
243 GHOSTTY_KEY_NUMPAD_DELETE = 117,
244 GHOSTTY_KEY_NUMPAD_PAGE_UP = 118,
245 GHOSTTY_KEY_NUMPAD_PAGE_DOWN = 119,
246
247 // Function Section (W3C § 3.5)
248 GHOSTTY_KEY_ESCAPE = 120,
249 GHOSTTY_KEY_F1 = 121,
250 GHOSTTY_KEY_F2 = 122,
251 GHOSTTY_KEY_F3 = 123,
252 GHOSTTY_KEY_F4 = 124,
253 GHOSTTY_KEY_F5 = 125,
254 GHOSTTY_KEY_F6 = 126,
255 GHOSTTY_KEY_F7 = 127,
256 GHOSTTY_KEY_F8 = 128,
257 GHOSTTY_KEY_F9 = 129,
258 GHOSTTY_KEY_F10 = 130,
259 GHOSTTY_KEY_F11 = 131,
260 GHOSTTY_KEY_F12 = 132,
261 GHOSTTY_KEY_F13 = 133,
262 GHOSTTY_KEY_F14 = 134,
263 GHOSTTY_KEY_F15 = 135,
264 GHOSTTY_KEY_F16 = 136,
265 GHOSTTY_KEY_F17 = 137,
266 GHOSTTY_KEY_F18 = 138,
267 GHOSTTY_KEY_F19 = 139,
268 GHOSTTY_KEY_F20 = 140,
269 GHOSTTY_KEY_F21 = 141,
270 GHOSTTY_KEY_F22 = 142,
271 GHOSTTY_KEY_F23 = 143,
272 GHOSTTY_KEY_F24 = 144,
273 GHOSTTY_KEY_F25 = 145,
274 GHOSTTY_KEY_FN = 146,
275 GHOSTTY_KEY_FN_LOCK = 147,
276 GHOSTTY_KEY_PRINT_SCREEN = 148,
277 GHOSTTY_KEY_SCROLL_LOCK = 149,
278 GHOSTTY_KEY_PAUSE = 150,
279
280 // Media Keys (W3C § 3.6)
281 GHOSTTY_KEY_BROWSER_BACK = 151,
282 GHOSTTY_KEY_BROWSER_FAVORITES = 152,
283 GHOSTTY_KEY_BROWSER_FORWARD = 153,
284 GHOSTTY_KEY_BROWSER_HOME = 154,
285 GHOSTTY_KEY_BROWSER_REFRESH = 155,
286 GHOSTTY_KEY_BROWSER_SEARCH = 156,
287 GHOSTTY_KEY_BROWSER_STOP = 157,
288 GHOSTTY_KEY_EJECT = 158,
289 GHOSTTY_KEY_LAUNCH_APP_1 = 159,
290 GHOSTTY_KEY_LAUNCH_APP_2 = 160,
291 GHOSTTY_KEY_LAUNCH_MAIL = 161,
292 GHOSTTY_KEY_MEDIA_PLAY_PAUSE = 162,
293 GHOSTTY_KEY_MEDIA_SELECT = 163,
294 GHOSTTY_KEY_MEDIA_STOP = 164,
295 GHOSTTY_KEY_MEDIA_TRACK_NEXT = 165,
296 GHOSTTY_KEY_MEDIA_TRACK_PREVIOUS = 166,
297 GHOSTTY_KEY_POWER = 167,
298 GHOSTTY_KEY_SLEEP = 168,
299 GHOSTTY_KEY_AUDIO_VOLUME_DOWN = 169,
300 GHOSTTY_KEY_AUDIO_VOLUME_MUTE = 170,
301 GHOSTTY_KEY_AUDIO_VOLUME_UP = 171,
302 GHOSTTY_KEY_WAKE_UP = 172,
303
304 // Legacy, Non-standard, and Special Keys (W3C § 3.7)
305 GHOSTTY_KEY_COPY = 173,
306 GHOSTTY_KEY_CUT = 174,
307 GHOSTTY_KEY_PASTE = 175,
308 GHOSTTY_KEY_MAX_VALUE = GHOSTTY_ENUM_MAX_VALUE,
309} GhosttyKey;
310
324
336
349
359
372
383
395
405
417
428
440
451
490
513
525
535
536#endif /* GHOSTTY_VT_KEY_EVENT_H */
GhosttyResult
Definition types.h:143
#define GHOSTTY_ENUM_TYPED
Definition types.h:124
GHOSTTY_API GhosttyResult ghostty_key_event_new(const GhosttyAllocator *allocator, GhosttyKeyEvent *event)
GHOSTTY_API bool ghostty_key_event_get_composing(GhosttyKeyEvent event)
GHOSTTY_API GhosttyResult ghostty_key_event_set_key(GhosttyKeyEvent event, GhosttyKey key)
GHOSTTY_API uint32_t ghostty_key_event_get_unshifted_codepoint(GhosttyKeyEvent event)
GHOSTTY_API GhosttyResult ghostty_key_event_set_action(GhosttyKeyEvent event, GhosttyKeyAction action)
GHOSTTY_API GhosttyResult ghostty_key_event_set_consumed_mods(GhosttyKeyEvent event, GhosttyMods consumed_mods)
GHOSTTY_API GhosttyString ghostty_key_event_get_utf8(GhosttyKeyEvent event)
struct GhosttyKeyEventImpl * GhosttyKeyEvent
Definition key/event.h:24
GHOSTTY_API GhosttyResult ghostty_key_event_set_unshifted_codepoint(GhosttyKeyEvent event, uint32_t codepoint)
GHOSTTY_API GhosttyResult ghostty_key_event_set_utf8(GhosttyKeyEvent event, GhosttyString utf8)
uint16_t GhosttyMods
Definition key/event.h:57
GHOSTTY_API GhosttyMods ghostty_key_event_get_consumed_mods(GhosttyKeyEvent event)
GHOSTTY_API GhosttyResult ghostty_key_event_set_mods(GhosttyKeyEvent event, GhosttyMods mods)
GhosttyKeyAction
Definition key/event.h:31
GHOSTTY_API GhosttyKeyAction ghostty_key_event_get_action(GhosttyKeyEvent event)
GHOSTTY_API GhosttyMods ghostty_key_event_get_mods(GhosttyKeyEvent event)
GHOSTTY_API GhosttyResult ghostty_key_event_set_composing(GhosttyKeyEvent event, bool composing)
GhosttyKey
Definition key/event.h:115
GHOSTTY_API GhosttyKey ghostty_key_event_get_key(GhosttyKeyEvent event)
GHOSTTY_API void ghostty_key_event_free(GhosttyKeyEvent event)
@ GHOSTTY_KEY_ACTION_REPEAT
Definition key/event.h:37
@ GHOSTTY_KEY_ACTION_PRESS
Definition key/event.h:35
@ GHOSTTY_KEY_ACTION_RELEASE
Definition key/event.h:33