aboutsummaryrefslogtreecommitdiffstats
path: root/src/window.cpp
diff options
context:
space:
mode:
authorladevieq <ladevie.quentin@gmail.com>2021-01-21 21:58:02 +0100
committerladevieq <ladevie.quentin@gmail.com>2021-01-21 21:58:02 +0100
commitb48567d87fd0eac152e387d633ae782aea89cb9e (patch)
treea8ee8c83907f1273d2d24a3c0bfc7a9065cabee8 /src/window.cpp
parent142a370cba076a7cf593c7a48b5414e992311a20 (diff)
Fix kbd + camera movements
Diffstat (limited to 'src/window.cpp')
-rw-r--r--src/window.cpp19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/window.cpp b/src/window.cpp
index 8a68612..34427ce 100644
--- a/src/window.cpp
+++ b/src/window.cpp
@@ -58,6 +58,16 @@ window::window(uint32_t width, uint32_t height)
xcb_map_window(connection, win);
xcb_flush(connection);
+ uint8_t first_xkb_event;
+ auto ret = xkb_x11_setup_xkb_extension(connection,
+ XKB_X11_MIN_MAJOR_XKB_VERSION,
+ XKB_X11_MIN_MINOR_XKB_VERSION,
+ XKB_X11_SETUP_XKB_EXTENSION_NO_FLAGS,
+ NULL, NULL, NULL, NULL);
+ if (!ret) {
+ std::cerr << "Couldn't setup XKB extension" << std::endl;
+ }
+
xkb_ctx = xkb_context_new(XKB_CONTEXT_NO_FLAGS);
if (!xkb_ctx) {
@@ -105,6 +115,7 @@ void window::poll_events() {
break;
}
+ case XCB_KEY_RELEASE:
case XCB_KEY_PRESS: {
auto key_press_event = (xcb_key_press_event_t*)event;
auto keysym = xkb_state_key_get_one_sym(keyboard_state, key_press_event->detail);
@@ -117,14 +128,6 @@ void window::poll_events() {
events.push_back(new_event);
break;
}
- case XCB_KEY_RELEASE: {
- auto key_press_event = (xcb_key_release_event_t*)event;
- events.push_back({
- .keycode = key_press_event->detail,
- .type = EVENT_TYPES::KEY_RELEASE
- });
- break;
- }
case XCB_CLIENT_MESSAGE: {
auto client_message_event = (xcb_client_message_event_t*)event;
if (client_message_event->data.data32[0] == win_delete_atom) {