text: Add support for control keys to the protocol

Add key event to the text_model interface and a key request to the
input_method_context interface. Implement it in the example editor
client and the example keyboard.

Signed-off-by: Jan Arne Petersen <jpetersen@openismus.com>
diff --git a/clients/editor.c b/clients/editor.c
index 0ed217f..2baf6af 100644
--- a/clients/editor.c
+++ b/clients/editor.c
@@ -284,8 +284,31 @@
 
 static void
 text_model_key(void *data,
-	       struct text_model *text_model)
+	       struct text_model *text_model,
+               uint32_t key,
+               uint32_t state)
 {
+	const char *state_label;
+	const char *key_label;
+
+	if (state == WL_KEYBOARD_KEY_STATE_PRESSED) {
+		state_label = "pressed";
+	} else {
+		state_label = "released";
+	}
+
+	switch (key) {
+		case XKB_KEY_Tab:
+			key_label = "Tab";
+			break;
+		case XKB_KEY_KP_Enter:
+			key_label = "Enter";
+			break;
+		default:
+			key_label = "Unknown";
+	}
+
+	fprintf(stderr, "%s key was %s.\n", key_label, state_label);
 }
 
 static void