diff options
author | Harry Jeffery <harry@exec64.co.uk> | 2019-08-13 01:12:50 +0100 |
---|---|---|
committer | Harry Jeffery <harry@exec64.co.uk> | 2019-08-13 01:14:56 +0100 |
commit | 2d0eee125442524f2df009ebd6d4df166a74d6f9 (patch) | |
tree | c27a7eb3153da94340ed75f94130a3e1bf1bda36 /src/keyboard.c | |
parent | 07b742e9da2a12d163d7733aaefc5ae6bce555b6 (diff) | |
download | imv-2d0eee125442524f2df009ebd6d4df166a74d6f9.tar.gz |
Wayland: Detect keyboard layout automatically
Diffstat (limited to 'src/keyboard.c')
-rw-r--r-- | src/keyboard.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/keyboard.c b/src/keyboard.c index 16b2c9d..af79006 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -22,9 +22,9 @@ struct imv_keyboard *imv_keyboard_create(void) struct xkb_rule_names names = { .rules = NULL, .model = NULL, - .layout = "gb", + .layout = NULL, .variant = NULL, - .options = "caps:escape,compose:ralt" + .options = NULL, }; keyboard->keymap = xkb_keymap_new_from_names(keyboard->context, &names, 0); assert(keyboard->keymap); @@ -116,3 +116,11 @@ size_t imv_keyboard_get_text(struct imv_keyboard *keyboard, int scancode, char * { return xkb_state_key_get_utf8(keyboard->state, scancode + scancode_offset, buf, buflen); } + +void imv_keyboard_set_keymap(struct imv_keyboard *keyboard, const char *keymap) +{ + xkb_keymap_unref(keyboard->keymap); + keyboard->keymap = xkb_keymap_new_from_string(keyboard->context, keymap, XKB_KEYMAP_FORMAT_TEXT_V1, XKB_KEYMAP_COMPILE_NO_FLAGS); + xkb_state_unref(keyboard->state); + keyboard->state = xkb_state_new(keyboard->keymap); +} |