mutter/src/wayland/meta-wayland-text-input.h
Carlos Garnacho 62c9713361 wayland: Implement text input protocol
This is the implementation of the internal text-input protocol that will
be used to communicate IMs (to be implemented by gnome-shell) with clients.
The text_input protocol has its own focus expressed through enter/leave
events, that will typically follow the keyboard's.

The client will be able to communicate its current status (eg. focus state,
cursor rectangle in surface coordinates, text surrounding the cursor
position, ...) and will receive commands from the compositor (eg. preedit
text, committing a string, ...).

Whenever there is an active input method, the compositor will route key
events directly through it. The client will not receive wl_keyboard
events if the event is consumed by the IM.
2018-01-18 16:20:45 +01:00

47 lines
1.7 KiB
C

/*
* Copyright (C) 2017 Red Hat
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*
* Author: Carlos Garnacho <carlosg@gnome.org>
*/
#ifndef META_WAYLAND_TEXT_INPUT_H
#define META_WAYLAND_TEXT_INPUT_H
#include <wayland-server.h>
#include "wayland/meta-wayland-types.h"
#include "meta/window.h"
#define META_TYPE_WAYLAND_TEXT_INPUT (meta_wayland_text_input_get_type ())
G_DECLARE_FINAL_TYPE (MetaWaylandTextInput,
meta_wayland_text_input,
META, WAYLAND_TEXT_INPUT,
GObject);
MetaWaylandTextInput * meta_wayland_text_input_new (MetaWaylandSeat *seat);
void meta_wayland_text_input_destroy (MetaWaylandTextInput *text_input);
gboolean meta_wayland_text_input_init (MetaWaylandCompositor *compositor);
void meta_wayland_text_input_set_focus (MetaWaylandTextInput *text_input,
MetaWaylandSurface *surface);
gboolean meta_wayland_text_input_handle_event (MetaWaylandTextInput *text_input,
const ClutterEvent *event);
#endif /* META_WAYLAND_TEXT_INPUT_H */