summaryrefslogtreecommitdiff
path: root/clients/keyboard.c
diff options
context:
space:
mode:
authorJan Arne Petersen <jpetersen@openismus.com>2012-11-18 19:06:43 +0100
committerKristian Høgsberg <krh@bitplanet.net>2012-11-27 13:02:26 -0500
commitd9be93b96453e73aa53278a319d9e771ec4c06ab (patch)
tree970d7f41b6232459ced9e1368251e0ee110b618d /clients/keyboard.c
parent674fd1d62531093ab13bd67d86517d1aad18733d (diff)
downloadweston-d9be93b96453e73aa53278a319d9e771ec4c06ab.tar.gz
text: Rename and extend text_model key event
Rename the key event in text_model to keysym and add serial, time and modifiers arguments. Add a modifiers_map event to transfer an array of 0-terminated modifier names, so that a mapping of modifiers to the modifier bit mask is possible. Signed-off-by: Jan Arne Petersen <jpetersen@openismus.com>
Diffstat (limited to 'clients/keyboard.c')
-rw-r--r--clients/keyboard.c40
1 files changed, 26 insertions, 14 deletions
diff --git a/clients/keyboard.c b/clients/keyboard.c
index 1b2a9ba7..d1e5dbff 100644
--- a/clients/keyboard.c
+++ b/clients/keyboard.c
@@ -234,7 +234,7 @@ virtual_keyboard_commit_preedit(struct virtual_keyboard *keyboard)
}
static void
-keyboard_handle_key(struct keyboard *keyboard, const struct key *key)
+keyboard_handle_key(struct keyboard *keyboard, uint32_t time, const struct key *key)
{
const char *label = keyboard->state == keyboardstate_default ? key->label : key->alt;
@@ -259,8 +259,10 @@ keyboard_handle_key(struct keyboard *keyboard, const struct key *key)
break;
case keytype_enter:
virtual_keyboard_commit_preedit(keyboard->keyboard);
- input_method_context_key(keyboard->keyboard->context,
- XKB_KEY_KP_Enter, WL_KEYBOARD_KEY_STATE_PRESSED);
+ input_method_context_keysym(keyboard->keyboard->context,
+ display_get_serial(keyboard->keyboard->display),
+ time,
+ XKB_KEY_KP_Enter, WL_KEYBOARD_KEY_STATE_PRESSED, 0);
break;
case keytype_space:
keyboard->keyboard->preedit_string = strcat(keyboard->keyboard->preedit_string,
@@ -277,28 +279,38 @@ keyboard_handle_key(struct keyboard *keyboard, const struct key *key)
break;
case keytype_tab:
virtual_keyboard_commit_preedit(keyboard->keyboard);
- input_method_context_key(keyboard->keyboard->context,
- XKB_KEY_Tab, WL_KEYBOARD_KEY_STATE_PRESSED);
+ input_method_context_keysym(keyboard->keyboard->context,
+ display_get_serial(keyboard->keyboard->display),
+ time,
+ XKB_KEY_Tab, WL_KEYBOARD_KEY_STATE_PRESSED, 0);
break;
case keytype_arrow_up:
virtual_keyboard_commit_preedit(keyboard->keyboard);
- input_method_context_key(keyboard->keyboard->context,
- XKB_KEY_Up, WL_KEYBOARD_KEY_STATE_PRESSED);
+ input_method_context_keysym(keyboard->keyboard->context,
+ display_get_serial(keyboard->keyboard->display),
+ time,
+ XKB_KEY_Up, WL_KEYBOARD_KEY_STATE_PRESSED, 0);
break;
case keytype_arrow_left:
virtual_keyboard_commit_preedit(keyboard->keyboard);
- input_method_context_key(keyboard->keyboard->context,
- XKB_KEY_Left, WL_KEYBOARD_KEY_STATE_PRESSED);
+ input_method_context_keysym(keyboard->keyboard->context,
+ display_get_serial(keyboard->keyboard->display),
+ time,
+ XKB_KEY_Left, WL_KEYBOARD_KEY_STATE_PRESSED, 0);
break;
case keytype_arrow_right:
virtual_keyboard_commit_preedit(keyboard->keyboard);
- input_method_context_key(keyboard->keyboard->context,
- XKB_KEY_Right, WL_KEYBOARD_KEY_STATE_PRESSED);
+ input_method_context_keysym(keyboard->keyboard->context,
+ display_get_serial(keyboard->keyboard->display),
+ time,
+ XKB_KEY_Right, WL_KEYBOARD_KEY_STATE_PRESSED, 0);
break;
case keytype_arrow_down:
virtual_keyboard_commit_preedit(keyboard->keyboard);
- input_method_context_key(keyboard->keyboard->context,
- XKB_KEY_Down, WL_KEYBOARD_KEY_STATE_PRESSED);
+ input_method_context_keysym(keyboard->keyboard->context,
+ display_get_serial(keyboard->keyboard->display),
+ time,
+ XKB_KEY_Down, WL_KEYBOARD_KEY_STATE_PRESSED, 0);
break;
}
}
@@ -330,7 +342,7 @@ button_handler(struct widget *widget,
for (i = 0; i < sizeof(keys) / sizeof(*keys); ++i) {
col -= keys[i].width;
if (col < 0) {
- keyboard_handle_key(keyboard, &keys[i]);
+ keyboard_handle_key(keyboard, time, &keys[i]);
break;
}
}