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 <torben.hohn@bruker.com>
This commit is contained in:
Torben Hohn 2023-10-06 14:02:59 +02:00 committed by Joscha Wloch
parent 1ddc493a52
commit f30eb47b04

View file

@ -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;
}
}