diff --git a/repos/os/include/genode_c_api/event.h b/repos/os/include/genode_c_api/event.h index 5c74e7d0ee..784ff92885 100644 --- a/repos/os/include/genode_c_api/event.h +++ b/repos/os/include/genode_c_api/event.h @@ -73,6 +73,8 @@ struct genode_event_submit void (*rel_motion) (struct genode_event_submit *, int x, int y); + void (*abs_motion) (struct genode_event_submit *, int x, int y); + void (*touch) (struct genode_event_submit *, struct genode_event_touch_args const *); diff --git a/repos/os/src/lib/genode_c_api/event.cc b/repos/os/src/lib/genode_c_api/event.cc index 33928b9749..099e7606fe 100644 --- a/repos/os/src/lib/genode_c_api/event.cc +++ b/repos/os/src/lib/genode_c_api/event.cc @@ -102,6 +102,12 @@ namespace { batch.submit(Input::Relative_motion { x, y }); }); } + static void _abs_motion(struct genode_event_submit *myself, int x, int y) + { + _with_batch(myself, [&] (Event::Session_client::Batch &batch) { + batch.submit(Input::Absolute_motion { x, y }); }); + } + static void _touch(struct genode_event_submit *myself, struct genode_event_touch_args const *args) { @@ -133,6 +139,7 @@ namespace { press = _press; release = _release; rel_motion = _rel_motion; + abs_motion = _abs_motion; touch = _touch; touch_release = _touch_release; wheel = _wheel;