base
This commit is contained in:
+16
-2
@@ -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 absinthe_keyboard *keyboard = wl_container_of(listener, keyboard, key);
|
||||||
struct wlr_keyboard_key_event *event = data;
|
struct wlr_keyboard_key_event *event = data;
|
||||||
|
|
||||||
wlr_seat_set_keyboard(keyboard->server->seat, keyboard->wlr_keyboard);
|
uint32_t keycode = event->keycode + 8;
|
||||||
wlr_seat_keyboard_notify_key(keyboard->server->seat, event->time_msec, event->keycode, event->state);
|
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)
|
void keyboard_handle_destroy(struct wl_listener *listener, void *data)
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
#include <wlr/util/log.h>
|
#include <wlr/util/log.h>
|
||||||
#include <wlr/types/wlr_subcompositor.h>
|
#include <wlr/types/wlr_subcompositor.h>
|
||||||
#include <wlr/types/wlr_data_device.h>
|
#include <wlr/types/wlr_data_device.h>
|
||||||
#include <wlr/types/wlr_screencopy_v1.h>
|
|
||||||
#include <wlr/types/wlr_xcursor_manager.h>
|
#include <wlr/types/wlr_xcursor_manager.h>
|
||||||
|
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
@@ -44,7 +43,6 @@ int main(int argc, char **argv)
|
|||||||
wlr_compositor_create(server.display, 5, server.renderer);
|
wlr_compositor_create(server.display, 5, server.renderer);
|
||||||
wlr_subcompositor_create(server.display);
|
wlr_subcompositor_create(server.display);
|
||||||
wlr_data_device_manager_create(server.display);
|
wlr_data_device_manager_create(server.display);
|
||||||
wlr_screencopy_manager_v1_create(server.display);
|
|
||||||
|
|
||||||
server.output_layout = wlr_output_layout_create(server.display);
|
server.output_layout = wlr_output_layout_create(server.display);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user