From a7710c5537cb005acaeb2afe9a53bafa3e022817 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Thu, 10 Dec 2015 18:34:12 -0500 Subject: Initialize keyboard in registry poll --- include/client/registry.h | 55 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) (limited to 'include') diff --git a/include/client/registry.h b/include/client/registry.h index 5e47b18e..2ab02174 100644 --- a/include/client/registry.h +++ b/include/client/registry.h @@ -2,16 +2,70 @@ #define _SWAY_CLIENT_REGISTRY_H #include +#include #include "wayland-desktop-shell-client-protocol.h" #include "wayland-swaylock-client-protocol.h" #include "list.h" +enum mod_bit { + MOD_SHIFT = 1<<0, + MOD_CAPS = 1<<1, + MOD_CTRL = 1<<2, + MOD_ALT = 1<<3, + MOD_MOD2 = 1<<4, + MOD_MOD3 = 1<<5, + MOD_LOGO = 1<<6, + MOD_MOD5 = 1<<7, +}; + +enum mask { + MASK_SHIFT, + MASK_CAPS, + MASK_CTRL, + MASK_ALT, + MASK_MOD2, + MASK_MOD3, + MASK_LOGO, + MASK_MOD5, + MASK_LAST +}; + struct output_state { struct wl_output *output; uint32_t flags; uint32_t width, height; }; +struct xkb { + struct xkb_state *state; + struct xkb_context *context; + struct xkb_keymap *keymap; + xkb_mod_mask_t masks[MASK_LAST]; +}; + +struct input { + int *repeat_fd; + + struct xkb xkb; + + xkb_keysym_t sym; + uint32_t code; + uint32_t last_code; + uint32_t modifiers; + + xkb_keysym_t repeat_sym; + uint32_t repeat_key; + + int32_t repeat_rate_sec; + int32_t repeat_rate_nsec; + int32_t repeat_delay_sec; + int32_t repeat_delay_nsec; + + struct { + void (*key)(enum wl_keyboard_key_state state, xkb_keysym_t sym, uint32_t code); + } notify; +}; + struct registry { struct wl_compositor *compositor; struct wl_display *display; @@ -22,6 +76,7 @@ struct registry { struct wl_shm *shm; struct desktop_shell *desktop_shell; struct lock *swaylock; + struct input *input; list_t *outputs; }; -- cgit v1.2.3-54-g00ecf