editor, keyboard: Add support for arrow keys
Add support for arrow keys on the virtual keyboard and make it possible
to move around the cursor in the editor example.
diff --git a/clients/keyboard.c b/clients/keyboard.c
index c90c5b2..bf0e9f0 100644
--- a/clients/keyboard.c
+++ b/clients/keyboard.c
@@ -47,7 +47,11 @@
keytype_space,
keytype_switch,
keytype_symbols,
- keytype_tab
+ keytype_tab,
+ keytype_arrow_up,
+ keytype_arrow_left,
+ keytype_arrow_right,
+ keytype_arrow_down
};
struct key {
@@ -96,9 +100,13 @@
{ keytype_default, ".", ".", 1},
{ keytype_switch, "ABC", "abc", 1},
- { keytype_symbols, "?123", "?123", 2},
- { keytype_space, "", "", 8},
- { keytype_symbols, "?123", "?123", 2}
+ { keytype_symbols, "?123", "?123", 1},
+ { keytype_space, "", "", 6},
+ { keytype_arrow_up, "/\\", "/\\", 1},
+ { keytype_arrow_left, "<", "<", 1},
+ { keytype_arrow_right, ">", ">", 1},
+ { keytype_arrow_down, "\\/", "\\/", 1},
+ { keytype_symbols, "?123", "?123", 1}
};
static const unsigned int columns = 12;
@@ -255,6 +263,22 @@
input_method_context_key(keyboard->keyboard->context,
XKB_KEY_Tab, WL_KEYBOARD_KEY_STATE_PRESSED);
break;
+ case keytype_arrow_up:
+ input_method_context_key(keyboard->keyboard->context,
+ XKB_KEY_Up, WL_KEYBOARD_KEY_STATE_PRESSED);
+ break;
+ case keytype_arrow_left:
+ input_method_context_key(keyboard->keyboard->context,
+ XKB_KEY_Left, WL_KEYBOARD_KEY_STATE_PRESSED);
+ break;
+ case keytype_arrow_right:
+ input_method_context_key(keyboard->keyboard->context,
+ XKB_KEY_Right, WL_KEYBOARD_KEY_STATE_PRESSED);
+ break;
+ case keytype_arrow_down:
+ input_method_context_key(keyboard->keyboard->context,
+ XKB_KEY_Down, WL_KEYBOARD_KEY_STATE_PRESSED);
+ break;
}
}