diff options
Diffstat (limited to 'wlock.c')
| -rw-r--r-- | wlock.c | 21 |
1 files changed, 15 insertions, 6 deletions
@@ -85,6 +85,7 @@ static void keyboard_keymap(void *data, struct wl_keyboard *keyboard, uint32_t f static void keyboard_key(void *data, struct wl_keyboard *keyboard, uint32_t serial, uint32_t time, uint32_t key, uint32_t state); static void keyboard_repeat_info(void *data, struct wl_keyboard *keyboard, int32_t rate, int32_t delay); static void handle_keyboard_event(); +static void keyboard_modifiers(void *data, struct wl_keyboard *keybaord, uint32_t serial, uint32_t depressed, uint32_t latched, uint32_t locked, uint32_t group); static void register_monitor(Monitor *mon); static void dummy() {} @@ -104,7 +105,7 @@ static const struct wl_keyboard_listener keyboard_listener = { .enter = dummy, .key = keyboard_key, .leave = dummy, - .modifiers = dummy, + .modifiers = keyboard_modifiers, .repeat_info = keyboard_repeat_info, }; @@ -188,11 +189,11 @@ add_monitor() void remove_monitor(Monitor *mon) { - wl_surface_destroy(mon->surface); - ext_session_lock_surface_v1_destroy(mon->lock_surface); - wl_output_destroy(mon->output); - free_drw(mon->canvas); - free(mon); + //wl_surface_destroy(mon->surface); + //ext_session_lock_surface_v1_destroy(mon->lock_surface); + //wl_output_destroy(mon->output); + //free_drw(mon->canvas); + //free(mon); } @@ -362,6 +363,8 @@ handle_keyboard_event() break; case XKB_KEY_KP_Enter: /* fallthrough */ case XKB_KEY_Return: + printf("INPUT: %s\n", input_field); + fflush(stdout); if (!(inputhash = crypt(input_field, hash))) fprintf(stderr, "slock: crypt: %s\n", strerror(errno)); else @@ -388,6 +391,12 @@ handle_keyboard_event() void +keyboard_modifiers(void *data, struct wl_keyboard *keybaord, uint32_t serial, uint32_t depressed, uint32_t latched, uint32_t locked, uint32_t group) +{ + xkb_state_update_mask(client.xkb_state, depressed, latched, locked, 0, 0, group); +} + +void register_monitor(Monitor *mon) { mon->surface = wl_compositor_create_surface(client.compositor); |