summaryrefslogtreecommitdiff
path: root/src/keymap.c
diff options
context:
space:
mode:
authorRan Benita <ran234@gmail.com>2013-07-28 16:21:40 +0300
committerRan Benita <ran234@gmail.com>2013-07-31 10:58:25 +0300
commit990c09a3d096b29f3de026dc92b36edf1ccf0574 (patch)
treee62e26dd2a7649a50bebf9148f58dd973b8f1345 /src/keymap.c
parent5f787e5e91492b40804049d0c45ea64b25de0c49 (diff)
downloadxorg-lib-libxkbcommon-990c09a3d096b29f3de026dc92b36edf1ccf0574.tar.gz
keymap: update builtin fields directly in src/keymap.c
This fields are part of our API and every keymap should have them, not just xkbcomp/ ones. Signed-off-by: Ran Benita <ran234@gmail.com>
Diffstat (limited to 'src/keymap.c')
-rw-r--r--src/keymap.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/keymap.c b/src/keymap.c
index f8efd7b..4cb01c6 100644
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -53,6 +53,26 @@
#include "keymap.h"
#include "text.h"
+static void
+update_builtin_keymap_fields(struct xkb_keymap *keymap)
+{
+ struct xkb_context *ctx = keymap->ctx;
+
+ /*
+ * Add predefined (AKA real, core, X11) modifiers.
+ * The order is important!
+ */
+ darray_appends_t(keymap->mods, struct xkb_mod,
+ { .name = xkb_atom_intern_literal(ctx, "Shift"), .type = MOD_REAL },
+ { .name = xkb_atom_intern_literal(ctx, "Lock"), .type = MOD_REAL },
+ { .name = xkb_atom_intern_literal(ctx, "Control"), .type = MOD_REAL },
+ { .name = xkb_atom_intern_literal(ctx, "Mod1"), .type = MOD_REAL },
+ { .name = xkb_atom_intern_literal(ctx, "Mod2"), .type = MOD_REAL },
+ { .name = xkb_atom_intern_literal(ctx, "Mod3"), .type = MOD_REAL },
+ { .name = xkb_atom_intern_literal(ctx, "Mod4"), .type = MOD_REAL },
+ { .name = xkb_atom_intern_literal(ctx, "Mod5"), .type = MOD_REAL });
+}
+
static struct xkb_keymap *
xkb_keymap_new(struct xkb_context *ctx,
enum xkb_keymap_format format,
@@ -70,6 +90,8 @@ xkb_keymap_new(struct xkb_context *ctx,
keymap->format = format;
keymap->flags = flags;
+ update_builtin_keymap_fields(keymap);
+
return keymap;
}