diff options
author | Clément Gallet <clement.gallet@ens-lyon.org> | 2024-02-21 22:19:46 +0100 |
---|---|---|
committer | Clément Gallet <clement.gallet@ens-lyon.org> | 2024-02-21 22:19:46 +0100 |
commit | b7f505a5b6be0130225892fe8938dd269b01df91 (patch) | |
tree | 707b6125a3b45be88e550e195af664411184c94d | |
parent | 105eaa63a1f71b5164700d0573ba8c8eccad394b (diff) |
Fix an issue when listening mouse press from both libtas and game
-rw-r--r-- | src/program/GameEventsXcb.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/program/GameEventsXcb.cpp b/src/program/GameEventsXcb.cpp index 37541d77..af287325 100644 --- a/src/program/GameEventsXcb.cpp +++ b/src/program/GameEventsXcb.cpp @@ -63,15 +63,16 @@ void GameEventsXcb::registerGameWindow(uint32_t gameWindow) std::cerr << "error in xcb_change_window_attributes: " << error->error_code << std::endl; } + xcb_screen_t *screen = xcb_setup_roots_iterator(xcb_get_setup(context->conn)).data; struct { xcb_input_event_mask_t iem; int xiem; } se_mask; se_mask.iem.deviceid = XCB_INPUT_DEVICE_ALL_MASTER; se_mask.iem.mask_len = 1; - - se_mask.xiem = XCB_INPUT_XI_EVENT_MASK_BUTTON_PRESS; - xcb_input_xi_select_events(context->conn, context->game_window, 1, &se_mask.iem); + + se_mask.xiem = XCB_INPUT_XI_EVENT_MASK_RAW_BUTTON_PRESS; + xcb_input_xi_select_events(context->conn, screen->root, 1, &se_mask.iem); /* Also get parent window of game window for focus */ xcb_query_tree_cookie_t qt_cookie = xcb_query_tree(context->conn, context->game_window); @@ -209,8 +210,8 @@ GameEventsXcb::EventType GameEventsXcb::nextEvent(struct HotKey &hk) return EVENT_TYPE_EXPOSE; case XCB_GE_GENERIC: { xcb_ge_generic_event_t *gev = reinterpret_cast<xcb_ge_generic_event_t *>(event.get()); - if (gev->event_type == XCB_INPUT_BUTTON_PRESS) { - xcb_input_button_press_event_t *mev = reinterpret_cast<xcb_input_button_press_event_t*>(gev); + if (gev->event_type == XCB_INPUT_RAW_BUTTON_PRESS) { + xcb_input_raw_button_press_event_t *mev = reinterpret_cast<xcb_input_raw_button_press_event_t*>(gev); if (mev->detail == XCB_BUTTON_INDEX_4) return EVENT_TYPE_WHEEL_UP; if (mev->detail == XCB_BUTTON_INDEX_5) |