PatchworkOS
Loading...
Searching...
No Matches
event.h
Go to the documentation of this file.
1#ifndef PATCHWORK_EVENT_H
2#define PATCHWORK_EVENT_H 1
3
4#include "element_id.h"
5#include "point.h"
6#include "rect.h"
7#include "surface.h"
8
9#include <assert.h>
10#include <stdint.h>
11#include <sys/io.h>
12#include <sys/kbd.h>
13#include <sys/mouse.h>
14
15#if defined(__cplusplus)
16extern "C"
17{
18#endif
19
33typedef enum
34{
36 REPORT_RECT = 1 << 0,
39 REPORT_NAME = 1 << 3,
41
54
73
81
82#define EVENT_SCREEN_INFO 0
83#define EVENT_SURFACE_NEW 1
84#define EVENT_KBD 2
85#define EVENT_MOUSE 3
86#define EVENT_TIMER 4
87#define EVENT_CURSOR_ENTER 5
88#define EVENT_CURSOR_LEAVE 6
89#define EVENT_REPORT 7
90
91#define GEVENT_ATTACH 128
92#define GEVENT_DETACH 129
93#define GEVENT_REPORT 130
94#define GEVENT_KBD 131
95#define GEVENT_MOUSE 132
96
97#define DWM_MAX_EVENT 256
98
99#define LEVENT_INIT 256
100#define LEVENT_DEINIT 257
101#define LEVENT_REDRAW 258
102#define LEVENT_ACTION 259
103#define LEVENT_QUIT 260
104#define LEVENT_FORCE_ACTION 261
105
106#define LEVENT_INTERNAL_WAKE 512
107
108#define UEVENT_START 1024
109#define UEVENT_END 65535
110
121
127typedef struct
128{
131
144
159
166
173
184
190typedef struct
191{
194
200typedef struct
201{
204
211
218
226
237
248
259
263#define EVENT_MAX_DATA 128
264
293
294#ifdef static_assert
295static_assert(sizeof(event_t) == 144, "invalid event_t size");
296#endif
297
300#if defined(__cplusplus)
301}
302#endif
303
304#endif
uint64_t element_id_t
Element identifier type.
Definition element_id.h:23
event_mouse_t event_cursor_leave_t
Cursor Leave event.
Definition event.h:172
event_report_t gevent_report_t
Global Report event.
Definition event.h:210
report_flags_t
Report flags.
Definition event.h:34
#define EVENT_MAX_DATA
Maximum size of event data.
Definition event.h:263
uint64_t event_bitmask_t[4]
Event bitmask type.
Definition event.h:80
action_type_t
Action type.
Definition event.h:48
uint16_t event_type_t
Event type.
Definition event.h:72
event_mouse_t gevent_mouse_t
Global Mouse event.
Definition event.h:225
event_mouse_t event_cursor_enter_t
Cursor Enter event.
Definition event.h:165
event_kbd_t gevent_kbd_t
Global Keyboard event.
Definition event.h:217
@ REPORT_NONE
Definition event.h:35
@ REPORT_IS_FOCUSED
Definition event.h:38
@ REPORT_NAME
Definition event.h:39
@ REPORT_IS_VISIBLE
Definition event.h:37
@ REPORT_RECT
Definition event.h:36
@ ACTION_PRESS
Definition event.h:51
@ ACTION_RELEASE
Definition event.h:50
@ ACTION_CANCEL
Definition event.h:52
@ ACTION_NONE
Definition event.h:49
uint64_t surface_id_t
Definition surface.h:53
keycode_t
Keyboard keycode type.
Definition kbd.h:27
kbd_mods_t
Keyboard modifiers type.
Definition kbd.h:297
kbd_event_type_t
Keyboard event type.
Definition kbd.h:286
mouse_buttons_t
Mouse buttons enum.
Definition mouse.h:31
__UINT64_TYPE__ uint64_t
Definition stdint.h:17
__UINT8_TYPE__ uint8_t
Definition stdint.h:11
__UINT16_TYPE__ uint16_t
Definition stdint.h:13
Keyboard event.
Definition event.h:138
kbd_mods_t mods
Definition event.h:140
kbd_event_type_t type
Definition event.h:139
keycode_t code
Definition event.h:141
char ascii
Definition event.h:142
Mouse event.
Definition event.h:151
point_t screenPos
Definition event.h:156
point_t delta
Definition event.h:157
mouse_buttons_t pressed
Definition event.h:153
mouse_buttons_t held
Definition event.h:152
point_t pos
Definition event.h:155
mouse_buttons_t released
Definition event.h:154
Report event.
Definition event.h:180
surface_info_t info
Definition event.h:182
report_flags_t flags
Definition event.h:181
Screen Info event.
Definition event.h:117
uint64_t width
Definition event.h:118
uint64_t height
Definition event.h:119
Surface New event.
Definition event.h:128
key_t shmemKey
Key that can be claim()ed to access the surface's shared memory.
Definition event.h:129
Event structure.
Definition event.h:271
surface_id_t target
Definition event.h:273
event_kbd_t kbd
Definition event.h:277
event_report_t report
Definition event.h:281
levent_force_action_t lForceAction
Definition event.h:289
event_surface_new_t surfaceNew
Definition event.h:276
event_cursor_leave_t cursorLeave
Definition event.h:280
gevent_detach_t globalDetach
Definition event.h:283
event_cursor_enter_t cursorEnter
Definition event.h:279
gevent_report_t globalReport
Definition event.h:284
event_type_t type
Definition event.h:272
levent_action_t lAction
Definition event.h:288
event_mouse_t mouse
Definition event.h:278
gevent_kbd_t globalKbd
Definition event.h:285
gevent_attach_t globalAttach
Definition event.h:282
gevent_mouse_t globalMouse
Definition event.h:286
levent_redraw_t lRedraw
Definition event.h:287
event_screen_info_t screenInfo
Definition event.h:275
Global Attach event.
Definition event.h:191
surface_info_t info
Definition event.h:192
Global Detach event.
Definition event.h:201
surface_info_t info
Definition event.h:202
Key type.
Definition io.h:503
Library Action event.
Definition event.h:244
action_type_t type
Definition event.h:246
element_id_t source
Definition event.h:245
Library Force Action event.
Definition event.h:255
element_id_t dest
Definition event.h:256
action_type_t action
Definition event.h:257
Library Redraw event.
Definition event.h:233
element_id_t id
Definition event.h:234
bool shouldPropagate
Whether the redraw event should be propagated to child elements.
Definition event.h:235