/* Generated by wayland-scanner 1.23.0 */ #ifndef TEXT_INPUT_UNSTABLE_V3_SERVER_PROTOCOL_H #define TEXT_INPUT_UNSTABLE_V3_SERVER_PROTOCOL_H #include <stdint.h> #include <stddef.h> #include "wayland-server.h" #ifdef __cplusplus extern "C" { #endif struct wl_client; struct wl_resource; /** * @page page_text_input_unstable_v3 The text_input_unstable_v3 protocol * Protocol for composing text * * @section page_desc_text_input_unstable_v3 Description * * This protocol allows compositors to act as input methods and to send text * to applications. A text input object is used to manage state of what are * typically text entry fields in the application. * * This document adheres to the RFC 2119 when using words like "must", * "should", "may", etc. * * 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_ifaces_text_input_unstable_v3 Interfaces * - @subpage page_iface_zwp_text_input_v3 - text input * - @subpage page_iface_zwp_text_input_manager_v3 - text input manager * @section page_copyright_text_input_unstable_v3 Copyright * <pre> * * Copyright © 2012, 2013 Intel Corporation * Copyright © 2015, 2016 Jan Arne Petersen * Copyright © 2017, 2018 Red Hat, Inc. * Copyright © 2018 Purism SPC * * 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. * </pre> */ struct wl_seat; struct wl_surface; struct zwp_text_input_manager_v3; struct zwp_text_input_v3; #ifndef ZWP_TEXT_INPUT_V3_INTERFACE #define ZWP_TEXT_INPUT_V3_INTERFACE /** * @page page_iface_zwp_text_input_v3 zwp_text_input_v3 * @section page_iface_zwp_text_input_v3_desc Description * * The zwp_text_input_v3 interface represents text input and input methods * associated with a seat. It provides enter/leave events to follow the * text input focus for a seat. * * Requests are used to enable/disable the text-input object and set * state information like surrounding and selected text or the content type. * The information about the entered text is sent to the text-input object * via the preedit_string and commit_string events. * * Text is valid UTF-8 encoded, indices and lengths are in bytes. Indices * must not point to middle bytes inside a code point: they must either * point to the first byte of a code point or to the end of the buffer. * Lengths must be measured between two valid indices. * * Focus moving throughout surfaces will result in the emission of * zwp_text_input_v3.enter and zwp_text_input_v3.leave events. The focused * surface must commit zwp_text_input_v3.enable and * zwp_text_input_v3.disable requests as the keyboard focus moves across * editable and non-editable elements of the UI. Those two requests are not * expected to be paired with each other, the compositor must be able to * handle consecutive series of the same request. * * State is sent by the state requests (set_surrounding_text, * set_content_type and set_cursor_rectangle) and a commit request. After an * enter event or disable request all state information is invalidated and * needs to be resent by the client. * @section page_iface_zwp_text_input_v3_api API * See @ref iface_zwp_text_input_v3. */ /** * @defgroup iface_zwp_text_input_v3 The zwp_text_input_v3 interface * * The zwp_text_input_v3 interface represents text input and input methods * associated with a seat. It provides enter/leave events to follow the * text input focus for a seat. * * Requests are used to enable/disable the text-input object and set * state information like surrounding and selected text or the content type. * The information about the entered text is sent to the text-input object * via the preedit_string and commit_string events. * * Text is valid UTF-8 encoded, indices and lengths are in bytes. Indices * must not point to middle bytes inside a code point: they must either * point to the first byte of a code point or to the end of the buffer. * Lengths must be measured between two valid indices. * * Focus moving throughout surfaces will result in the emission of * zwp_text_input_v3.enter and zwp_text_input_v3.leave events. The focused * surface must commit zwp_text_input_v3.enable and * zwp_text_input_v3.disable requests as the keyboard focus moves across * editable and non-editable elements of the UI. Those two requests are not * expected to be paired with each other, the compositor must be able to * handle consecutive series of the same request. * * State is sent by the state requests (set_surrounding_text, * set_content_type and set_cursor_rectangle) and a commit request. After an * enter event or disable request all state information is invalidated and * needs to be resent by the client. */ extern const struct wl_interface zwp_text_input_v3_interface; #endif #ifndef ZWP_TEXT_INPUT_MANAGER_V3_INTERFACE #define ZWP_TEXT_INPUT_MANAGER_V3_INTERFACE /** * @page page_iface_zwp_text_input_manager_v3 zwp_text_input_manager_v3 * @section page_iface_zwp_text_input_manager_v3_desc Description * * A factory for text-input objects. This object is a global singleton. * @section page_iface_zwp_text_input_manager_v3_api API * See @ref iface_zwp_text_input_manager_v3. */ /** * @defgroup iface_zwp_text_input_manager_v3 The zwp_text_input_manager_v3 interface * * A factory for text-input objects. This object is a global singleton. */ extern const struct wl_interface zwp_text_input_manager_v3_interface; #endif #ifndef ZWP_TEXT_INPUT_V3_CHANGE_CAUSE_ENUM #define ZWP_TEXT_INPUT_V3_CHANGE_CAUSE_ENUM /** * @ingroup iface_zwp_text_input_v3 * text change reason * * Reason for the change of surrounding text or cursor posision. */ enum zwp_text_input_v3_change_cause { … }; /** * @ingroup iface_zwp_text_input_v3 * Validate a zwp_text_input_v3 change_cause value. * * @return true on success, false on error. * @ref zwp_text_input_v3_change_cause */ static inline bool zwp_text_input_v3_change_cause_is_valid(uint32_t value, uint32_t version) { … } #endif /* ZWP_TEXT_INPUT_V3_CHANGE_CAUSE_ENUM */ #ifndef ZWP_TEXT_INPUT_V3_CONTENT_HINT_ENUM #define ZWP_TEXT_INPUT_V3_CONTENT_HINT_ENUM /** * @ingroup iface_zwp_text_input_v3 * content hint * * Content hint is a bitmask to allow to modify the behavior of the text * input. */ enum zwp_text_input_v3_content_hint { … }; /** * @ingroup iface_zwp_text_input_v3 * Validate a zwp_text_input_v3 content_hint value. * * @return true on success, false on error. * @ref zwp_text_input_v3_content_hint */ static inline bool zwp_text_input_v3_content_hint_is_valid(uint32_t value, uint32_t version) { … } #endif /* ZWP_TEXT_INPUT_V3_CONTENT_HINT_ENUM */ #ifndef ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_ENUM #define ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_ENUM /** * @ingroup iface_zwp_text_input_v3 * content purpose * * The content purpose allows to specify the primary purpose of a text * input. * * This allows an input method to show special purpose input panels with * extra characters or to disallow some characters. */ enum zwp_text_input_v3_content_purpose { … }; /** * @ingroup iface_zwp_text_input_v3 * Validate a zwp_text_input_v3 content_purpose value. * * @return true on success, false on error. * @ref zwp_text_input_v3_content_purpose */ static inline bool zwp_text_input_v3_content_purpose_is_valid(uint32_t value, uint32_t version) { … } #endif /* ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_ENUM */ /** * @ingroup iface_zwp_text_input_v3 * @struct zwp_text_input_v3_interface */ struct zwp_text_input_v3_interface { … }; #define ZWP_TEXT_INPUT_V3_ENTER … #define ZWP_TEXT_INPUT_V3_LEAVE … #define ZWP_TEXT_INPUT_V3_PREEDIT_STRING … #define ZWP_TEXT_INPUT_V3_COMMIT_STRING … #define ZWP_TEXT_INPUT_V3_DELETE_SURROUNDING_TEXT … #define ZWP_TEXT_INPUT_V3_DONE … /** * @ingroup iface_zwp_text_input_v3 */ #define ZWP_TEXT_INPUT_V3_ENTER_SINCE_VERSION … /** * @ingroup iface_zwp_text_input_v3 */ #define ZWP_TEXT_INPUT_V3_LEAVE_SINCE_VERSION … /** * @ingroup iface_zwp_text_input_v3 */ #define ZWP_TEXT_INPUT_V3_PREEDIT_STRING_SINCE_VERSION … /** * @ingroup iface_zwp_text_input_v3 */ #define ZWP_TEXT_INPUT_V3_COMMIT_STRING_SINCE_VERSION … /** * @ingroup iface_zwp_text_input_v3 */ #define ZWP_TEXT_INPUT_V3_DELETE_SURROUNDING_TEXT_SINCE_VERSION … /** * @ingroup iface_zwp_text_input_v3 */ #define ZWP_TEXT_INPUT_V3_DONE_SINCE_VERSION … /** * @ingroup iface_zwp_text_input_v3 */ #define ZWP_TEXT_INPUT_V3_DESTROY_SINCE_VERSION … /** * @ingroup iface_zwp_text_input_v3 */ #define ZWP_TEXT_INPUT_V3_ENABLE_SINCE_VERSION … /** * @ingroup iface_zwp_text_input_v3 */ #define ZWP_TEXT_INPUT_V3_DISABLE_SINCE_VERSION … /** * @ingroup iface_zwp_text_input_v3 */ #define ZWP_TEXT_INPUT_V3_SET_SURROUNDING_TEXT_SINCE_VERSION … /** * @ingroup iface_zwp_text_input_v3 */ #define ZWP_TEXT_INPUT_V3_SET_TEXT_CHANGE_CAUSE_SINCE_VERSION … /** * @ingroup iface_zwp_text_input_v3 */ #define ZWP_TEXT_INPUT_V3_SET_CONTENT_TYPE_SINCE_VERSION … /** * @ingroup iface_zwp_text_input_v3 */ #define ZWP_TEXT_INPUT_V3_SET_CURSOR_RECTANGLE_SINCE_VERSION … /** * @ingroup iface_zwp_text_input_v3 */ #define ZWP_TEXT_INPUT_V3_COMMIT_SINCE_VERSION … /** * @ingroup iface_zwp_text_input_v3 * Sends an enter event to the client owning the resource. * @param resource_ The client's resource */ static inline void zwp_text_input_v3_send_enter(struct wl_resource *resource_, struct wl_resource *surface) { … } /** * @ingroup iface_zwp_text_input_v3 * Sends an leave event to the client owning the resource. * @param resource_ The client's resource */ static inline void zwp_text_input_v3_send_leave(struct wl_resource *resource_, struct wl_resource *surface) { … } /** * @ingroup iface_zwp_text_input_v3 * Sends an preedit_string event to the client owning the resource. * @param resource_ The client's resource */ static inline void zwp_text_input_v3_send_preedit_string(struct wl_resource *resource_, const char *text, int32_t cursor_begin, int32_t cursor_end) { … } /** * @ingroup iface_zwp_text_input_v3 * Sends an commit_string event to the client owning the resource. * @param resource_ The client's resource */ static inline void zwp_text_input_v3_send_commit_string(struct wl_resource *resource_, const char *text) { … } /** * @ingroup iface_zwp_text_input_v3 * Sends an delete_surrounding_text event to the client owning the resource. * @param resource_ The client's resource * @param before_length length of text before current cursor position * @param after_length length of text after current cursor position */ static inline void zwp_text_input_v3_send_delete_surrounding_text(struct wl_resource *resource_, uint32_t before_length, uint32_t after_length) { … } /** * @ingroup iface_zwp_text_input_v3 * Sends an done event to the client owning the resource. * @param resource_ The client's resource */ static inline void zwp_text_input_v3_send_done(struct wl_resource *resource_, uint32_t serial) { … } /** * @ingroup iface_zwp_text_input_manager_v3 * @struct zwp_text_input_manager_v3_interface */ struct zwp_text_input_manager_v3_interface { … }; /** * @ingroup iface_zwp_text_input_manager_v3 */ #define ZWP_TEXT_INPUT_MANAGER_V3_DESTROY_SINCE_VERSION … /** * @ingroup iface_zwp_text_input_manager_v3 */ #define ZWP_TEXT_INPUT_MANAGER_V3_GET_TEXT_INPUT_SINCE_VERSION … #ifdef __cplusplus } #endif #endif