From b57f472c84592b0ec64c39d2e707892e58587aea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Tue, 17 Nov 2015 16:00:30 +0800 Subject: [PATCH] Use input method protocol from wayland-protocols MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jonas Ådahl Reviewed-by: Mariusz Ceier Reviewed-by: Jan Arne Petersen Reviewed-by: Pekka Paalanen --- Makefile.am | 17 +-- clients/keyboard.c | 174 +++++++++++---------- clients/weston-simple-im.c | 130 ++++++++-------- desktop-shell/input-panel.c | 14 +- ivi-shell/input-panel-ivi.c | 14 +- protocol/input-method.xml | 291 ------------------------------------ src/text-backend.c | 29 ++-- 7 files changed, 199 insertions(+), 470 deletions(-) delete mode 100644 protocol/input-method.xml diff --git a/Makefile.am b/Makefile.am index cd6b3fc8..4c705593 100644 --- a/Makefile.am +++ b/Makefile.am @@ -119,8 +119,8 @@ nodist_weston_SOURCES = \ protocol/text-cursor-position-server-protocol.h \ protocol/text-input-unstable-v1-protocol.c \ protocol/text-input-unstable-v1-server-protocol.h \ - protocol/input-method-protocol.c \ - protocol/input-method-server-protocol.h \ + protocol/input-method-unstable-v1-protocol.c \ + protocol/input-method-unstable-v1-server-protocol.h \ protocol/workspaces-protocol.c \ protocol/workspaces-server-protocol.h \ protocol/presentation_timing-protocol.c \ @@ -696,15 +696,15 @@ weston_keyboard_SOURCES = clients/keyboard.c nodist_weston_keyboard_SOURCES = \ protocol/desktop-shell-client-protocol.h \ protocol/desktop-shell-protocol.c \ - protocol/input-method-protocol.c \ - protocol/input-method-client-protocol.h + protocol/input-method-unstable-v1-protocol.c \ + protocol/input-method-unstable-v1-client-protocol.h weston_keyboard_LDADD = libtoytoolkit.la weston_keyboard_CFLAGS = $(AM_CFLAGS) $(CLIENT_CFLAGS) weston_simple_im_SOURCES = clients/weston-simple-im.c nodist_weston_simple_im_SOURCES = \ - protocol/input-method-protocol.c \ - protocol/input-method-client-protocol.h + protocol/input-method-unstable-v1-protocol.c \ + protocol/input-method-unstable-v1-client-protocol.h weston_simple_im_LDADD = $(CLIENT_LIBS) weston_simple_im_CFLAGS = $(AM_CFLAGS) $(CLIENT_CFLAGS) @@ -755,8 +755,8 @@ BUILT_SOURCES += \ protocol/text-cursor-position-protocol.c \ protocol/text-input-unstable-v1-protocol.c \ protocol/text-input-unstable-v1-client-protocol.h \ - protocol/input-method-protocol.c \ - protocol/input-method-client-protocol.h \ + protocol/input-method-unstable-v1-protocol.c \ + protocol/input-method-unstable-v1-client-protocol.h \ protocol/desktop-shell-client-protocol.h \ protocol/desktop-shell-protocol.c \ protocol/scaler-client-protocol.h \ @@ -1342,7 +1342,6 @@ BUILT_SOURCES += \ EXTRA_DIST += \ protocol/desktop-shell.xml \ protocol/screenshooter.xml \ - protocol/input-method.xml \ protocol/workspaces.xml \ protocol/text-cursor-position.xml \ protocol/weston-test.xml \ diff --git a/clients/keyboard.c b/clients/keyboard.c index e1f8ad35..b843fdab 100644 --- a/clients/keyboard.c +++ b/clients/keyboard.c @@ -32,15 +32,15 @@ #include #include "window.h" -#include "input-method-client-protocol.h" +#include "input-method-unstable-v1-client-protocol.h" #include "text-input-unstable-v1-client-protocol.h" struct keyboard; struct virtual_keyboard { - struct wl_input_panel *input_panel; - struct wl_input_method *input_method; - struct wl_input_method_context *context; + struct zwp_input_panel_v1 *input_panel; + struct zwp_input_method_v1 *input_method; + struct zwp_input_method_context_v1 *context; struct display *display; struct output *output; char *preedit_string; @@ -427,11 +427,11 @@ virtual_keyboard_commit_preedit(struct virtual_keyboard *keyboard) strlen(keyboard->preedit_string) == 0) return; - wl_input_method_context_cursor_position(keyboard->context, - 0, 0); - wl_input_method_context_commit_string(keyboard->context, - keyboard->serial, - keyboard->preedit_string); + zwp_input_method_context_v1_cursor_position(keyboard->context, + 0, 0); + zwp_input_method_context_v1_commit_string(keyboard->context, + keyboard->serial, + keyboard->preedit_string); if (keyboard->surrounding_text) { surrounding_text = insert_text(keyboard->surrounding_text, @@ -456,18 +456,18 @@ virtual_keyboard_send_preedit(struct virtual_keyboard *keyboard, uint32_t index = strlen(keyboard->preedit_string); if (keyboard->preedit_style) - wl_input_method_context_preedit_styling(keyboard->context, - 0, - strlen(keyboard->preedit_string), - keyboard->preedit_style); + zwp_input_method_context_v1_preedit_styling(keyboard->context, + 0, + strlen(keyboard->preedit_string), + keyboard->preedit_style); if (cursor > 0) index = cursor; - wl_input_method_context_preedit_cursor(keyboard->context, - index); - wl_input_method_context_preedit_string(keyboard->context, - keyboard->serial, - keyboard->preedit_string, - keyboard->preedit_string); + zwp_input_method_context_v1_preedit_cursor(keyboard->context, + index); + zwp_input_method_context_v1_preedit_string(keyboard->context, + keyboard->serial, + keyboard->preedit_string, + keyboard->preedit_string); } static const char * @@ -499,12 +499,12 @@ delete_before_cursor(struct virtual_keyboard *keyboard) end = keyboard->surrounding_text + keyboard->surrounding_cursor; - wl_input_method_context_delete_surrounding_text(keyboard->context, - (start - keyboard->surrounding_text) - keyboard->surrounding_cursor, - end - start); - wl_input_method_context_commit_string(keyboard->context, - keyboard->serial, - ""); + zwp_input_method_context_v1_delete_surrounding_text(keyboard->context, + (start - keyboard->surrounding_text) - keyboard->surrounding_cursor, + end - start); + zwp_input_method_context_v1_commit_string(keyboard->context, + keyboard->serial, + ""); /* Update surrounding text */ keyboard->surrounding_cursor = start - keyboard->surrounding_text; @@ -571,10 +571,10 @@ keyboard_handle_key(struct keyboard *keyboard, uint32_t time, const struct key * break; case keytype_enter: virtual_keyboard_commit_preedit(keyboard->keyboard); - wl_input_method_context_keysym(keyboard->keyboard->context, - display_get_serial(keyboard->keyboard->display), - time, - XKB_KEY_Return, key_state, mod_mask); + zwp_input_method_context_v1_keysym(keyboard->keyboard->context, + display_get_serial(keyboard->keyboard->display), + time, + XKB_KEY_Return, key_state, mod_mask); break; case keytype_space: if (state != WL_POINTER_BUTTON_STATE_PRESSED) @@ -615,38 +615,38 @@ keyboard_handle_key(struct keyboard *keyboard, uint32_t time, const struct key * break; case keytype_tab: virtual_keyboard_commit_preedit(keyboard->keyboard); - wl_input_method_context_keysym(keyboard->keyboard->context, - display_get_serial(keyboard->keyboard->display), - time, - XKB_KEY_Tab, key_state, mod_mask); + zwp_input_method_context_v1_keysym(keyboard->keyboard->context, + display_get_serial(keyboard->keyboard->display), + time, + XKB_KEY_Tab, key_state, mod_mask); break; case keytype_arrow_up: virtual_keyboard_commit_preedit(keyboard->keyboard); - wl_input_method_context_keysym(keyboard->keyboard->context, - display_get_serial(keyboard->keyboard->display), - time, - XKB_KEY_Up, key_state, mod_mask); + zwp_input_method_context_v1_keysym(keyboard->keyboard->context, + display_get_serial(keyboard->keyboard->display), + time, + XKB_KEY_Up, key_state, mod_mask); break; case keytype_arrow_left: virtual_keyboard_commit_preedit(keyboard->keyboard); - wl_input_method_context_keysym(keyboard->keyboard->context, - display_get_serial(keyboard->keyboard->display), - time, - XKB_KEY_Left, key_state, mod_mask); + zwp_input_method_context_v1_keysym(keyboard->keyboard->context, + display_get_serial(keyboard->keyboard->display), + time, + XKB_KEY_Left, key_state, mod_mask); break; case keytype_arrow_right: virtual_keyboard_commit_preedit(keyboard->keyboard); - wl_input_method_context_keysym(keyboard->keyboard->context, - display_get_serial(keyboard->keyboard->display), - time, - XKB_KEY_Right, key_state, mod_mask); + zwp_input_method_context_v1_keysym(keyboard->keyboard->context, + display_get_serial(keyboard->keyboard->display), + time, + XKB_KEY_Right, key_state, mod_mask); break; case keytype_arrow_down: virtual_keyboard_commit_preedit(keyboard->keyboard); - wl_input_method_context_keysym(keyboard->keyboard->context, - display_get_serial(keyboard->keyboard->display), - time, - XKB_KEY_Down, key_state, mod_mask); + zwp_input_method_context_v1_keysym(keyboard->keyboard->context, + display_get_serial(keyboard->keyboard->display), + time, + XKB_KEY_Down, key_state, mod_mask); break; case keytype_style: if (state != WL_POINTER_BUTTON_STATE_PRESSED) @@ -750,7 +750,7 @@ touch_up_handler(struct widget *widget, struct input *input, static void handle_surrounding_text(void *data, - struct wl_input_method_context *context, + struct zwp_input_method_context_v1 *context, const char *text, uint32_t cursor, uint32_t anchor) @@ -765,7 +765,7 @@ handle_surrounding_text(void *data, static void handle_reset(void *data, - struct wl_input_method_context *context) + struct zwp_input_method_context_v1 *context) { struct virtual_keyboard *keyboard = data; @@ -779,7 +779,7 @@ handle_reset(void *data, static void handle_content_type(void *data, - struct wl_input_method_context *context, + struct zwp_input_method_context_v1 *context, uint32_t hint, uint32_t purpose) { @@ -791,7 +791,7 @@ handle_content_type(void *data, static void handle_invoke_action(void *data, - struct wl_input_method_context *context, + struct zwp_input_method_context_v1 *context, uint32_t button, uint32_t index) { @@ -805,7 +805,7 @@ handle_invoke_action(void *data, static void handle_commit_state(void *data, - struct wl_input_method_context *context, + struct zwp_input_method_context_v1 *context, uint32_t serial) { struct virtual_keyboard *keyboard = data; @@ -822,15 +822,19 @@ handle_commit_state(void *data, layout->columns * key_width, layout->rows * key_height); - wl_input_method_context_language(context, keyboard->serial, layout->language); - wl_input_method_context_text_direction(context, keyboard->serial, layout->text_direction); + zwp_input_method_context_v1_language(context, + keyboard->serial, + layout->language); + zwp_input_method_context_v1_text_direction(context, + keyboard->serial, + layout->text_direction); widget_schedule_redraw(keyboard->keyboard->widget); } static void handle_preferred_language(void *data, - struct wl_input_method_context *context, + struct zwp_input_method_context_v1 *context, const char *language) { struct virtual_keyboard *keyboard = data; @@ -844,7 +848,7 @@ handle_preferred_language(void *data, keyboard->preferred_language = strdup(language); } -static const struct wl_input_method_context_listener input_method_context_listener = { +static const struct zwp_input_method_context_v1_listener input_method_context_listener = { handle_surrounding_text, handle_reset, handle_content_type, @@ -855,8 +859,8 @@ static const struct wl_input_method_context_listener input_method_context_listen static void input_method_activate(void *data, - struct wl_input_method *input_method, - struct wl_input_method_context *context) + struct zwp_input_method_v1 *input_method, + struct zwp_input_method_context_v1 *context) { struct virtual_keyboard *keyboard = data; struct wl_array modifiers_map; @@ -865,7 +869,7 @@ input_method_activate(void *data, keyboard->keyboard->state = KEYBOARD_STATE_DEFAULT; if (keyboard->context) - wl_input_method_context_destroy(keyboard->context); + zwp_input_method_context_v1_destroy(keyboard->context); if (keyboard->preedit_string) free(keyboard->preedit_string); @@ -881,15 +885,15 @@ input_method_activate(void *data, keyboard->serial = 0; keyboard->context = context; - wl_input_method_context_add_listener(context, - &input_method_context_listener, - keyboard); + zwp_input_method_context_v1_add_listener(context, + &input_method_context_listener, + keyboard); wl_array_init(&modifiers_map); keysym_modifiers_add(&modifiers_map, "Shift"); keysym_modifiers_add(&modifiers_map, "Control"); keysym_modifiers_add(&modifiers_map, "Mod1"); - wl_input_method_context_modifiers_map(context, &modifiers_map); + zwp_input_method_context_v1_modifiers_map(context, &modifiers_map); keyboard->keysym.shift_mask = keysym_modifiers_get_mask(&modifiers_map, "Shift"); wl_array_release(&modifiers_map); @@ -899,27 +903,31 @@ input_method_activate(void *data, layout->columns * key_width, layout->rows * key_height); - wl_input_method_context_language(context, keyboard->serial, layout->language); - wl_input_method_context_text_direction(context, keyboard->serial, layout->text_direction); + zwp_input_method_context_v1_language(context, + keyboard->serial, + layout->language); + zwp_input_method_context_v1_text_direction(context, + keyboard->serial, + layout->text_direction); widget_schedule_redraw(keyboard->keyboard->widget); } static void input_method_deactivate(void *data, - struct wl_input_method *input_method, - struct wl_input_method_context *context) + struct zwp_input_method_v1 *input_method, + struct zwp_input_method_context_v1 *context) { struct virtual_keyboard *keyboard = data; if (!keyboard->context) return; - wl_input_method_context_destroy(keyboard->context); + zwp_input_method_context_v1_destroy(keyboard->context); keyboard->context = NULL; } -static const struct wl_input_method_listener input_method_listener = { +static const struct zwp_input_method_v1_listener input_method_listener = { input_method_activate, input_method_deactivate }; @@ -930,14 +938,16 @@ global_handler(struct display *display, uint32_t name, { struct virtual_keyboard *keyboard = data; - if (!strcmp(interface, "wl_input_panel")) { + if (!strcmp(interface, "zwp_input_panel_v1")) { keyboard->input_panel = - display_bind(display, name, &wl_input_panel_interface, 1); - } else if (!strcmp(interface, "wl_input_method")) { + display_bind(display, name, &zwp_input_panel_v1_interface, 1); + } else if (!strcmp(interface, "zwp_input_method_v1")) { keyboard->input_method = display_bind(display, name, - &wl_input_method_interface, 1); - wl_input_method_add_listener(keyboard->input_method, &input_method_listener, keyboard); + &zwp_input_method_v1_interface, 1); + zwp_input_method_v1_add_listener(keyboard->input_method, + &input_method_listener, + keyboard); } } @@ -946,7 +956,7 @@ keyboard_create(struct output *output, struct virtual_keyboard *virtual_keyboard { struct keyboard *keyboard; const struct layout *layout; - struct wl_input_panel_surface *ips; + struct zwp_input_panel_surface_v1 *ips; layout = get_current_layout(virtual_keyboard); @@ -971,12 +981,12 @@ keyboard_create(struct output *output, struct virtual_keyboard *virtual_keyboard layout->rows * key_height); - ips = wl_input_panel_get_input_panel_surface(virtual_keyboard->input_panel, - window_get_wl_surface(keyboard->window)); + ips = zwp_input_panel_v1_get_input_panel_surface(virtual_keyboard->input_panel, + window_get_wl_surface(keyboard->window)); - wl_input_panel_surface_set_toplevel(ips, - output_get_wl_output(output), - WL_INPUT_PANEL_SURFACE_POSITION_CENTER_BOTTOM); + zwp_input_panel_surface_v1_set_toplevel(ips, + output_get_wl_output(output), + ZWP_INPUT_PANEL_SURFACE_V1_POSITION_CENTER_BOTTOM); } int diff --git a/clients/weston-simple-im.c b/clients/weston-simple-im.c index 0e68d483..4c1d7cf2 100644 --- a/clients/weston-simple-im.c +++ b/clients/weston-simple-im.c @@ -33,7 +33,7 @@ #include #include "window.h" -#include "input-method-client-protocol.h" +#include "input-method-unstable-v1-client-protocol.h" enum compose_state { state_normal, @@ -54,8 +54,8 @@ typedef void (*keyboard_input_key_handler_t)(struct simple_im *keyboard, enum wl_keyboard_key_state state); struct simple_im { - struct wl_input_method *input_method; - struct wl_input_method_context *context; + struct zwp_input_method_v1 *input_method; + struct zwp_input_method_context_v1 *context; struct wl_display *display; struct wl_registry *registry; struct wl_keyboard *keyboard; @@ -105,7 +105,7 @@ static const uint32_t ignore_keys_on_compose[] = { static void handle_surrounding_text(void *data, - struct wl_input_method_context *context, + struct zwp_input_method_context_v1 *context, const char *text, uint32_t cursor, uint32_t anchor) @@ -115,7 +115,7 @@ handle_surrounding_text(void *data, static void handle_reset(void *data, - struct wl_input_method_context *context) + struct zwp_input_method_context_v1 *context) { struct simple_im *keyboard = data; @@ -126,7 +126,7 @@ handle_reset(void *data, static void handle_content_type(void *data, - struct wl_input_method_context *context, + struct zwp_input_method_context_v1 *context, uint32_t hint, uint32_t purpose) { @@ -134,7 +134,7 @@ handle_content_type(void *data, static void handle_invoke_action(void *data, - struct wl_input_method_context *context, + struct zwp_input_method_context_v1 *context, uint32_t button, uint32_t index) { @@ -142,7 +142,7 @@ handle_invoke_action(void *data, static void handle_commit_state(void *data, - struct wl_input_method_context *context, + struct zwp_input_method_context_v1 *context, uint32_t serial) { struct simple_im *keyboard = data; @@ -152,12 +152,12 @@ handle_commit_state(void *data, static void handle_preferred_language(void *data, - struct wl_input_method_context *context, + struct zwp_input_method_context_v1 *context, const char *language) { } -static const struct wl_input_method_context_listener input_method_context_listener = { +static const struct zwp_input_method_context_v1_listener input_method_context_listener = { handle_surrounding_text, handle_reset, handle_content_type, @@ -256,7 +256,7 @@ input_method_keyboard_modifiers(void *data, uint32_t group) { struct simple_im *keyboard = data; - struct wl_input_method_context *context = keyboard->context; + struct zwp_input_method_context_v1 *context = keyboard->context; xkb_mod_mask_t mask; xkb_state_update_mask(keyboard->state, mods_depressed, @@ -273,9 +273,9 @@ input_method_keyboard_modifiers(void *data, if (mask & keyboard->shift_mask) keyboard->modifiers |= MOD_SHIFT_MASK; - wl_input_method_context_modifiers(context, serial, - mods_depressed, mods_depressed, - mods_latched, group); + zwp_input_method_context_v1_modifiers(context, serial, + mods_depressed, mods_depressed, + mods_latched, group); } static const struct wl_keyboard_listener input_method_keyboard_listener = { @@ -288,23 +288,23 @@ static const struct wl_keyboard_listener input_method_keyboard_listener = { static void input_method_activate(void *data, - struct wl_input_method *input_method, - struct wl_input_method_context *context) + struct zwp_input_method_v1 *input_method, + struct zwp_input_method_context_v1 *context) { struct simple_im *keyboard = data; if (keyboard->context) - wl_input_method_context_destroy(keyboard->context); + zwp_input_method_context_v1_destroy(keyboard->context); keyboard->compose_state = state_normal; keyboard->serial = 0; keyboard->context = context; - wl_input_method_context_add_listener(context, - &input_method_context_listener, - keyboard); - keyboard->keyboard = wl_input_method_context_grab_keyboard(context); + zwp_input_method_context_v1_add_listener(context, + &input_method_context_listener, + keyboard); + keyboard->keyboard = zwp_input_method_context_v1_grab_keyboard(context); wl_keyboard_add_listener(keyboard->keyboard, &input_method_keyboard_listener, keyboard); @@ -312,19 +312,19 @@ input_method_activate(void *data, static void input_method_deactivate(void *data, - struct wl_input_method *input_method, - struct wl_input_method_context *context) + struct zwp_input_method_v1 *input_method, + struct zwp_input_method_context_v1 *context) { struct simple_im *keyboard = data; if (!keyboard->context) return; - wl_input_method_context_destroy(keyboard->context); + zwp_input_method_context_v1_destroy(keyboard->context); keyboard->context = NULL; } -static const struct wl_input_method_listener input_method_listener = { +static const struct zwp_input_method_v1_listener input_method_listener = { input_method_activate, input_method_deactivate }; @@ -335,12 +335,12 @@ registry_handle_global(void *data, struct wl_registry *registry, { struct simple_im *keyboard = data; - if (!strcmp(interface, "wl_input_method")) { + if (!strcmp(interface, "zwp_input_method_v1")) { keyboard->input_method = wl_registry_bind(registry, name, - &wl_input_method_interface, 1); - wl_input_method_add_listener(keyboard->input_method, - &input_method_listener, keyboard); + &zwp_input_method_v1_interface, 1); + zwp_input_method_v1_add_listener(keyboard->input_method, + &input_method_listener, keyboard); } } @@ -379,7 +379,7 @@ simple_im_key_handler(struct simple_im *keyboard, uint32_t serial, uint32_t time, uint32_t key, uint32_t sym, enum wl_keyboard_key_state state) { - struct wl_input_method_context *context = keyboard->context; + struct zwp_input_method_context_v1 *context = keyboard->context; char text[64]; if (sym == XKB_KEY_Multi_key && @@ -399,7 +399,11 @@ simple_im_key_handler(struct simple_im *keyboard, for (i = 0; i < sizeof(ignore_keys_on_compose) / sizeof(ignore_keys_on_compose[0]); i++) { if (sym == ignore_keys_on_compose[i]) { - wl_input_method_context_key(context, keyboard->serial, time, key, state); + zwp_input_method_context_v1_key(context, + keyboard->serial, + time, + key, + state); return; } } @@ -414,16 +418,16 @@ simple_im_key_handler(struct simple_im *keyboard, if (cs) { if (cs->keys[i + 1] == 0) { - wl_input_method_context_preedit_cursor(keyboard->context, - 0); - wl_input_method_context_preedit_string(keyboard->context, - keyboard->serial, - "", ""); - wl_input_method_context_cursor_position(keyboard->context, - 0, 0); - wl_input_method_context_commit_string(keyboard->context, - keyboard->serial, - cs->text); + zwp_input_method_context_v1_preedit_cursor(keyboard->context, + 0); + zwp_input_method_context_v1_preedit_string(keyboard->context, + keyboard->serial, + "", ""); + zwp_input_method_context_v1_cursor_position(keyboard->context, + 0, 0); + zwp_input_method_context_v1_commit_string(keyboard->context, + keyboard->serial, + cs->text); keyboard->compose_state = state_normal; } else { uint32_t j = 0, idx = 0; @@ -432,12 +436,12 @@ simple_im_key_handler(struct simple_im *keyboard, idx += xkb_keysym_to_utf8(cs->keys[j], text + idx, sizeof(text) - idx); } - wl_input_method_context_preedit_cursor(keyboard->context, - strlen(text)); - wl_input_method_context_preedit_string(keyboard->context, - keyboard->serial, - text, - text); + zwp_input_method_context_v1_preedit_cursor(keyboard->context, + strlen(text)); + zwp_input_method_context_v1_preedit_string(keyboard->context, + keyboard->serial, + text, + text); } } else { uint32_t j = 0, idx = 0; @@ -445,34 +449,34 @@ simple_im_key_handler(struct simple_im *keyboard, for (; j <= i; j++) { idx += xkb_keysym_to_utf8(keyboard->compose_seq.keys[j], text + idx, sizeof(text) - idx); } - wl_input_method_context_preedit_cursor(keyboard->context, - 0); - wl_input_method_context_preedit_string(keyboard->context, - keyboard->serial, - "", ""); - wl_input_method_context_cursor_position(keyboard->context, - 0, 0); - wl_input_method_context_commit_string(keyboard->context, - keyboard->serial, - text); + zwp_input_method_context_v1_preedit_cursor(keyboard->context, + 0); + zwp_input_method_context_v1_preedit_string(keyboard->context, + keyboard->serial, + "", ""); + zwp_input_method_context_v1_cursor_position(keyboard->context, + 0, 0); + zwp_input_method_context_v1_commit_string(keyboard->context, + keyboard->serial, + text); keyboard->compose_state = state_normal; } return; } if (xkb_keysym_to_utf8(sym, text, sizeof(text)) <= 0) { - wl_input_method_context_key(context, serial, time, key, state); + zwp_input_method_context_v1_key(context, serial, time, key, state); return; } if (state == WL_KEYBOARD_KEY_STATE_PRESSED) return; - wl_input_method_context_cursor_position(keyboard->context, - 0, 0); - wl_input_method_context_commit_string(keyboard->context, - keyboard->serial, - text); + zwp_input_method_context_v1_cursor_position(keyboard->context, + 0, 0); + zwp_input_method_context_v1_commit_string(keyboard->context, + keyboard->serial, + text); } int diff --git a/desktop-shell/input-panel.c b/desktop-shell/input-panel.c index 95d62873..8d315dc2 100644 --- a/desktop-shell/input-panel.c +++ b/desktop-shell/input-panel.c @@ -31,7 +31,7 @@ #include "shell.h" #include "desktop-shell-server-protocol.h" -#include "input-method-server-protocol.h" +#include "input-method-unstable-v1-server-protocol.h" #include "shared/helpers.h" struct input_panel_surface { @@ -290,7 +290,7 @@ input_panel_surface_set_overlay_panel(struct wl_client *client, input_panel_surface->panel = 1; } -static const struct wl_input_panel_surface_interface input_panel_surface_implementation = { +static const struct zwp_input_panel_surface_v1_interface input_panel_surface_implementation = { input_panel_surface_set_toplevel, input_panel_surface_set_overlay_panel }; @@ -332,14 +332,16 @@ input_panel_get_input_panel_surface(struct wl_client *client, ipsurf->resource = wl_resource_create(client, - &wl_input_panel_surface_interface, 1, id); + &zwp_input_panel_surface_v1_interface, + 1, + id); wl_resource_set_implementation(ipsurf->resource, &input_panel_surface_implementation, ipsurf, destroy_input_panel_surface_resource); } -static const struct wl_input_panel_interface input_panel_implementation = { +static const struct zwp_input_panel_v1_interface input_panel_implementation = { input_panel_get_input_panel_surface }; @@ -359,7 +361,7 @@ bind_input_panel(struct wl_client *client, struct wl_resource *resource; resource = wl_resource_create(client, - &wl_input_panel_interface, 1, id); + &zwp_input_panel_v1_interface, 1, id); if (shell->input_panel.binding == NULL) { wl_resource_set_implementation(resource, @@ -398,7 +400,7 @@ input_panel_setup(struct desktop_shell *shell) wl_list_init(&shell->input_panel.surfaces); if (wl_global_create(shell->compositor->wl_display, - &wl_input_panel_interface, 1, + &zwp_input_panel_v1_interface, 1, shell, bind_input_panel) == NULL) return -1; diff --git a/ivi-shell/input-panel-ivi.c b/ivi-shell/input-panel-ivi.c index ecd497e0..721d31c8 100644 --- a/ivi-shell/input-panel-ivi.c +++ b/ivi-shell/input-panel-ivi.c @@ -32,7 +32,7 @@ #include #include "ivi-shell.h" -#include "input-method-server-protocol.h" +#include "input-method-unstable-v1-server-protocol.h" #include "ivi-layout-private.h" #include "shared/helpers.h" @@ -282,7 +282,7 @@ input_panel_surface_set_overlay_panel(struct wl_client *client, input_panel_surface->panel = 1; } -static const struct wl_input_panel_surface_interface input_panel_surface_implementation = { +static const struct zwp_input_panel_surface_v1_interface input_panel_surface_implementation = { input_panel_surface_set_toplevel, input_panel_surface_set_overlay_panel }; @@ -324,14 +324,16 @@ input_panel_get_input_panel_surface(struct wl_client *client, ipsurf->resource = wl_resource_create(client, - &wl_input_panel_surface_interface, 1, id); + &zwp_input_panel_surface_v1_interface, + 1, + id); wl_resource_set_implementation(ipsurf->resource, &input_panel_surface_implementation, ipsurf, destroy_input_panel_surface_resource); } -static const struct wl_input_panel_interface input_panel_implementation = { +static const struct zwp_input_panel_v1_interface input_panel_implementation = { input_panel_get_input_panel_surface }; @@ -351,7 +353,7 @@ bind_input_panel(struct wl_client *client, struct wl_resource *resource; resource = wl_resource_create(client, - &wl_input_panel_interface, 1, id); + &zwp_input_panel_v1_interface, 1, id); if (shell->input_panel.binding == NULL) { wl_resource_set_implementation(resource, @@ -390,7 +392,7 @@ input_panel_setup(struct ivi_shell *shell) wl_list_init(&shell->input_panel.surfaces); if (wl_global_create(shell->compositor->wl_display, - &wl_input_panel_interface, 1, + &zwp_input_panel_v1_interface, 1, shell, bind_input_panel) == NULL) return -1; diff --git a/protocol/input-method.xml b/protocol/input-method.xml deleted file mode 100644 index 657230cd..00000000 --- a/protocol/input-method.xml +++ /dev/null @@ -1,291 +0,0 @@ - - - - - Copyright © 2012, 2013 Intel Corporation - - Permission is hereby granted, free of charge, to any person obtaining a - copy of this software and associated documentation files (the "Software"), - to deal in the Software without restriction, including without limitation - the rights to use, copy, modify, merge, publish, distribute, sublicense, - and/or sell copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice (including the next - paragraph) shall be included in all copies or substantial portions of the - Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - - - - Corresponds to a text input on input method side. An input method context - is created on text input activation on the input method side. It allows to - receive information about the text input from the application via events. - Input method contexts do not keep state after deactivation and should be - destroyed after deactivation is handled. - - Text is generally UTF-8 encoded, indices and lengths are in bytes. - - Serials are used to synchronize the state between the text input and - an input method. New serials are sent by the text input in the - commit_state request and are used by the input method to indicate - the known text input state in events like preedit_string, commit_string, - and keysym. The text input can then ignore events from the input method - which are based on an outdated state (for example after a reset). - - - - - - - Send the commit string text for insertion to the application. - - The text to commit could be either just a single character after a key - press or the result of some composing (pre-edit). It could be also an - empty text when some text should be removed (see - delete_surrounding_text) or when the input cursor should be moved (see - cursor_position). - - Any previously set composing text will be removed. - - - - - - - - Send the pre-edit string text to the application text input. - - The commit text can be used to replace the preedit text on reset (for - example on unfocus). - - Also previously sent preedit_style and preedit_cursor requests are - processed bt the text_input also. - - - - - - - - - Sets styling information on composing text. The style is applied for - length in bytes from index relative to the beginning of - the composing text (as byte offset). Multiple styles can - be applied to a composing text. - - This request should be sent before sending preedit_string request. - - - - - - - - - Sets the cursor position inside the composing text (as byte offset) - relative to the start of the composing text. - - When index is negative no cursor should be displayed. - - This request should be sent before sending preedit_string request. - - - - - - - This request will be handled on text_input side as part of a directly - following commit_string request. - - - - - - - - Sets the cursor and anchor to a new position. Index is the new cursor - position in bytes (when >= 0 relative to the end of inserted text - else relative to beginning of inserted text). Anchor is the new anchor - position in bytes (when >= 0 relative to the end of inserted text, else - relative to beginning of inserted text). When there should be no - selected text anchor should be the same as index. - - This request will be handled on text_input side as part of a directly - following commit_string request. - - - - - - - - - - - - Notify when a key event was sent. Key events should not be used for - normal text input operations, which should be done with commit_string, - delete_surrounfing_text, etc. The key event follows the wl_keyboard key - event convention. Sym is a XKB keysym, state a wl_keyboard key_state. - - - - - - - - - - - Allows an input method to receive hardware keyboard input and process - key events to generate text events (with pre-edit) over the wire. This - allows input methods which compose multiple key events for inputting - text like it is done for CJK languages. - - - - - - - Should be used when filtering key events with grab_keyboard. - - When the wl_keyboard::key event is not processed by the input - method itself and should be sent to the client instead, forward it - with this request. The arguments should be the ones from the - wl_keyboard::key event. - - For generating custom key events use the keysym request instead. - - - - - - - - - - Should be used when filtering key events with grab_keyboard. - - When the wl_keyboard::modifiers event should be also send to the - client, forward it with this request. The arguments should be the ones - from the wl_keyboard::modifiers event. - - - - - - - - - - - - - - - - - - - - The plain surrounding text around the input position. Cursor is the - position in bytes within the surrounding text relative to the beginning - of the text. Anchor is the position in bytes of the selection anchor - within the surrounding text relative to the beginning of the text. If - there is no selected text anchor is the same as cursor. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - An input method object is responsible to compose text in response to - input from hardware or virtual keyboards. There is one input method - object per seat. On activate there is a new input method context object - created which allows the input method to communicate with the text input. - - - - - A text input was activated. Creates an input method context object - which allows communication with the text input. - - - - - - - The text input corresponding to the context argument was deactivated. - The input method context should be destroyed after deactivation is - handled. - - - - - - - - Only one client can bind this interface at a time. - - - - - - - - - - - - - - - - A keyboard surface is only shown when a text input is active. - - - - - - - - An overlay panel is shown near the input cursor above the application - window when a text input is active. - - - - - diff --git a/src/text-backend.c b/src/text-backend.c index 520aaf2c..ab4667f0 100644 --- a/src/text-backend.c +++ b/src/text-backend.c @@ -34,7 +34,7 @@ #include "compositor.h" #include "text-input-unstable-v1-server-protocol.h" -#include "input-method-server-protocol.h" +#include "input-method-unstable-v1-server-protocol.h" #include "shared/helpers.h" struct text_input_manager; @@ -127,7 +127,7 @@ deactivate_input_method(struct input_method *input_method) if (input_method->context && input_method->input_method_binding) { input_method_context_end_keyboard_grab(input_method->context); - wl_input_method_send_deactivate( + zwp_input_method_v1_send_deactivate( input_method->input_method_binding, input_method->context->resource); } @@ -172,7 +172,7 @@ text_input_set_surrounding_text(struct wl_client *client, &text_input->input_methods, link) { if (!input_method->context) continue; - wl_input_method_context_send_surrounding_text( + zwp_input_method_context_v1_send_surrounding_text( input_method->context->resource, text, cursor, anchor); } } @@ -245,7 +245,7 @@ text_input_reset(struct wl_client *client, &text_input->input_methods, link) { if (!input_method->context) continue; - wl_input_method_context_send_reset( + zwp_input_method_context_v1_send_reset( input_method->context->resource); } } @@ -283,7 +283,7 @@ text_input_set_content_type(struct wl_client *client, &text_input->input_methods, link) { if (!input_method->context) continue; - wl_input_method_context_send_content_type( + zwp_input_method_context_v1_send_content_type( input_method->context->resource, hint, purpose); } } @@ -301,7 +301,7 @@ text_input_invoke_action(struct wl_client *client, &text_input->input_methods, link) { if (!input_method->context) continue; - wl_input_method_context_send_invoke_action( + zwp_input_method_context_v1_send_invoke_action( input_method->context->resource, button, index); } } @@ -318,7 +318,7 @@ text_input_commit_state(struct wl_client *client, &text_input->input_methods, link) { if (!input_method->context) continue; - wl_input_method_context_send_commit_state( + zwp_input_method_context_v1_send_commit_state( input_method->context->resource, serial); } } @@ -368,7 +368,7 @@ text_input_set_preferred_language(struct wl_client *client, &text_input->input_methods, link) { if (!input_method->context) continue; - wl_input_method_context_send_preferred_language( + zwp_input_method_context_v1_send_preferred_language( input_method->context->resource, language); } } @@ -745,7 +745,7 @@ input_method_context_text_direction(struct wl_client *client, } -static const struct wl_input_method_context_interface context_implementation = { +static const struct zwp_input_method_context_v1_interface context_implementation = { input_method_context_destroy, input_method_context_commit_string, input_method_context_preedit_string, @@ -794,7 +794,8 @@ input_method_context_create(struct text_input *input, binding = input_method->input_method_binding; context->resource = wl_resource_create(wl_resource_get_client(binding), - &wl_input_method_context_interface, 1, 0); + &zwp_input_method_context_v1_interface, + 1, 0); wl_resource_set_implementation(context->resource, &context_implementation, context, destroy_input_method_context); @@ -804,7 +805,7 @@ input_method_context_create(struct text_input *input, input_method->context = context; - wl_input_method_send_activate(binding, context->resource); + zwp_input_method_v1_send_activate(binding, context->resource); } static void @@ -848,7 +849,8 @@ bind_input_method(struct wl_client *client, struct wl_resource *resource; resource = - wl_resource_create(client, &wl_input_method_interface, 1, id); + wl_resource_create(client, + &zwp_input_method_v1_interface, 1, id); if (input_method->input_method_binding != NULL) { wl_resource_post_error(resource, @@ -999,7 +1001,8 @@ text_backend_seat_created(struct text_backend *text_backend, input_method->text_backend = text_backend; input_method->input_method_global = - wl_global_create(ec->wl_display, &wl_input_method_interface, 1, + wl_global_create(ec->wl_display, + &zwp_input_method_v1_interface, 1, input_method, bind_input_method); input_method->destroy_listener.notify = input_method_notifier_destroy;