diff options
author | Drew DeVault <sir@cmpwn.com> | 2015-12-10 18:34:12 -0500 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2015-12-10 18:34:12 -0500 |
commit | a7710c5537cb005acaeb2afe9a53bafa3e022817 (patch) | |
tree | b24327e97548fc528895e82f000b6e668cab93ac /include/client | |
parent | 266393a705ce2b6db982a4bd048bb536ec556a85 (diff) |
Initialize keyboard in registry poll
Diffstat (limited to 'include/client')
-rw-r--r-- | include/client/registry.h | 55 |
1 files changed, 55 insertions, 0 deletions
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 <wayland-client.h> +#include <xkbcommon/xkbcommon.h> #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; }; |