aboutsummaryrefslogtreecommitdiff
path: root/include/client
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2015-12-10 18:34:12 -0500
committerDrew DeVault <sir@cmpwn.com>2015-12-10 18:34:12 -0500
commita7710c5537cb005acaeb2afe9a53bafa3e022817 (patch)
treeb24327e97548fc528895e82f000b6e668cab93ac /include/client
parent266393a705ce2b6db982a4bd048bb536ec556a85 (diff)
Initialize keyboard in registry poll
Diffstat (limited to 'include/client')
-rw-r--r--include/client/registry.h55
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;
};