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
}
break;
case keytype_enter:
+ input_method_context_key(keyboard->keyboard->context,
+ XKB_KEY_KP_Enter, WL_KEYBOARD_KEY_STATE_PRESSED);
break;
case keytype_space:
keyboard->keyboard->preedit_string = strcat(keyboard->keyboard->preedit_string,
case keytype_symbols:
break;
case keytype_tab:
+ input_method_context_key(keyboard->keyboard->context,
+ XKB_KEY_Tab, WL_KEYBOARD_KEY_STATE_PRESSED);
break;
}
}
<arg name="index" type="int"/>
<arg name="length" type="uint"/>
</request>
+ <request name="key">
+ <arg name="key" type="uint"/>
+ <arg name="state" type="uint"/>
+ </request>
<event name="surrounding_text">
<description summary="surrounding text event">
The plain surrounding text around the input position. Cursor is the
<arg name="length" type="uint"/>
</event>
<event name="preedit_styling"/>
- <event name="key"/>
+ <event name="key">
+ <arg name="key" type="uint"/>
+ <arg name="state" type="uint"/>
+ </event>
<event name="selection_replacement"/>
<event name="direction"/>
<event name="locale"/>
text_model_send_delete_surrounding_text(&context->model->resource, index, length);
}
+static void
+input_method_context_key(struct wl_client *client,
+ struct wl_resource *resource,
+ uint32_t key,
+ uint32_t state)
+{
+ struct input_method_context *context = resource->data;
+
+ text_model_send_key(&context->model->resource, key, state);
+}
+
static const struct input_method_context_interface input_method_context_implementation = {
input_method_context_destroy,
input_method_context_commit_string,
input_method_context_preedit_string,
- input_method_context_delete_surrounding_text
+ input_method_context_delete_surrounding_text,
+ input_method_context_key
};
static void
static void
text_model_key(void *data,
- struct text_model *text_model)
+ struct text_model *text_model,
+ uint32_t key,
+ uint32_t state)
{
}
-
+
static void
text_model_selection_replacement(void *data,
struct text_model *text_model)