client/wayland: Update Wayland input-method protocol to unstable v1
Weston uses unstable v1 for input-method protocol. Unfortunately weston-terminal does not enable input method and tested the protocol with weston-editor: https://github.com/wayland-project/weston/blob/master/clients/editor.c BUG=https://github.com/ibus/ibus/issues/2030
This commit is contained in:
Родитель
28c10d64d2
Коммит
b758478319
|
@ -3,7 +3,8 @@
|
|||
# ibus - The Input Bus
|
||||
#
|
||||
# Copyright (c) 2007-2013 Peng Huang <shawn.p.huang@gmail.com>
|
||||
# Copyright (c) 2007-2013 Red Hat, Inc.
|
||||
# Copyright (c) 2019 Takao Fujiwara <takao.fujiwara1@gmail.com>
|
||||
# Copyright (c) 2007-2019 Red Hat, Inc.
|
||||
#
|
||||
# This library is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License as
|
||||
|
@ -25,38 +26,40 @@ libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la
|
|||
libexec_PROGRAMS = ibus-wayland
|
||||
|
||||
protocol_sources = \
|
||||
input-method-protocol.c \
|
||||
input-method-client-protocol.h \
|
||||
$(NULL)
|
||||
input-method-unstable-v1-client-protocol.h \
|
||||
input-method-unstable-v1-protocol.c \
|
||||
$(NULL)
|
||||
|
||||
ibus_wayland_SOURCES = \
|
||||
$(protocol_sources) \
|
||||
main.c \
|
||||
$(NULL)
|
||||
$(protocol_sources) \
|
||||
main.c \
|
||||
$(NULL)
|
||||
|
||||
ibus_wayland_DEPENDENCIES = \
|
||||
$(libibus) \
|
||||
$(NULL)
|
||||
$(libibus) \
|
||||
$(NULL)
|
||||
|
||||
ibus_wayland_LDADD = \
|
||||
$(libibus) \
|
||||
$(GIO2_LIBS) \
|
||||
$(WAYLAND_LIBS) \
|
||||
$(NULL)
|
||||
$(libibus) \
|
||||
$(GIO2_LIBS) \
|
||||
$(WAYLAND_LIBS) \
|
||||
$(NULL)
|
||||
|
||||
ibus_wayland_CFLAGS = \
|
||||
$(GIO2_CFLAGS) \
|
||||
$(WAYLAND_CFLAGS) \
|
||||
-I$(top_srcdir)/src \
|
||||
-I$(top_builddir)/src \
|
||||
$(NULL)
|
||||
$(GIO2_CFLAGS) \
|
||||
$(WAYLAND_CFLAGS) \
|
||||
-I$(top_srcdir)/src \
|
||||
-I$(top_builddir)/src \
|
||||
$(NULL)
|
||||
|
||||
$(libibus):
|
||||
(cd $(top_builddir)/src; make)
|
||||
|
||||
EXTRA_DIST = \
|
||||
README \
|
||||
$(protocol_sources) \
|
||||
$(NULL)
|
||||
README \
|
||||
$(protocol_sources) \
|
||||
$(NULL)
|
||||
|
||||
@wayland_scanner_rules@
|
||||
|
||||
-include $(top_srcdir)/git.mk
|
||||
|
|
|
@ -1,419 +0,0 @@
|
|||
/*
|
||||
* Copyright © 2012, 2013 Intel Corporation
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this
|
||||
* software and its documentation for any purpose is hereby granted
|
||||
* without fee, provided that the above copyright notice appear in
|
||||
* all copies and that both that copyright notice and this permission
|
||||
* notice appear in supporting documentation, and that the name of
|
||||
* the copyright holders not be used in advertising or publicity
|
||||
* pertaining to distribution of the software without specific,
|
||||
* written prior permission. The copyright holders make no
|
||||
* representations about the suitability of this software for any
|
||||
* purpose. It is provided "as is" without express or implied
|
||||
* warranty.
|
||||
*
|
||||
* THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
|
||||
* SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
* FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
* SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
|
||||
* AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
|
||||
* ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
|
||||
* THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef INPUT_METHOD_CLIENT_PROTOCOL_H
|
||||
#define INPUT_METHOD_CLIENT_PROTOCOL_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
#include "wayland-client.h"
|
||||
|
||||
struct wl_client;
|
||||
struct wl_resource;
|
||||
|
||||
struct wl_input_method_context;
|
||||
struct wl_input_method;
|
||||
struct wl_input_panel;
|
||||
struct wl_input_panel_surface;
|
||||
|
||||
extern const struct wl_interface wl_input_method_context_interface;
|
||||
extern const struct wl_interface wl_input_method_interface;
|
||||
extern const struct wl_interface wl_input_panel_interface;
|
||||
extern const struct wl_interface wl_input_panel_surface_interface;
|
||||
|
||||
/**
|
||||
* wl_input_method_context - input method context
|
||||
* @surrounding_text: surrounding text event
|
||||
* @reset: (none)
|
||||
* @content_type: (none)
|
||||
* @invoke_action: (none)
|
||||
* @commit_state: (none)
|
||||
* @preferred_language: (none)
|
||||
*
|
||||
* Corresponds to a text model on input method side. An input method
|
||||
* context is created on text mode activation on the input method side. It
|
||||
* allows to receive information about the text model 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).
|
||||
*/
|
||||
struct wl_input_method_context_listener {
|
||||
/**
|
||||
* surrounding_text - surrounding text event
|
||||
* @text: (none)
|
||||
* @cursor: (none)
|
||||
* @anchor: (none)
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
void (*surrounding_text)(void *data,
|
||||
struct wl_input_method_context *wl_input_method_context,
|
||||
const char *text,
|
||||
uint32_t cursor,
|
||||
uint32_t anchor);
|
||||
/**
|
||||
* reset - (none)
|
||||
*/
|
||||
void (*reset)(void *data,
|
||||
struct wl_input_method_context *wl_input_method_context);
|
||||
/**
|
||||
* content_type - (none)
|
||||
* @hint: (none)
|
||||
* @purpose: (none)
|
||||
*/
|
||||
void (*content_type)(void *data,
|
||||
struct wl_input_method_context *wl_input_method_context,
|
||||
uint32_t hint,
|
||||
uint32_t purpose);
|
||||
/**
|
||||
* invoke_action - (none)
|
||||
* @button: (none)
|
||||
* @index: (none)
|
||||
*/
|
||||
void (*invoke_action)(void *data,
|
||||
struct wl_input_method_context *wl_input_method_context,
|
||||
uint32_t button,
|
||||
uint32_t index);
|
||||
/**
|
||||
* commit_state - (none)
|
||||
* @serial: serial of text input state
|
||||
*/
|
||||
void (*commit_state)(void *data,
|
||||
struct wl_input_method_context *wl_input_method_context,
|
||||
uint32_t serial);
|
||||
/**
|
||||
* preferred_language - (none)
|
||||
* @language: (none)
|
||||
*/
|
||||
void (*preferred_language)(void *data,
|
||||
struct wl_input_method_context *wl_input_method_context,
|
||||
const char *language);
|
||||
};
|
||||
|
||||
static inline int
|
||||
wl_input_method_context_add_listener(struct wl_input_method_context *wl_input_method_context,
|
||||
const struct wl_input_method_context_listener *listener, void *data)
|
||||
{
|
||||
return wl_proxy_add_listener((struct wl_proxy *) wl_input_method_context,
|
||||
(void (**)(void)) listener, data);
|
||||
}
|
||||
|
||||
#define WL_INPUT_METHOD_CONTEXT_DESTROY 0
|
||||
#define WL_INPUT_METHOD_CONTEXT_COMMIT_STRING 1
|
||||
#define WL_INPUT_METHOD_CONTEXT_PREEDIT_STRING 2
|
||||
#define WL_INPUT_METHOD_CONTEXT_PREEDIT_STYLING 3
|
||||
#define WL_INPUT_METHOD_CONTEXT_PREEDIT_CURSOR 4
|
||||
#define WL_INPUT_METHOD_CONTEXT_DELETE_SURROUNDING_TEXT 5
|
||||
#define WL_INPUT_METHOD_CONTEXT_CURSOR_POSITION 6
|
||||
#define WL_INPUT_METHOD_CONTEXT_MODIFIERS_MAP 7
|
||||
#define WL_INPUT_METHOD_CONTEXT_KEYSYM 8
|
||||
#define WL_INPUT_METHOD_CONTEXT_GRAB_KEYBOARD 9
|
||||
#define WL_INPUT_METHOD_CONTEXT_KEY 10
|
||||
#define WL_INPUT_METHOD_CONTEXT_MODIFIERS 11
|
||||
#define WL_INPUT_METHOD_CONTEXT_LANGUAGE 12
|
||||
#define WL_INPUT_METHOD_CONTEXT_TEXT_DIRECTION 13
|
||||
|
||||
static inline void
|
||||
wl_input_method_context_set_user_data(struct wl_input_method_context *wl_input_method_context, void *user_data)
|
||||
{
|
||||
wl_proxy_set_user_data((struct wl_proxy *) wl_input_method_context, user_data);
|
||||
}
|
||||
|
||||
static inline void *
|
||||
wl_input_method_context_get_user_data(struct wl_input_method_context *wl_input_method_context)
|
||||
{
|
||||
return wl_proxy_get_user_data((struct wl_proxy *) wl_input_method_context);
|
||||
}
|
||||
|
||||
static inline void
|
||||
wl_input_method_context_destroy(struct wl_input_method_context *wl_input_method_context)
|
||||
{
|
||||
wl_proxy_marshal((struct wl_proxy *) wl_input_method_context,
|
||||
WL_INPUT_METHOD_CONTEXT_DESTROY);
|
||||
|
||||
wl_proxy_destroy((struct wl_proxy *) wl_input_method_context);
|
||||
}
|
||||
|
||||
static inline void
|
||||
wl_input_method_context_commit_string(struct wl_input_method_context *wl_input_method_context, uint32_t serial, const char *text)
|
||||
{
|
||||
wl_proxy_marshal((struct wl_proxy *) wl_input_method_context,
|
||||
WL_INPUT_METHOD_CONTEXT_COMMIT_STRING, serial, text);
|
||||
}
|
||||
|
||||
static inline void
|
||||
wl_input_method_context_preedit_string(struct wl_input_method_context *wl_input_method_context, uint32_t serial, const char *text, const char *commit)
|
||||
{
|
||||
wl_proxy_marshal((struct wl_proxy *) wl_input_method_context,
|
||||
WL_INPUT_METHOD_CONTEXT_PREEDIT_STRING, serial, text, commit);
|
||||
}
|
||||
|
||||
static inline void
|
||||
wl_input_method_context_preedit_styling(struct wl_input_method_context *wl_input_method_context, uint32_t index, uint32_t length, uint32_t style)
|
||||
{
|
||||
wl_proxy_marshal((struct wl_proxy *) wl_input_method_context,
|
||||
WL_INPUT_METHOD_CONTEXT_PREEDIT_STYLING, index, length, style);
|
||||
}
|
||||
|
||||
static inline void
|
||||
wl_input_method_context_preedit_cursor(struct wl_input_method_context *wl_input_method_context, int32_t index)
|
||||
{
|
||||
wl_proxy_marshal((struct wl_proxy *) wl_input_method_context,
|
||||
WL_INPUT_METHOD_CONTEXT_PREEDIT_CURSOR, index);
|
||||
}
|
||||
|
||||
static inline void
|
||||
wl_input_method_context_delete_surrounding_text(struct wl_input_method_context *wl_input_method_context, int32_t index, uint32_t length)
|
||||
{
|
||||
wl_proxy_marshal((struct wl_proxy *) wl_input_method_context,
|
||||
WL_INPUT_METHOD_CONTEXT_DELETE_SURROUNDING_TEXT, index, length);
|
||||
}
|
||||
|
||||
static inline void
|
||||
wl_input_method_context_cursor_position(struct wl_input_method_context *wl_input_method_context, int32_t index, int32_t anchor)
|
||||
{
|
||||
wl_proxy_marshal((struct wl_proxy *) wl_input_method_context,
|
||||
WL_INPUT_METHOD_CONTEXT_CURSOR_POSITION, index, anchor);
|
||||
}
|
||||
|
||||
static inline void
|
||||
wl_input_method_context_modifiers_map(struct wl_input_method_context *wl_input_method_context, struct wl_array *map)
|
||||
{
|
||||
wl_proxy_marshal((struct wl_proxy *) wl_input_method_context,
|
||||
WL_INPUT_METHOD_CONTEXT_MODIFIERS_MAP, map);
|
||||
}
|
||||
|
||||
static inline void
|
||||
wl_input_method_context_keysym(struct wl_input_method_context *wl_input_method_context, uint32_t serial, uint32_t time, uint32_t sym, uint32_t state, uint32_t modifiers)
|
||||
{
|
||||
wl_proxy_marshal((struct wl_proxy *) wl_input_method_context,
|
||||
WL_INPUT_METHOD_CONTEXT_KEYSYM, serial, time, sym, state, modifiers);
|
||||
}
|
||||
|
||||
static inline struct wl_keyboard *
|
||||
wl_input_method_context_grab_keyboard(struct wl_input_method_context *wl_input_method_context)
|
||||
{
|
||||
struct wl_proxy *keyboard;
|
||||
|
||||
keyboard = wl_proxy_create((struct wl_proxy *) wl_input_method_context,
|
||||
&wl_keyboard_interface);
|
||||
if (!keyboard)
|
||||
return NULL;
|
||||
|
||||
wl_proxy_marshal((struct wl_proxy *) wl_input_method_context,
|
||||
WL_INPUT_METHOD_CONTEXT_GRAB_KEYBOARD, keyboard);
|
||||
|
||||
return (struct wl_keyboard *) keyboard;
|
||||
}
|
||||
|
||||
static inline void
|
||||
wl_input_method_context_key(struct wl_input_method_context *wl_input_method_context, uint32_t serial, uint32_t time, uint32_t key, uint32_t state)
|
||||
{
|
||||
wl_proxy_marshal((struct wl_proxy *) wl_input_method_context,
|
||||
WL_INPUT_METHOD_CONTEXT_KEY, serial, time, key, state);
|
||||
}
|
||||
|
||||
static inline void
|
||||
wl_input_method_context_modifiers(struct wl_input_method_context *wl_input_method_context, uint32_t serial, uint32_t mods_depressed, uint32_t mods_latched, uint32_t mods_locked, uint32_t group)
|
||||
{
|
||||
wl_proxy_marshal((struct wl_proxy *) wl_input_method_context,
|
||||
WL_INPUT_METHOD_CONTEXT_MODIFIERS, serial, mods_depressed, mods_latched, mods_locked, group);
|
||||
}
|
||||
|
||||
static inline void
|
||||
wl_input_method_context_language(struct wl_input_method_context *wl_input_method_context, uint32_t serial, const char *language)
|
||||
{
|
||||
wl_proxy_marshal((struct wl_proxy *) wl_input_method_context,
|
||||
WL_INPUT_METHOD_CONTEXT_LANGUAGE, serial, language);
|
||||
}
|
||||
|
||||
static inline void
|
||||
wl_input_method_context_text_direction(struct wl_input_method_context *wl_input_method_context, uint32_t serial, uint32_t direction)
|
||||
{
|
||||
wl_proxy_marshal((struct wl_proxy *) wl_input_method_context,
|
||||
WL_INPUT_METHOD_CONTEXT_TEXT_DIRECTION, serial, direction);
|
||||
}
|
||||
|
||||
/**
|
||||
* wl_input_method - input method
|
||||
* @activate: activate event
|
||||
* @deactivate: activate event
|
||||
*
|
||||
* 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
|
||||
* model.
|
||||
*/
|
||||
struct wl_input_method_listener {
|
||||
/**
|
||||
* activate - activate event
|
||||
* @id: (none)
|
||||
*
|
||||
* A text model was activated. Creates an input method context
|
||||
* object which allows communication with the text model.
|
||||
*/
|
||||
void (*activate)(void *data,
|
||||
struct wl_input_method *wl_input_method,
|
||||
struct wl_input_method_context *id);
|
||||
/**
|
||||
* deactivate - activate event
|
||||
* @context: (none)
|
||||
*
|
||||
* The text model corresponding to the context argument was
|
||||
* deactivated. The input method context should be destroyed after
|
||||
* deactivation is handled.
|
||||
*/
|
||||
void (*deactivate)(void *data,
|
||||
struct wl_input_method *wl_input_method,
|
||||
struct wl_input_method_context *context);
|
||||
};
|
||||
|
||||
static inline int
|
||||
wl_input_method_add_listener(struct wl_input_method *wl_input_method,
|
||||
const struct wl_input_method_listener *listener, void *data)
|
||||
{
|
||||
return wl_proxy_add_listener((struct wl_proxy *) wl_input_method,
|
||||
(void (**)(void)) listener, data);
|
||||
}
|
||||
|
||||
static inline void
|
||||
wl_input_method_set_user_data(struct wl_input_method *wl_input_method, void *user_data)
|
||||
{
|
||||
wl_proxy_set_user_data((struct wl_proxy *) wl_input_method, user_data);
|
||||
}
|
||||
|
||||
static inline void *
|
||||
wl_input_method_get_user_data(struct wl_input_method *wl_input_method)
|
||||
{
|
||||
return wl_proxy_get_user_data((struct wl_proxy *) wl_input_method);
|
||||
}
|
||||
|
||||
static inline void
|
||||
wl_input_method_destroy(struct wl_input_method *wl_input_method)
|
||||
{
|
||||
wl_proxy_destroy((struct wl_proxy *) wl_input_method);
|
||||
}
|
||||
|
||||
#define WL_INPUT_PANEL_GET_INPUT_PANEL_SURFACE 0
|
||||
|
||||
static inline void
|
||||
wl_input_panel_set_user_data(struct wl_input_panel *wl_input_panel, void *user_data)
|
||||
{
|
||||
wl_proxy_set_user_data((struct wl_proxy *) wl_input_panel, user_data);
|
||||
}
|
||||
|
||||
static inline void *
|
||||
wl_input_panel_get_user_data(struct wl_input_panel *wl_input_panel)
|
||||
{
|
||||
return wl_proxy_get_user_data((struct wl_proxy *) wl_input_panel);
|
||||
}
|
||||
|
||||
static inline void
|
||||
wl_input_panel_destroy(struct wl_input_panel *wl_input_panel)
|
||||
{
|
||||
wl_proxy_destroy((struct wl_proxy *) wl_input_panel);
|
||||
}
|
||||
|
||||
static inline struct wl_input_panel_surface *
|
||||
wl_input_panel_get_input_panel_surface(struct wl_input_panel *wl_input_panel, struct wl_surface *surface)
|
||||
{
|
||||
struct wl_proxy *id;
|
||||
|
||||
id = wl_proxy_create((struct wl_proxy *) wl_input_panel,
|
||||
&wl_input_panel_surface_interface);
|
||||
if (!id)
|
||||
return NULL;
|
||||
|
||||
wl_proxy_marshal((struct wl_proxy *) wl_input_panel,
|
||||
WL_INPUT_PANEL_GET_INPUT_PANEL_SURFACE, id, surface);
|
||||
|
||||
return (struct wl_input_panel_surface *) id;
|
||||
}
|
||||
|
||||
#ifndef WL_INPUT_PANEL_SURFACE_POSITION_ENUM
|
||||
#define WL_INPUT_PANEL_SURFACE_POSITION_ENUM
|
||||
enum wl_input_panel_surface_position {
|
||||
WL_INPUT_PANEL_SURFACE_POSITION_CENTER_BOTTOM = 0,
|
||||
};
|
||||
#endif /* WL_INPUT_PANEL_SURFACE_POSITION_ENUM */
|
||||
|
||||
#define WL_INPUT_PANEL_SURFACE_SET_TOPLEVEL 0
|
||||
#define WL_INPUT_PANEL_SURFACE_SET_OVERLAY_PANEL 1
|
||||
|
||||
static inline void
|
||||
wl_input_panel_surface_set_user_data(struct wl_input_panel_surface *wl_input_panel_surface, void *user_data)
|
||||
{
|
||||
wl_proxy_set_user_data((struct wl_proxy *) wl_input_panel_surface, user_data);
|
||||
}
|
||||
|
||||
static inline void *
|
||||
wl_input_panel_surface_get_user_data(struct wl_input_panel_surface *wl_input_panel_surface)
|
||||
{
|
||||
return wl_proxy_get_user_data((struct wl_proxy *) wl_input_panel_surface);
|
||||
}
|
||||
|
||||
static inline void
|
||||
wl_input_panel_surface_destroy(struct wl_input_panel_surface *wl_input_panel_surface)
|
||||
{
|
||||
wl_proxy_destroy((struct wl_proxy *) wl_input_panel_surface);
|
||||
}
|
||||
|
||||
static inline void
|
||||
wl_input_panel_surface_set_toplevel(struct wl_input_panel_surface *wl_input_panel_surface, struct wl_output *output, uint32_t position)
|
||||
{
|
||||
wl_proxy_marshal((struct wl_proxy *) wl_input_panel_surface,
|
||||
WL_INPUT_PANEL_SURFACE_SET_TOPLEVEL, output, position);
|
||||
}
|
||||
|
||||
static inline void
|
||||
wl_input_panel_surface_set_overlay_panel(struct wl_input_panel_surface *wl_input_panel_surface)
|
||||
{
|
||||
wl_proxy_marshal((struct wl_proxy *) wl_input_panel_surface,
|
||||
WL_INPUT_PANEL_SURFACE_SET_OVERLAY_PANEL);
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -1,115 +0,0 @@
|
|||
/*
|
||||
* Copyright © 2012, 2013 Intel Corporation
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this
|
||||
* software and its documentation for any purpose is hereby granted
|
||||
* without fee, provided that the above copyright notice appear in
|
||||
* all copies and that both that copyright notice and this permission
|
||||
* notice appear in supporting documentation, and that the name of
|
||||
* the copyright holders not be used in advertising or publicity
|
||||
* pertaining to distribution of the software without specific,
|
||||
* written prior permission. The copyright holders make no
|
||||
* representations about the suitability of this software for any
|
||||
* purpose. It is provided "as is" without express or implied
|
||||
* warranty.
|
||||
*
|
||||
* THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
|
||||
* SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
* FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
* SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
|
||||
* AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
|
||||
* ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
|
||||
* THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
#include "wayland-util.h"
|
||||
|
||||
extern const struct wl_interface wl_keyboard_interface;
|
||||
extern const struct wl_interface wl_input_method_context_interface;
|
||||
extern const struct wl_interface wl_input_method_context_interface;
|
||||
extern const struct wl_interface wl_input_panel_surface_interface;
|
||||
extern const struct wl_interface wl_surface_interface;
|
||||
extern const struct wl_interface wl_output_interface;
|
||||
|
||||
static const struct wl_interface *types[] = {
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
&wl_keyboard_interface,
|
||||
&wl_input_method_context_interface,
|
||||
&wl_input_method_context_interface,
|
||||
&wl_input_panel_surface_interface,
|
||||
&wl_surface_interface,
|
||||
&wl_output_interface,
|
||||
NULL,
|
||||
};
|
||||
|
||||
static const struct wl_message wl_input_method_context_requests[] = {
|
||||
{ "destroy", "", types + 0 },
|
||||
{ "commit_string", "us", types + 0 },
|
||||
{ "preedit_string", "uss", types + 0 },
|
||||
{ "preedit_styling", "uuu", types + 0 },
|
||||
{ "preedit_cursor", "i", types + 0 },
|
||||
{ "delete_surrounding_text", "iu", types + 0 },
|
||||
{ "cursor_position", "ii", types + 0 },
|
||||
{ "modifiers_map", "a", types + 0 },
|
||||
{ "keysym", "uuuuu", types + 0 },
|
||||
{ "grab_keyboard", "n", types + 5 },
|
||||
{ "key", "uuuu", types + 0 },
|
||||
{ "modifiers", "uuuuu", types + 0 },
|
||||
{ "language", "us", types + 0 },
|
||||
{ "text_direction", "uu", types + 0 },
|
||||
};
|
||||
|
||||
static const struct wl_message wl_input_method_context_events[] = {
|
||||
{ "surrounding_text", "suu", types + 0 },
|
||||
{ "reset", "", types + 0 },
|
||||
{ "content_type", "uu", types + 0 },
|
||||
{ "invoke_action", "uu", types + 0 },
|
||||
{ "commit_state", "u", types + 0 },
|
||||
{ "preferred_language", "s", types + 0 },
|
||||
};
|
||||
|
||||
WL_EXPORT const struct wl_interface wl_input_method_context_interface = {
|
||||
"wl_input_method_context", 1,
|
||||
14, wl_input_method_context_requests,
|
||||
6, wl_input_method_context_events,
|
||||
};
|
||||
|
||||
static const struct wl_message wl_input_method_events[] = {
|
||||
{ "activate", "n", types + 6 },
|
||||
{ "deactivate", "o", types + 7 },
|
||||
};
|
||||
|
||||
WL_EXPORT const struct wl_interface wl_input_method_interface = {
|
||||
"wl_input_method", 1,
|
||||
0, NULL,
|
||||
2, wl_input_method_events,
|
||||
};
|
||||
|
||||
static const struct wl_message wl_input_panel_requests[] = {
|
||||
{ "get_input_panel_surface", "no", types + 8 },
|
||||
};
|
||||
|
||||
WL_EXPORT const struct wl_interface wl_input_panel_interface = {
|
||||
"wl_input_panel", 1,
|
||||
1, wl_input_panel_requests,
|
||||
0, NULL,
|
||||
};
|
||||
|
||||
static const struct wl_message wl_input_panel_surface_requests[] = {
|
||||
{ "set_toplevel", "ou", types + 10 },
|
||||
{ "set_overlay_panel", "", types + 0 },
|
||||
};
|
||||
|
||||
WL_EXPORT const struct wl_interface wl_input_panel_surface_interface = {
|
||||
"wl_input_panel_surface", 1,
|
||||
2, wl_input_panel_surface_requests,
|
||||
0, NULL,
|
||||
};
|
||||
|
|
@ -0,0 +1,752 @@
|
|||
/* Generated by wayland-scanner 1.16.92 */
|
||||
|
||||
#ifndef INPUT_METHOD_UNSTABLE_V1_CLIENT_PROTOCOL_H
|
||||
#define INPUT_METHOD_UNSTABLE_V1_CLIENT_PROTOCOL_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
#include "wayland-client.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @page page_input_method_unstable_v1 The input_method_unstable_v1 protocol
|
||||
* @section page_ifaces_input_method_unstable_v1 Interfaces
|
||||
* - @subpage page_iface_zwp_input_method_context_v1 - input method context
|
||||
* - @subpage page_iface_zwp_input_method_v1 - input method
|
||||
* - @subpage page_iface_zwp_input_panel_v1 - interface for implementing keyboards
|
||||
* - @subpage page_iface_zwp_input_panel_surface_v1 -
|
||||
* @section page_copyright_input_method_unstable_v1 Copyright
|
||||
* <pre>
|
||||
*
|
||||
* 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.
|
||||
* </pre>
|
||||
*/
|
||||
struct wl_keyboard;
|
||||
struct wl_output;
|
||||
struct wl_surface;
|
||||
struct zwp_input_method_context_v1;
|
||||
struct zwp_input_method_v1;
|
||||
struct zwp_input_panel_surface_v1;
|
||||
struct zwp_input_panel_v1;
|
||||
|
||||
/**
|
||||
* @page page_iface_zwp_input_method_context_v1 zwp_input_method_context_v1
|
||||
* @section page_iface_zwp_input_method_context_v1_desc Description
|
||||
*
|
||||
* Corresponds to a text input on the input method side. An input method context
|
||||
* is created on text input activation on the input method side. It allows
|
||||
* receiving 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).
|
||||
*
|
||||
* Warning! The protocol described in this file is experimental and
|
||||
* backward incompatible changes may be made. Backward compatible changes
|
||||
* may be added together with the corresponding interface version bump.
|
||||
* Backward incompatible changes are done by bumping the version number in
|
||||
* the protocol and interface names and resetting the interface version.
|
||||
* Once the protocol is to be declared stable, the 'z' prefix and the
|
||||
* version number in the protocol and interface names are removed and the
|
||||
* interface version number is reset.
|
||||
* @section page_iface_zwp_input_method_context_v1_api API
|
||||
* See @ref iface_zwp_input_method_context_v1.
|
||||
*/
|
||||
/**
|
||||
* @defgroup iface_zwp_input_method_context_v1 The zwp_input_method_context_v1 interface
|
||||
*
|
||||
* Corresponds to a text input on the input method side. An input method context
|
||||
* is created on text input activation on the input method side. It allows
|
||||
* receiving 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).
|
||||
*
|
||||
* Warning! The protocol described in this file is experimental and
|
||||
* backward incompatible changes may be made. Backward compatible changes
|
||||
* may be added together with the corresponding interface version bump.
|
||||
* Backward incompatible changes are done by bumping the version number in
|
||||
* the protocol and interface names and resetting the interface version.
|
||||
* Once the protocol is to be declared stable, the 'z' prefix and the
|
||||
* version number in the protocol and interface names are removed and the
|
||||
* interface version number is reset.
|
||||
*/
|
||||
extern const struct wl_interface zwp_input_method_context_v1_interface;
|
||||
/**
|
||||
* @page page_iface_zwp_input_method_v1 zwp_input_method_v1
|
||||
* @section page_iface_zwp_input_method_v1_desc Description
|
||||
*
|
||||
* An input method object is responsible for composing 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.
|
||||
* @section page_iface_zwp_input_method_v1_api API
|
||||
* See @ref iface_zwp_input_method_v1.
|
||||
*/
|
||||
/**
|
||||
* @defgroup iface_zwp_input_method_v1 The zwp_input_method_v1 interface
|
||||
*
|
||||
* An input method object is responsible for composing 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.
|
||||
*/
|
||||
extern const struct wl_interface zwp_input_method_v1_interface;
|
||||
/**
|
||||
* @page page_iface_zwp_input_panel_v1 zwp_input_panel_v1
|
||||
* @section page_iface_zwp_input_panel_v1_desc Description
|
||||
*
|
||||
* Only one client can bind this interface at a time.
|
||||
* @section page_iface_zwp_input_panel_v1_api API
|
||||
* See @ref iface_zwp_input_panel_v1.
|
||||
*/
|
||||
/**
|
||||
* @defgroup iface_zwp_input_panel_v1 The zwp_input_panel_v1 interface
|
||||
*
|
||||
* Only one client can bind this interface at a time.
|
||||
*/
|
||||
extern const struct wl_interface zwp_input_panel_v1_interface;
|
||||
/**
|
||||
* @page page_iface_zwp_input_panel_surface_v1 zwp_input_panel_surface_v1
|
||||
* @section page_iface_zwp_input_panel_surface_v1_api API
|
||||
* See @ref iface_zwp_input_panel_surface_v1.
|
||||
*/
|
||||
/**
|
||||
* @defgroup iface_zwp_input_panel_surface_v1 The zwp_input_panel_surface_v1 interface
|
||||
*/
|
||||
extern const struct wl_interface zwp_input_panel_surface_v1_interface;
|
||||
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
* @struct zwp_input_method_context_v1_listener
|
||||
*/
|
||||
struct zwp_input_method_context_v1_listener {
|
||||
/**
|
||||
* surrounding text 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 then anchor
|
||||
* is the same as cursor.
|
||||
*/
|
||||
void (*surrounding_text)(void *data,
|
||||
struct zwp_input_method_context_v1 *zwp_input_method_context_v1,
|
||||
const char *text,
|
||||
uint32_t cursor,
|
||||
uint32_t anchor);
|
||||
/**
|
||||
*/
|
||||
void (*reset)(void *data,
|
||||
struct zwp_input_method_context_v1 *zwp_input_method_context_v1);
|
||||
/**
|
||||
*/
|
||||
void (*content_type)(void *data,
|
||||
struct zwp_input_method_context_v1 *zwp_input_method_context_v1,
|
||||
uint32_t hint,
|
||||
uint32_t purpose);
|
||||
/**
|
||||
*/
|
||||
void (*invoke_action)(void *data,
|
||||
struct zwp_input_method_context_v1 *zwp_input_method_context_v1,
|
||||
uint32_t button,
|
||||
uint32_t index);
|
||||
/**
|
||||
* @param serial serial of text input state
|
||||
*/
|
||||
void (*commit_state)(void *data,
|
||||
struct zwp_input_method_context_v1 *zwp_input_method_context_v1,
|
||||
uint32_t serial);
|
||||
/**
|
||||
*/
|
||||
void (*preferred_language)(void *data,
|
||||
struct zwp_input_method_context_v1 *zwp_input_method_context_v1,
|
||||
const char *language);
|
||||
};
|
||||
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*/
|
||||
static inline int
|
||||
zwp_input_method_context_v1_add_listener(struct zwp_input_method_context_v1 *zwp_input_method_context_v1,
|
||||
const struct zwp_input_method_context_v1_listener *listener, void *data)
|
||||
{
|
||||
return wl_proxy_add_listener((struct wl_proxy *) zwp_input_method_context_v1,
|
||||
(void (**)(void)) listener, data);
|
||||
}
|
||||
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_DESTROY 0
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_COMMIT_STRING 1
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_PREEDIT_STRING 2
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_PREEDIT_STYLING 3
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_PREEDIT_CURSOR 4
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_DELETE_SURROUNDING_TEXT 5
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_CURSOR_POSITION 6
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_MODIFIERS_MAP 7
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_KEYSYM 8
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_GRAB_KEYBOARD 9
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_KEY 10
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_MODIFIERS 11
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_LANGUAGE 12
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_TEXT_DIRECTION 13
|
||||
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*/
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_SURROUNDING_TEXT_SINCE_VERSION 1
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*/
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_RESET_SINCE_VERSION 1
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*/
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_CONTENT_TYPE_SINCE_VERSION 1
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*/
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_INVOKE_ACTION_SINCE_VERSION 1
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*/
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_COMMIT_STATE_SINCE_VERSION 1
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*/
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_PREFERRED_LANGUAGE_SINCE_VERSION 1
|
||||
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*/
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_DESTROY_SINCE_VERSION 1
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*/
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_COMMIT_STRING_SINCE_VERSION 1
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*/
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_PREEDIT_STRING_SINCE_VERSION 1
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*/
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_PREEDIT_STYLING_SINCE_VERSION 1
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*/
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_PREEDIT_CURSOR_SINCE_VERSION 1
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*/
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_DELETE_SURROUNDING_TEXT_SINCE_VERSION 1
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*/
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_CURSOR_POSITION_SINCE_VERSION 1
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*/
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_MODIFIERS_MAP_SINCE_VERSION 1
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*/
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_KEYSYM_SINCE_VERSION 1
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*/
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_GRAB_KEYBOARD_SINCE_VERSION 1
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*/
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_KEY_SINCE_VERSION 1
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*/
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_MODIFIERS_SINCE_VERSION 1
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*/
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_LANGUAGE_SINCE_VERSION 1
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*/
|
||||
#define ZWP_INPUT_METHOD_CONTEXT_V1_TEXT_DIRECTION_SINCE_VERSION 1
|
||||
|
||||
/** @ingroup iface_zwp_input_method_context_v1 */
|
||||
static inline void
|
||||
zwp_input_method_context_v1_set_user_data(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, void *user_data)
|
||||
{
|
||||
wl_proxy_set_user_data((struct wl_proxy *) zwp_input_method_context_v1, user_data);
|
||||
}
|
||||
|
||||
/** @ingroup iface_zwp_input_method_context_v1 */
|
||||
static inline void *
|
||||
zwp_input_method_context_v1_get_user_data(struct zwp_input_method_context_v1 *zwp_input_method_context_v1)
|
||||
{
|
||||
return wl_proxy_get_user_data((struct wl_proxy *) zwp_input_method_context_v1);
|
||||
}
|
||||
|
||||
static inline uint32_t
|
||||
zwp_input_method_context_v1_get_version(struct zwp_input_method_context_v1 *zwp_input_method_context_v1)
|
||||
{
|
||||
return wl_proxy_get_version((struct wl_proxy *) zwp_input_method_context_v1);
|
||||
}
|
||||
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*/
|
||||
static inline void
|
||||
zwp_input_method_context_v1_destroy(struct zwp_input_method_context_v1 *zwp_input_method_context_v1)
|
||||
{
|
||||
wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1,
|
||||
ZWP_INPUT_METHOD_CONTEXT_V1_DESTROY);
|
||||
|
||||
wl_proxy_destroy((struct wl_proxy *) zwp_input_method_context_v1);
|
||||
}
|
||||
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
static inline void
|
||||
zwp_input_method_context_v1_commit_string(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, uint32_t serial, const char *text)
|
||||
{
|
||||
wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1,
|
||||
ZWP_INPUT_METHOD_CONTEXT_V1_COMMIT_STRING, serial, text);
|
||||
}
|
||||
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*
|
||||
* Send the pre-edit string text to the application text input.
|
||||
*
|
||||
* The commit text can be used to replace the pre-edit text on reset (for
|
||||
* example on unfocus).
|
||||
*
|
||||
* Previously sent preedit_style and preedit_cursor requests are also
|
||||
* processed by the text_input.
|
||||
*/
|
||||
static inline void
|
||||
zwp_input_method_context_v1_preedit_string(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, uint32_t serial, const char *text, const char *commit)
|
||||
{
|
||||
wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1,
|
||||
ZWP_INPUT_METHOD_CONTEXT_V1_PREEDIT_STRING, serial, text, commit);
|
||||
}
|
||||
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*
|
||||
* Set the 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 a preedit_string request.
|
||||
*/
|
||||
static inline void
|
||||
zwp_input_method_context_v1_preedit_styling(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, uint32_t index, uint32_t length, uint32_t style)
|
||||
{
|
||||
wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1,
|
||||
ZWP_INPUT_METHOD_CONTEXT_V1_PREEDIT_STYLING, index, length, style);
|
||||
}
|
||||
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*
|
||||
* Set 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 a preedit_string request.
|
||||
*/
|
||||
static inline void
|
||||
zwp_input_method_context_v1_preedit_cursor(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, int32_t index)
|
||||
{
|
||||
wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1,
|
||||
ZWP_INPUT_METHOD_CONTEXT_V1_PREEDIT_CURSOR, index);
|
||||
}
|
||||
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*
|
||||
* Remove the surrounding text.
|
||||
*
|
||||
* This request will be handled on the text_input side directly following
|
||||
* a commit_string request.
|
||||
*/
|
||||
static inline void
|
||||
zwp_input_method_context_v1_delete_surrounding_text(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, int32_t index, uint32_t length)
|
||||
{
|
||||
wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1,
|
||||
ZWP_INPUT_METHOD_CONTEXT_V1_DELETE_SURROUNDING_TEXT, index, length);
|
||||
}
|
||||
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*
|
||||
* Set the cursor and anchor to a new position. Index is the new cursor
|
||||
* position in bytes (when >= 0 this is relative to the end of the inserted text,
|
||||
* otherwise it is relative to the beginning of the inserted text). Anchor is
|
||||
* the new anchor position in bytes (when >= 0 this is relative to the end of the
|
||||
* inserted text, otherwise it is relative to the beginning of the inserted
|
||||
* text). When there should be no selected text, anchor should be the same
|
||||
* as index.
|
||||
*
|
||||
* This request will be handled on the text_input side directly following
|
||||
* a commit_string request.
|
||||
*/
|
||||
static inline void
|
||||
zwp_input_method_context_v1_cursor_position(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, int32_t index, int32_t anchor)
|
||||
{
|
||||
wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1,
|
||||
ZWP_INPUT_METHOD_CONTEXT_V1_CURSOR_POSITION, index, anchor);
|
||||
}
|
||||
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*/
|
||||
static inline void
|
||||
zwp_input_method_context_v1_modifiers_map(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, struct wl_array *map)
|
||||
{
|
||||
wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1,
|
||||
ZWP_INPUT_METHOD_CONTEXT_V1_MODIFIERS_MAP, map);
|
||||
}
|
||||
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*
|
||||
* 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_surrounding_text, etc. The key event follows the wl_keyboard key
|
||||
* event convention. Sym is an XKB keysym, state is a wl_keyboard key_state.
|
||||
*/
|
||||
static inline void
|
||||
zwp_input_method_context_v1_keysym(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, uint32_t serial, uint32_t time, uint32_t sym, uint32_t state, uint32_t modifiers)
|
||||
{
|
||||
wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1,
|
||||
ZWP_INPUT_METHOD_CONTEXT_V1_KEYSYM, serial, time, sym, state, modifiers);
|
||||
}
|
||||
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*
|
||||
* Allow 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.
|
||||
*/
|
||||
static inline struct wl_keyboard *
|
||||
zwp_input_method_context_v1_grab_keyboard(struct zwp_input_method_context_v1 *zwp_input_method_context_v1)
|
||||
{
|
||||
struct wl_proxy *keyboard;
|
||||
|
||||
keyboard = wl_proxy_marshal_constructor((struct wl_proxy *) zwp_input_method_context_v1,
|
||||
ZWP_INPUT_METHOD_CONTEXT_V1_GRAB_KEYBOARD, &wl_keyboard_interface, NULL);
|
||||
|
||||
return (struct wl_keyboard *) keyboard;
|
||||
}
|
||||
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*
|
||||
* Forward a wl_keyboard::key event to the client that was not processed
|
||||
* by the input method itself. Should be used when filtering key events
|
||||
* with grab_keyboard. The arguments should be the ones from the
|
||||
* wl_keyboard::key event.
|
||||
*
|
||||
* For generating custom key events use the keysym request instead.
|
||||
*/
|
||||
static inline void
|
||||
zwp_input_method_context_v1_key(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, uint32_t serial, uint32_t time, uint32_t key, uint32_t state)
|
||||
{
|
||||
wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1,
|
||||
ZWP_INPUT_METHOD_CONTEXT_V1_KEY, serial, time, key, state);
|
||||
}
|
||||
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*
|
||||
* Forward a wl_keyboard::modifiers event to the client that was not
|
||||
* processed by the input method itself. Should be used when filtering
|
||||
* key events with grab_keyboard. The arguments should be the ones
|
||||
* from the wl_keyboard::modifiers event.
|
||||
*/
|
||||
static inline void
|
||||
zwp_input_method_context_v1_modifiers(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, uint32_t serial, uint32_t mods_depressed, uint32_t mods_latched, uint32_t mods_locked, uint32_t group)
|
||||
{
|
||||
wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1,
|
||||
ZWP_INPUT_METHOD_CONTEXT_V1_MODIFIERS, serial, mods_depressed, mods_latched, mods_locked, group);
|
||||
}
|
||||
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*/
|
||||
static inline void
|
||||
zwp_input_method_context_v1_language(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, uint32_t serial, const char *language)
|
||||
{
|
||||
wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1,
|
||||
ZWP_INPUT_METHOD_CONTEXT_V1_LANGUAGE, serial, language);
|
||||
}
|
||||
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_context_v1
|
||||
*/
|
||||
static inline void
|
||||
zwp_input_method_context_v1_text_direction(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, uint32_t serial, uint32_t direction)
|
||||
{
|
||||
wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1,
|
||||
ZWP_INPUT_METHOD_CONTEXT_V1_TEXT_DIRECTION, serial, direction);
|
||||
}
|
||||
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_v1
|
||||
* @struct zwp_input_method_v1_listener
|
||||
*/
|
||||
struct zwp_input_method_v1_listener {
|
||||
/**
|
||||
* activate event
|
||||
*
|
||||
* A text input was activated. Creates an input method context
|
||||
* object which allows communication with the text input.
|
||||
*/
|
||||
void (*activate)(void *data,
|
||||
struct zwp_input_method_v1 *zwp_input_method_v1,
|
||||
struct zwp_input_method_context_v1 *id);
|
||||
/**
|
||||
* deactivate event
|
||||
*
|
||||
* The text input corresponding to the context argument was
|
||||
* deactivated. The input method context should be destroyed after
|
||||
* deactivation is handled.
|
||||
*/
|
||||
void (*deactivate)(void *data,
|
||||
struct zwp_input_method_v1 *zwp_input_method_v1,
|
||||
struct zwp_input_method_context_v1 *context);
|
||||
};
|
||||
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_v1
|
||||
*/
|
||||
static inline int
|
||||
zwp_input_method_v1_add_listener(struct zwp_input_method_v1 *zwp_input_method_v1,
|
||||
const struct zwp_input_method_v1_listener *listener, void *data)
|
||||
{
|
||||
return wl_proxy_add_listener((struct wl_proxy *) zwp_input_method_v1,
|
||||
(void (**)(void)) listener, data);
|
||||
}
|
||||
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_v1
|
||||
*/
|
||||
#define ZWP_INPUT_METHOD_V1_ACTIVATE_SINCE_VERSION 1
|
||||
/**
|
||||
* @ingroup iface_zwp_input_method_v1
|
||||
*/
|
||||
#define ZWP_INPUT_METHOD_V1_DEACTIVATE_SINCE_VERSION 1
|
||||
|
||||
|
||||
/** @ingroup iface_zwp_input_method_v1 */
|
||||
static inline void
|
||||
zwp_input_method_v1_set_user_data(struct zwp_input_method_v1 *zwp_input_method_v1, void *user_data)
|
||||
{
|
||||
wl_proxy_set_user_data((struct wl_proxy *) zwp_input_method_v1, user_data);
|
||||
}
|
||||
|
||||
/** @ingroup iface_zwp_input_method_v1 */
|
||||
static inline void *
|
||||
zwp_input_method_v1_get_user_data(struct zwp_input_method_v1 *zwp_input_method_v1)
|
||||
{
|
||||
return wl_proxy_get_user_data((struct wl_proxy *) zwp_input_method_v1);
|
||||
}
|
||||
|
||||
static inline uint32_t
|
||||
zwp_input_method_v1_get_version(struct zwp_input_method_v1 *zwp_input_method_v1)
|
||||
{
|
||||
return wl_proxy_get_version((struct wl_proxy *) zwp_input_method_v1);
|
||||
}
|
||||
|
||||
/** @ingroup iface_zwp_input_method_v1 */
|
||||
static inline void
|
||||
zwp_input_method_v1_destroy(struct zwp_input_method_v1 *zwp_input_method_v1)
|
||||
{
|
||||
wl_proxy_destroy((struct wl_proxy *) zwp_input_method_v1);
|
||||
}
|
||||
|
||||
#define ZWP_INPUT_PANEL_V1_GET_INPUT_PANEL_SURFACE 0
|
||||
|
||||
|
||||
/**
|
||||
* @ingroup iface_zwp_input_panel_v1
|
||||
*/
|
||||
#define ZWP_INPUT_PANEL_V1_GET_INPUT_PANEL_SURFACE_SINCE_VERSION 1
|
||||
|
||||
/** @ingroup iface_zwp_input_panel_v1 */
|
||||
static inline void
|
||||
zwp_input_panel_v1_set_user_data(struct zwp_input_panel_v1 *zwp_input_panel_v1, void *user_data)
|
||||
{
|
||||
wl_proxy_set_user_data((struct wl_proxy *) zwp_input_panel_v1, user_data);
|
||||
}
|
||||
|
||||
/** @ingroup iface_zwp_input_panel_v1 */
|
||||
static inline void *
|
||||
zwp_input_panel_v1_get_user_data(struct zwp_input_panel_v1 *zwp_input_panel_v1)
|
||||
{
|
||||
return wl_proxy_get_user_data((struct wl_proxy *) zwp_input_panel_v1);
|
||||
}
|
||||
|
||||
static inline uint32_t
|
||||
zwp_input_panel_v1_get_version(struct zwp_input_panel_v1 *zwp_input_panel_v1)
|
||||
{
|
||||
return wl_proxy_get_version((struct wl_proxy *) zwp_input_panel_v1);
|
||||
}
|
||||
|
||||
/** @ingroup iface_zwp_input_panel_v1 */
|
||||
static inline void
|
||||
zwp_input_panel_v1_destroy(struct zwp_input_panel_v1 *zwp_input_panel_v1)
|
||||
{
|
||||
wl_proxy_destroy((struct wl_proxy *) zwp_input_panel_v1);
|
||||
}
|
||||
|
||||
/**
|
||||
* @ingroup iface_zwp_input_panel_v1
|
||||
*/
|
||||
static inline struct zwp_input_panel_surface_v1 *
|
||||
zwp_input_panel_v1_get_input_panel_surface(struct zwp_input_panel_v1 *zwp_input_panel_v1, struct wl_surface *surface)
|
||||
{
|
||||
struct wl_proxy *id;
|
||||
|
||||
id = wl_proxy_marshal_constructor((struct wl_proxy *) zwp_input_panel_v1,
|
||||
ZWP_INPUT_PANEL_V1_GET_INPUT_PANEL_SURFACE, &zwp_input_panel_surface_v1_interface, NULL, surface);
|
||||
|
||||
return (struct zwp_input_panel_surface_v1 *) id;
|
||||
}
|
||||
|
||||
#ifndef ZWP_INPUT_PANEL_SURFACE_V1_POSITION_ENUM
|
||||
#define ZWP_INPUT_PANEL_SURFACE_V1_POSITION_ENUM
|
||||
enum zwp_input_panel_surface_v1_position {
|
||||
ZWP_INPUT_PANEL_SURFACE_V1_POSITION_CENTER_BOTTOM = 0,
|
||||
};
|
||||
#endif /* ZWP_INPUT_PANEL_SURFACE_V1_POSITION_ENUM */
|
||||
|
||||
#define ZWP_INPUT_PANEL_SURFACE_V1_SET_TOPLEVEL 0
|
||||
#define ZWP_INPUT_PANEL_SURFACE_V1_SET_OVERLAY_PANEL 1
|
||||
|
||||
|
||||
/**
|
||||
* @ingroup iface_zwp_input_panel_surface_v1
|
||||
*/
|
||||
#define ZWP_INPUT_PANEL_SURFACE_V1_SET_TOPLEVEL_SINCE_VERSION 1
|
||||
/**
|
||||
* @ingroup iface_zwp_input_panel_surface_v1
|
||||
*/
|
||||
#define ZWP_INPUT_PANEL_SURFACE_V1_SET_OVERLAY_PANEL_SINCE_VERSION 1
|
||||
|
||||
/** @ingroup iface_zwp_input_panel_surface_v1 */
|
||||
static inline void
|
||||
zwp_input_panel_surface_v1_set_user_data(struct zwp_input_panel_surface_v1 *zwp_input_panel_surface_v1, void *user_data)
|
||||
{
|
||||
wl_proxy_set_user_data((struct wl_proxy *) zwp_input_panel_surface_v1, user_data);
|
||||
}
|
||||
|
||||
/** @ingroup iface_zwp_input_panel_surface_v1 */
|
||||
static inline void *
|
||||
zwp_input_panel_surface_v1_get_user_data(struct zwp_input_panel_surface_v1 *zwp_input_panel_surface_v1)
|
||||
{
|
||||
return wl_proxy_get_user_data((struct wl_proxy *) zwp_input_panel_surface_v1);
|
||||
}
|
||||
|
||||
static inline uint32_t
|
||||
zwp_input_panel_surface_v1_get_version(struct zwp_input_panel_surface_v1 *zwp_input_panel_surface_v1)
|
||||
{
|
||||
return wl_proxy_get_version((struct wl_proxy *) zwp_input_panel_surface_v1);
|
||||
}
|
||||
|
||||
/** @ingroup iface_zwp_input_panel_surface_v1 */
|
||||
static inline void
|
||||
zwp_input_panel_surface_v1_destroy(struct zwp_input_panel_surface_v1 *zwp_input_panel_surface_v1)
|
||||
{
|
||||
wl_proxy_destroy((struct wl_proxy *) zwp_input_panel_surface_v1);
|
||||
}
|
||||
|
||||
/**
|
||||
* @ingroup iface_zwp_input_panel_surface_v1
|
||||
*
|
||||
* Set the input_panel_surface type to keyboard.
|
||||
*
|
||||
* A keyboard surface is only shown when a text input is active.
|
||||
*/
|
||||
static inline void
|
||||
zwp_input_panel_surface_v1_set_toplevel(struct zwp_input_panel_surface_v1 *zwp_input_panel_surface_v1, struct wl_output *output, uint32_t position)
|
||||
{
|
||||
wl_proxy_marshal((struct wl_proxy *) zwp_input_panel_surface_v1,
|
||||
ZWP_INPUT_PANEL_SURFACE_V1_SET_TOPLEVEL, output, position);
|
||||
}
|
||||
|
||||
/**
|
||||
* @ingroup iface_zwp_input_panel_surface_v1
|
||||
*
|
||||
* Set the input_panel_surface to be an overlay panel.
|
||||
*
|
||||
* This is shown near the input cursor above the application window when
|
||||
* a text input is active.
|
||||
*/
|
||||
static inline void
|
||||
zwp_input_panel_surface_v1_set_overlay_panel(struct zwp_input_panel_surface_v1 *zwp_input_panel_surface_v1)
|
||||
{
|
||||
wl_proxy_marshal((struct wl_proxy *) zwp_input_panel_surface_v1,
|
||||
ZWP_INPUT_PANEL_SURFACE_V1_SET_OVERLAY_PANEL);
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -0,0 +1,114 @@
|
|||
/* Generated by wayland-scanner 1.16.92 */
|
||||
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
#include "wayland-util.h"
|
||||
|
||||
extern const struct wl_interface wl_keyboard_interface;
|
||||
extern const struct wl_interface wl_output_interface;
|
||||
extern const struct wl_interface wl_surface_interface;
|
||||
extern const struct wl_interface zwp_input_method_context_v1_interface;
|
||||
extern const struct wl_interface zwp_input_panel_surface_v1_interface;
|
||||
|
||||
static const struct wl_interface *types[] = {
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
&wl_keyboard_interface,
|
||||
&zwp_input_method_context_v1_interface,
|
||||
&zwp_input_method_context_v1_interface,
|
||||
&zwp_input_panel_surface_v1_interface,
|
||||
&wl_surface_interface,
|
||||
&wl_output_interface,
|
||||
NULL,
|
||||
};
|
||||
|
||||
static const struct wl_message zwp_input_method_context_v1_requests[] = {
|
||||
{ "destroy", "", types + 0 },
|
||||
{ "commit_string", "us", types + 0 },
|
||||
{ "preedit_string", "uss", types + 0 },
|
||||
{ "preedit_styling", "uuu", types + 0 },
|
||||
{ "preedit_cursor", "i", types + 0 },
|
||||
{ "delete_surrounding_text", "iu", types + 0 },
|
||||
{ "cursor_position", "ii", types + 0 },
|
||||
{ "modifiers_map", "a", types + 0 },
|
||||
{ "keysym", "uuuuu", types + 0 },
|
||||
{ "grab_keyboard", "n", types + 5 },
|
||||
{ "key", "uuuu", types + 0 },
|
||||
{ "modifiers", "uuuuu", types + 0 },
|
||||
{ "language", "us", types + 0 },
|
||||
{ "text_direction", "uu", types + 0 },
|
||||
};
|
||||
|
||||
static const struct wl_message zwp_input_method_context_v1_events[] = {
|
||||
{ "surrounding_text", "suu", types + 0 },
|
||||
{ "reset", "", types + 0 },
|
||||
{ "content_type", "uu", types + 0 },
|
||||
{ "invoke_action", "uu", types + 0 },
|
||||
{ "commit_state", "u", types + 0 },
|
||||
{ "preferred_language", "s", types + 0 },
|
||||
};
|
||||
|
||||
WL_EXPORT const struct wl_interface zwp_input_method_context_v1_interface = {
|
||||
"zwp_input_method_context_v1", 1,
|
||||
14, zwp_input_method_context_v1_requests,
|
||||
6, zwp_input_method_context_v1_events,
|
||||
};
|
||||
|
||||
static const struct wl_message zwp_input_method_v1_events[] = {
|
||||
{ "activate", "n", types + 6 },
|
||||
{ "deactivate", "o", types + 7 },
|
||||
};
|
||||
|
||||
WL_EXPORT const struct wl_interface zwp_input_method_v1_interface = {
|
||||
"zwp_input_method_v1", 1,
|
||||
0, NULL,
|
||||
2, zwp_input_method_v1_events,
|
||||
};
|
||||
|
||||
static const struct wl_message zwp_input_panel_v1_requests[] = {
|
||||
{ "get_input_panel_surface", "no", types + 8 },
|
||||
};
|
||||
|
||||
WL_EXPORT const struct wl_interface zwp_input_panel_v1_interface = {
|
||||
"zwp_input_panel_v1", 1,
|
||||
1, zwp_input_panel_v1_requests,
|
||||
0, NULL,
|
||||
};
|
||||
|
||||
static const struct wl_message zwp_input_panel_surface_v1_requests[] = {
|
||||
{ "set_toplevel", "ou", types + 10 },
|
||||
{ "set_overlay_panel", "", types + 0 },
|
||||
};
|
||||
|
||||
WL_EXPORT const struct wl_interface zwp_input_panel_surface_v1_interface = {
|
||||
"zwp_input_panel_surface_v1", 1,
|
||||
2, zwp_input_panel_surface_v1_requests,
|
||||
0, NULL,
|
||||
};
|
||||
|
|
@ -1,8 +1,9 @@
|
|||
/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
|
||||
/* vim:set et sts=4: */
|
||||
/* ibus - The Input Bus
|
||||
* Copyright (C) 2019 Takao Fujiwara <takao.fujiwara1@gmail.com>
|
||||
* Copyright (C) 2013 Intel Corporation
|
||||
* Copyright (C) 2013 Red Hat, Inc.
|
||||
* Copyright (C) 2013-2019 Red Hat, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
|
@ -29,12 +30,12 @@
|
|||
#include <wayland-client.h>
|
||||
#include <xkbcommon/xkbcommon.h>
|
||||
|
||||
#include "input-method-client-protocol.h"
|
||||
#include "input-method-unstable-v1-client-protocol.h"
|
||||
|
||||
struct _IBusWaylandIM
|
||||
{
|
||||
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_keyboard *keyboard;
|
||||
|
||||
IBusInputContext *ibuscontext;
|
||||
|
@ -67,7 +68,7 @@ typedef struct _IBusWaylandIM IBusWaylandIM;
|
|||
|
||||
struct _IBusWaylandKeyEvent
|
||||
{
|
||||
struct wl_input_method_context *context;
|
||||
struct zwp_input_method_context_v1 *context;
|
||||
uint32_t serial;
|
||||
uint32_t time;
|
||||
uint32_t key;
|
||||
|
@ -183,9 +184,9 @@ _context_commit_text_cb (IBusInputContext *context,
|
|||
IBusText *text,
|
||||
IBusWaylandIM *wlim)
|
||||
{
|
||||
wl_input_method_context_commit_string (wlim->context,
|
||||
wlim->serial,
|
||||
text->text);
|
||||
zwp_input_method_context_v1_commit_string (wlim->context,
|
||||
wlim->serial,
|
||||
text->text);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -202,12 +203,12 @@ _context_forward_key_event_cb (IBusInputContext *context,
|
|||
else
|
||||
state = WL_KEYBOARD_KEY_STATE_PRESSED;
|
||||
|
||||
wl_input_method_context_keysym (wlim->context,
|
||||
wlim->serial,
|
||||
0,
|
||||
keyval,
|
||||
state,
|
||||
modifiers);
|
||||
zwp_input_method_context_v1_keysym (wlim->context,
|
||||
wlim->serial,
|
||||
0,
|
||||
keyval,
|
||||
state,
|
||||
modifiers);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -220,22 +221,22 @@ _context_show_preedit_text_cb (IBusInputContext *context,
|
|||
wlim->preedit_cursor_pos) -
|
||||
wlim->preedit_text->text;
|
||||
|
||||
wl_input_method_context_preedit_cursor (wlim->context,
|
||||
cursor);
|
||||
wl_input_method_context_preedit_string (wlim->context,
|
||||
wlim->serial,
|
||||
wlim->preedit_text->text,
|
||||
wlim->preedit_text->text);
|
||||
zwp_input_method_context_v1_preedit_cursor (wlim->context,
|
||||
cursor);
|
||||
zwp_input_method_context_v1_preedit_string (wlim->context,
|
||||
wlim->serial,
|
||||
wlim->preedit_text->text,
|
||||
wlim->preedit_text->text);
|
||||
}
|
||||
|
||||
static void
|
||||
_context_hide_preedit_text_cb (IBusInputContext *context,
|
||||
IBusWaylandIM *wlim)
|
||||
{
|
||||
wl_input_method_context_preedit_string (wlim->context,
|
||||
wlim->serial,
|
||||
"",
|
||||
"");
|
||||
zwp_input_method_context_v1_preedit_string (wlim->context,
|
||||
wlim->serial,
|
||||
"",
|
||||
"");
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -257,11 +258,11 @@ _context_update_preedit_text_cb (IBusInputContext *context,
|
|||
}
|
||||
|
||||
static void
|
||||
handle_surrounding_text (void *data,
|
||||
struct wl_input_method_context *context,
|
||||
const char *text,
|
||||
uint32_t cursor,
|
||||
uint32_t anchor)
|
||||
handle_surrounding_text (void *data,
|
||||
struct zwp_input_method_context_v1 *context,
|
||||
const char *text,
|
||||
uint32_t cursor,
|
||||
uint32_t anchor)
|
||||
{
|
||||
#if ENABLE_SURROUNDING
|
||||
IBusWaylandIM *wlim = data;
|
||||
|
@ -283,30 +284,30 @@ handle_surrounding_text (void *data,
|
|||
|
||||
static void
|
||||
handle_reset (void *data,
|
||||
struct wl_input_method_context *context)
|
||||
struct zwp_input_method_context_v1 *context)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
handle_content_type (void *data,
|
||||
struct wl_input_method_context *context,
|
||||
uint32_t hint,
|
||||
uint32_t purpose)
|
||||
handle_content_type (void *data,
|
||||
struct zwp_input_method_context_v1 *context,
|
||||
uint32_t hint,
|
||||
uint32_t purpose)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
handle_invoke_action (void *data,
|
||||
struct wl_input_method_context *context,
|
||||
uint32_t button,
|
||||
uint32_t index)
|
||||
handle_invoke_action (void *data,
|
||||
struct zwp_input_method_context_v1 *context,
|
||||
uint32_t button,
|
||||
uint32_t index)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
handle_commit_state (void *data,
|
||||
struct wl_input_method_context *context,
|
||||
uint32_t serial)
|
||||
handle_commit_state (void *data,
|
||||
struct zwp_input_method_context_v1 *context,
|
||||
uint32_t serial)
|
||||
{
|
||||
IBusWaylandIM *wlim = data;
|
||||
|
||||
|
@ -314,13 +315,13 @@ handle_commit_state (void *data,
|
|||
}
|
||||
|
||||
static void
|
||||
handle_preferred_language (void *data,
|
||||
struct wl_input_method_context *context,
|
||||
const char *language)
|
||||
handle_preferred_language (void *data,
|
||||
struct zwp_input_method_context_v1 *context,
|
||||
const char *language)
|
||||
{
|
||||
}
|
||||
|
||||
static const struct wl_input_method_context_listener context_listener = {
|
||||
static const struct zwp_input_method_context_v1_listener context_listener = {
|
||||
handle_surrounding_text,
|
||||
handle_reset,
|
||||
handle_content_type,
|
||||
|
@ -415,11 +416,11 @@ _process_key_event_done (GObject *object,
|
|||
}
|
||||
|
||||
if (!retval) {
|
||||
wl_input_method_context_key (event->context,
|
||||
event->serial,
|
||||
event->time,
|
||||
event->key,
|
||||
event->state);
|
||||
zwp_input_method_context_v1_key (event->context,
|
||||
event->serial,
|
||||
event->time,
|
||||
event->key,
|
||||
event->state);
|
||||
}
|
||||
|
||||
g_free (event);
|
||||
|
@ -444,11 +445,11 @@ input_method_keyboard_key (void *data,
|
|||
return;
|
||||
|
||||
if (!wlim->ibuscontext) {
|
||||
wl_input_method_context_key (wlim->context,
|
||||
serial,
|
||||
time,
|
||||
key,
|
||||
state);
|
||||
zwp_input_method_context_v1_key (wlim->context,
|
||||
serial,
|
||||
time,
|
||||
key,
|
||||
state);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -470,11 +471,11 @@ input_method_keyboard_key (void *data,
|
|||
code,
|
||||
modifiers);
|
||||
if (!retval) {
|
||||
wl_input_method_context_key (wlim->context,
|
||||
serial,
|
||||
time,
|
||||
key,
|
||||
state);
|
||||
zwp_input_method_context_v1_key (wlim->context,
|
||||
serial,
|
||||
time,
|
||||
key,
|
||||
state);
|
||||
}
|
||||
} else {
|
||||
IBusWaylandKeyEvent *event = g_new (IBusWaylandKeyEvent, 1);
|
||||
|
@ -504,7 +505,7 @@ input_method_keyboard_modifiers (void *data,
|
|||
uint32_t group)
|
||||
{
|
||||
IBusWaylandIM *wlim = data;
|
||||
struct wl_input_method_context *context = wlim->context;
|
||||
struct zwp_input_method_context_v1 *context = wlim->context;
|
||||
xkb_mod_mask_t mask;
|
||||
|
||||
xkb_state_update_mask (wlim->state, mods_depressed,
|
||||
|
@ -537,9 +538,9 @@ input_method_keyboard_modifiers (void *data,
|
|||
if (mask & wlim->meta_mask)
|
||||
wlim->modifiers |= IBUS_META_MASK;
|
||||
|
||||
wl_input_method_context_modifiers (context, serial,
|
||||
mods_depressed, mods_latched,
|
||||
mods_locked, group);
|
||||
zwp_input_method_context_v1_modifiers (context, serial,
|
||||
mods_depressed, mods_latched,
|
||||
mods_locked, group);
|
||||
}
|
||||
|
||||
static const struct wl_keyboard_listener keyboard_listener = {
|
||||
|
@ -606,25 +607,25 @@ _create_input_context_done (GObject *object,
|
|||
}
|
||||
|
||||
static void
|
||||
input_method_activate (void *data,
|
||||
struct wl_input_method *input_method,
|
||||
struct wl_input_method_context *context)
|
||||
input_method_activate (void *data,
|
||||
struct zwp_input_method_v1 *input_method,
|
||||
struct zwp_input_method_context_v1 *context)
|
||||
{
|
||||
IBusWaylandIM *wlim = data;
|
||||
|
||||
if (wlim->context) {
|
||||
wl_input_method_context_destroy (wlim->context);
|
||||
zwp_input_method_context_v1_destroy (wlim->context);
|
||||
wlim->context = NULL;
|
||||
}
|
||||
|
||||
wlim->serial = 0;
|
||||
wlim->context = context;
|
||||
|
||||
wl_input_method_context_add_listener (context, &context_listener, wlim);
|
||||
wlim->keyboard = wl_input_method_context_grab_keyboard (context);
|
||||
wl_keyboard_add_listener(wlim->keyboard,
|
||||
&keyboard_listener,
|
||||
wlim);
|
||||
zwp_input_method_context_v1_add_listener (context, &context_listener, wlim);
|
||||
wlim->keyboard = zwp_input_method_context_v1_grab_keyboard (context);
|
||||
wl_keyboard_add_listener (wlim->keyboard,
|
||||
&keyboard_listener,
|
||||
wlim);
|
||||
|
||||
if (wlim->ibuscontext) {
|
||||
g_object_unref (wlim->ibuscontext);
|
||||
|
@ -641,9 +642,9 @@ input_method_activate (void *data,
|
|||
}
|
||||
|
||||
static void
|
||||
input_method_deactivate (void *data,
|
||||
struct wl_input_method *input_method,
|
||||
struct wl_input_method_context *context)
|
||||
input_method_deactivate (void *data,
|
||||
struct zwp_input_method_v1 *input_method,
|
||||
struct zwp_input_method_context_v1 *context)
|
||||
{
|
||||
IBusWaylandIM *wlim = data;
|
||||
|
||||
|
@ -666,12 +667,12 @@ input_method_deactivate (void *data,
|
|||
}
|
||||
|
||||
if (wlim->context) {
|
||||
wl_input_method_context_destroy (wlim->context);
|
||||
zwp_input_method_context_v1_destroy (wlim->context);
|
||||
wlim->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
|
||||
};
|
||||
|
@ -685,11 +686,12 @@ registry_handle_global (void *data,
|
|||
{
|
||||
IBusWaylandIM *wlim = data;
|
||||
|
||||
if (!g_strcmp0 (interface, "wl_input_method")) {
|
||||
if (!g_strcmp0 (interface, "zwp_input_method_v1")) {
|
||||
wlim->input_method =
|
||||
wl_registry_bind (registry, name, &wl_input_method_interface, 1);
|
||||
wl_input_method_add_listener (wlim->input_method,
|
||||
&input_method_listener, wlim);
|
||||
wl_registry_bind (registry, name,
|
||||
&zwp_input_method_v1_interface, 1);
|
||||
zwp_input_method_v1_add_listener (wlim->input_method,
|
||||
&input_method_listener, wlim);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -289,6 +289,11 @@ if test x"$enable_wayland" = x"yes"; then
|
|||
wayland-client >= 1.2.0
|
||||
xkbcommon
|
||||
])
|
||||
m4_ifdef([WAYLAND_SCANNER_RULES],
|
||||
[WAYLAND_PRTCLS_SUBDIR='wayland-protocols/unstable/input-method'
|
||||
AC_SUBST(WAYLAND_PRTCLS_SUBDIR)
|
||||
WAYLAND_SCANNER_RULES(['$(datadir)/$(WAYLAND_PRTCLS_SUBDIR)'])],
|
||||
[AC_SUBST(wayland_scanner_rules)])
|
||||
else
|
||||
enable_wayland="no (disabled, use --enable-wayland to enable)"
|
||||
fi
|
||||
|
|
Загрузка…
Ссылка в новой задаче