diff options
| author | Maarten van Gompel <proycon@anaproy.nl> | 2021-08-23 23:31:51 +0200 |
|---|---|---|
| committer | John Sullivan <jsullivan@csumb.edu> | 2021-10-19 23:12:01 -0700 |
| commit | 3a362b1f785aa9298097034f5b78edb6fefc3f1c (patch) | |
| tree | 1da6a891069f6566a4c119faf581e6cafbcb25be /keyboard.h | |
| parent | d61fe2f8a849b81bb8dc7fb6ee3226f69ad23412 (diff) | |
| download | suggpicker-3a362b1f785aa9298097034f5b78edb6fefc3f1c.tar.gz | |
added cyrillic compose layers and made compose work with non-code keys
Diffstat (limited to 'keyboard.h')
| -rw-r--r-- | keyboard.h | 42 |
1 files changed, 20 insertions, 22 deletions
diff --git a/keyboard.h b/keyboard.h index 8580602..e37b63c 100644 --- a/keyboard.h +++ b/keyboard.h @@ -180,6 +180,19 @@ kbd_unpress_key(struct kbd *kb, uint32_t time) { void kbd_press_key(struct kbd *kb, struct key *k, uint32_t time) { + if ((compose == 1) && (k->type != Compose) && (k->type != Mod) && (k->layout)) { + compose++; + fprintf(stderr,"showing compose %d\n", compose); + if ((!kb->prevlayout) || (strcmp(kb->prevlayout->keymap_name, kb->layout->keymap_name) != 0)) { + create_and_upload_keymap(kb->layout->keymap_name, 0, 0); + } + kb->prevlayout = kb->layout; + kb->layout = k->layout; + kbd_draw_layout(kb); + kb->surf->dirty = true; + return; + } + switch (k->type) { case Code: if (k->code_mod) { @@ -191,28 +204,13 @@ kbd_press_key(struct kbd *kb, struct key *k, uint32_t time) { } else { zwp_virtual_keyboard_v1_modifiers(kb->vkbd, kb->mods, 0, 0, 0); } - if (compose == 1) { - if (k->layout) { - compose++; - if (compose) { - fprintf(stderr,"showing compose %d\n", compose); - } - if ((!kb->prevlayout) || (strcmp(kb->prevlayout->keymap_name, kb->layout->keymap_name) != 0)) { - create_and_upload_keymap(kb->layout->keymap_name, 0, 0); - } - kb->prevlayout = kb->layout; - kb->layout = k->layout; - kbd_draw_layout(kb); - } - } else { - kb->last_press = k; - kbd_draw_key(kb, k, true); - zwp_virtual_keyboard_v1_key(kb->vkbd, time, kb->last_press->code, - WL_KEYBOARD_KEY_STATE_PRESSED); - if (compose) { - fprintf(stderr,"pressing composed key\n"); - compose++; - } + kb->last_press = k; + kbd_draw_key(kb, k, true); + zwp_virtual_keyboard_v1_key(kb->vkbd, time, kb->last_press->code, + WL_KEYBOARD_KEY_STATE_PRESSED); + if (compose) { + fprintf(stderr,"pressing composed key\n"); + compose++; } break; case Mod: |
