From f30eb47b040abcf90a1a7846f64da671f3a80270 Mon Sep 17 00:00:00 2001 From: Torben Hohn Date: Fri, 6 Oct 2023 14:02:59 +0200 Subject: [PATCH] clients: keyboard: Implement keytype_none Allow empty space in the keyboard matrix by adding keytype_none. This is effectively a NOP. Nothing happens when this key is pressed and its not even drawn. Signed-off-by: Torben Hohn --- clients/keyboard.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/clients/keyboard.c b/clients/keyboard.c index 135f89a0b..1f203315c 100644 --- a/clients/keyboard.c +++ b/clients/keyboard.c @@ -76,7 +76,8 @@ enum key_type { keytype_arrow_left, keytype_arrow_right, keytype_arrow_down, - keytype_style + keytype_style, + keytype_none, }; struct key { @@ -291,6 +292,9 @@ label_from_key(struct keyboard *keyboard, if (key->key_type == keytype_style) return style_labels[keyboard->keyboard->preedit_style]; + if (key->key_type == keytype_none) + return ""; + switch(keyboard->state) { case KEYBOARD_STATE_DEFAULT: return key->label; @@ -313,6 +317,9 @@ draw_key(struct keyboard *keyboard, const char *label; cairo_text_extents_t extents; + if (key->key_type == keytype_none) + return; + cairo_save(cr); cairo_rectangle(cr, col * key_width, row * key_height, @@ -660,6 +667,8 @@ keyboard_handle_key(struct keyboard *keyboard, uint32_t time, const struct key * keyboard->keyboard->preedit_style = (keyboard->keyboard->preedit_style + 1) % 8; /* TODO */ virtual_keyboard_send_preedit(keyboard->keyboard, -1); break; + case keytype_none: + break; } }