aboutsummaryrefslogtreecommitdiffstats
path: root/src/sdl_events.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/sdl_events.erl')
-rw-r--r--src/sdl_events.erl32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/sdl_events.erl b/src/sdl_events.erl
index a4710a5..37162e5 100644
--- a/src/sdl_events.erl
+++ b/src/sdl_events.erl
@@ -16,6 +16,38 @@
-export([poll/0]).
+-type window_event_type() :: shown | hidden | exposed | moved | resized
+ | size_changed | minimized | maximized | restored | enter | leave
+ | focus_gained | focus_lost | close.
+-type window_event() :: #{type=>window, timestamp=>non_neg_integer(),
+ window_id=>non_neg_integer(), event=>window_event_type(),
+ data=>{integer(), integer()}}.
+
+-type keymod() :: left_shift | right_shift | left_ctrl | right_ctrl
+ | left_alt | right_alt | left_gui | right_gui | num | caps | mode.
+-type key_event() :: #{type=>key_down | key_up, timestamp=>non_neg_integer(),
+ window_id=>non_neg_integer(), repeat=>boolean(), scancode=>non_neg_integer(),
+ sym=>non_neg_integer(), mod=>[keymod()]}.
+
+-type mouse_button() :: left | middle | right | x1 | x2 | non_neg_integer().
+-type mouse_button_event() :: #{type=>mouse_down | mouse_up, timestamp=>non_neg_integer(),
+ window_id=>non_neg_integer(), which=>touch | non_neg_integer(),
+ button=>mouse_button(), x=>integer(), y=>integer()}.
+
+-type mouse_motion_event() :: #{type=>mouse_motion, timestamp=>non_neg_integer(),
+ window_id=>non_neg_integer(), which=>touch | non_neg_integer(),
+ x=>integer(), y=>integer(), xrel=>integer(), yrel=>integer()}.
+
+-type mouse_wheel_event() :: #{type=>mouse_wheel, timestamp=>non_neg_integer(),
+ window_id=>non_neg_integer(), which=>touch | non_neg_integer(),
+ x=>integer(), y=>integer()}.
+
+-type quit_event() :: #{type=>quit, timestamp=>non_neg_integer()}.
+
+-type event() :: window_event() | key_event() | mouse_button_event()
+ | mouse_motion_event() | mouse_wheel_event() | quit_event().
+
+-spec poll() -> event() | false.
poll() ->
esdl2:poll_event(),
receive {'_nif_thread_ret_', Ret} -> Ret end.