From abb9dcdd1fc7431c191d3fc3987bb50d97e673f6 Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Fri, 22 Jun 2012 13:21:33 +0100 Subject: [PATCH] weston_xkb_info: Cache all modifier indices for X11 X11 has a set of eight modifiers which we want to represent. Cache their indices when we create a weston_xkb_info, so we can use this from compositor-x11 to keep the state synchronised exactly between the host X server and a nested Weston instance. Signed-off-by: Daniel Stone --- src/compositor.c | 7 +++++++ src/compositor.h | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/src/compositor.c b/src/compositor.c index 17e6735f..1d57316b 100644 --- a/src/compositor.c +++ b/src/compositor.c @@ -2380,12 +2380,19 @@ weston_xkb_info_new_keymap(struct weston_xkb_info *xkb_info) { char *keymap_str; + xkb_info->shift_mod = xkb_map_mod_get_index(xkb_info->keymap, + XKB_MOD_NAME_SHIFT); + xkb_info->caps_mod = xkb_map_mod_get_index(xkb_info->keymap, + XKB_MOD_NAME_CAPS); xkb_info->ctrl_mod = xkb_map_mod_get_index(xkb_info->keymap, XKB_MOD_NAME_CTRL); xkb_info->alt_mod = xkb_map_mod_get_index(xkb_info->keymap, XKB_MOD_NAME_ALT); + xkb_info->mod2_mod = xkb_map_mod_get_index(xkb_info->keymap, "Mod2"); + xkb_info->mod3_mod = xkb_map_mod_get_index(xkb_info->keymap, "Mod3"); xkb_info->super_mod = xkb_map_mod_get_index(xkb_info->keymap, XKB_MOD_NAME_LOGO); + xkb_info->mod5_mod = xkb_map_mod_get_index(xkb_info->keymap, "Mod5"); xkb_info->num_led = xkb_map_led_get_index(xkb_info->keymap, XKB_LED_NAME_NUM); diff --git a/src/compositor.h b/src/compositor.h index 3bf68dc1..f87843a9 100644 --- a/src/compositor.h +++ b/src/compositor.h @@ -189,9 +189,14 @@ struct weston_xkb_info { int keymap_fd; size_t keymap_size; char *keymap_area; + xkb_mod_index_t shift_mod; + xkb_mod_index_t caps_mod; xkb_mod_index_t ctrl_mod; xkb_mod_index_t alt_mod; + xkb_mod_index_t mod2_mod; + xkb_mod_index_t mod3_mod; xkb_mod_index_t super_mod; + xkb_mod_index_t mod5_mod; xkb_led_index_t num_led; xkb_led_index_t caps_led; xkb_led_index_t scroll_led;