This commit is contained in:
2026-01-02 23:15:50 +07:00
parent a12293fd3a
commit a36e205e08
2 changed files with 16 additions and 4 deletions
+16 -2
View File
@@ -30,8 +30,22 @@ void keyboard_handle_key(struct wl_listener *listener, void *data)
struct absinthe_keyboard *keyboard = wl_container_of(listener, keyboard, key);
struct wlr_keyboard_key_event *event = data;
wlr_seat_set_keyboard(keyboard->server->seat, keyboard->wlr_keyboard);
wlr_seat_keyboard_notify_key(keyboard->server->seat, event->time_msec, event->keycode, event->state);
uint32_t keycode = event->keycode + 8;
uint32_t modifiers = wlr_keyboard_get_modifiers(keyboard->wlr_keyboard);
const xkb_keysym_t *syms;
int nsyms = xkb_state_key_get_syms(keyboard->wlr_keyboard->xkb_state, keycode, &syms);
bool handled = false;
if ((modifiers & WLR_MODIFIER_ALT) && (event->state == WL_KEYBOARD_KEY_STATE_PRESSED)) {
for (int i = 0; i < nsyms; ++i) {
handled = keyboard_handle_keybind(keyboard->server, syms[i]);
}
}
if (!handled) {
wlr_seat_set_keyboard(keyboard->server->seat, keyboard->wlr_keyboard);
wlr_seat_keyboard_notify_key(keyboard->server->seat, event->time_msec, event->keycode, event->state);
}
}
void keyboard_handle_destroy(struct wl_listener *listener, void *data)