From 2047b56c80b75dd0e7c203f0cbfea92ada761fc5 Mon Sep 17 00:00:00 2001 From: David Herrmann Date: Mon, 7 Jan 2013 19:22:38 +0100 Subject: [PATCH] uterm: move input related API to uterm_input.h This splits off the uterm-input API from uterm.h to avoid depending on uterm.h everywhere. Signed-off-by: David Herrmann --- Makefile.am | 2 + src/kmscon_cdev.c | 2 +- src/kmscon_main.c | 1 + src/kmscon_seat.c | 1 + src/kmscon_seat.h | 1 + src/kmscon_terminal.c | 2 +- src/uterm.h | 68 +--------------------------- src/uterm_input.c | 2 +- src/uterm_input.h | 91 ++++++++++++++++++++++++++++++++++++++ src/uterm_input_internal.h | 2 +- src/uterm_input_uxkb.c | 2 +- src/uterm_vt.c | 1 + 12 files changed, 103 insertions(+), 72 deletions(-) create mode 100644 src/uterm_input.h diff --git a/Makefile.am b/Makefile.am index 5e6203c..f8e1f36 100644 --- a/Makefile.am +++ b/Makefile.am @@ -220,6 +220,7 @@ if BUILD_ENABLE_UTERM lib_LTLIBRARIES += libuterm.la include_HEADERS += \ src/uterm.h \ + src/uterm_input.h \ src/uterm_video.h pkgconfig_DATA += docs/pc/libuterm.pc endif @@ -229,6 +230,7 @@ libuterm_la_SOURCES = \ $(SHL_HOOK) \ $(SHL_MISC) \ src/uterm.h \ + src/uterm_input.h \ src/uterm_video.h \ src/uterm_input_internal.h \ src/uterm_video_internal.h \ diff --git a/src/kmscon_cdev.c b/src/kmscon_cdev.c index 845e09b..e4f4514 100644 --- a/src/kmscon_cdev.c +++ b/src/kmscon_cdev.c @@ -50,7 +50,7 @@ #include "shl_ring.h" #include "tsm_screen.h" #include "tsm_vte.h" -#include "uterm.h" +#include "uterm_input.h" #include #include diff --git a/src/kmscon_main.c b/src/kmscon_main.c index 3385445..01cca6c 100644 --- a/src/kmscon_main.c +++ b/src/kmscon_main.c @@ -41,6 +41,7 @@ #include "shl_misc.h" #include "text.h" #include "uterm.h" +#include "uterm_input.h" #include "uterm_video.h" struct app_video { diff --git a/src/kmscon_seat.c b/src/kmscon_seat.c index aaba005..0315dfd 100644 --- a/src/kmscon_seat.c +++ b/src/kmscon_seat.c @@ -42,6 +42,7 @@ #include "log.h" #include "shl_dlist.h" #include "uterm.h" +#include "uterm_input.h" #include "uterm_video.h" #define LOG_SUBSYSTEM "seat" diff --git a/src/kmscon_seat.h b/src/kmscon_seat.h index 398d073..8968c58 100644 --- a/src/kmscon_seat.h +++ b/src/kmscon_seat.h @@ -37,6 +37,7 @@ #include "conf.h" #include "eloop.h" #include "uterm.h" +#include "uterm_input.h" #include "uterm_video.h" struct kmscon_seat; diff --git a/src/kmscon_terminal.c b/src/kmscon_terminal.c index a90228d..4e9cf80 100644 --- a/src/kmscon_terminal.c +++ b/src/kmscon_terminal.c @@ -45,7 +45,7 @@ #include "text.h" #include "tsm_screen.h" #include "tsm_vte.h" -#include "uterm.h" +#include "uterm_input.h" #include "uterm_video.h" #define LOG_SUBSYSTEM "terminal" diff --git a/src/uterm.h b/src/uterm.h index 39ff67e..3ab332b 100644 --- a/src/uterm.h +++ b/src/uterm.h @@ -42,73 +42,7 @@ #include #include #include - -/* - * Input Devices - * This input object can combine multiple linux input devices into a single - * device and notifies the application about events. It has several different - * keyboard backends so the full XKB feature set is available. - */ - -struct uterm_input; - -/* keep in sync with shl_xkb_mods */ -enum uterm_input_modifier { - UTERM_SHIFT_MASK = (1 << 0), - UTERM_LOCK_MASK = (1 << 1), - UTERM_CONTROL_MASK = (1 << 2), - UTERM_ALT_MASK = (1 << 3), - UTERM_LOGO_MASK = (1 << 4), -}; - -/* keep in sync with TSM_VTE_INVALID */ -#define UTERM_INPUT_INVALID 0xffffffff - -struct uterm_input_event { - bool handled; /* user-controlled, default is false */ - uint16_t keycode; /* linux keycode - KEY_* - linux/input.h */ - uint32_t ascii; /* ascii keysym for @keycode */ - unsigned int mods; /* active modifiers - uterm_modifier mask */ - - unsigned int num_syms; /* number of keysyms */ - uint32_t *keysyms; /* XKB-common keysym-array - XKB_KEY_* */ - uint32_t *codepoints; /* ucs4 unicode value or UTERM_INPUT_INVALID */ -}; - -#define UTERM_INPUT_HAS_MODS(_ev, _mods) (((_ev)->mods & (_mods)) == (_mods)) - -typedef void (*uterm_input_cb) (struct uterm_input *input, - struct uterm_input_event *ev, - void *data); - -int uterm_input_new(struct uterm_input **out, struct ev_eloop *eloop, - const char *model, - const char *layout, - const char *variant, - const char *options, - unsigned int repeat_delay, - unsigned int repeat_rate); -void uterm_input_ref(struct uterm_input *input); -void uterm_input_unref(struct uterm_input *input); - -void uterm_input_add_dev(struct uterm_input *input, const char *node); -void uterm_input_remove_dev(struct uterm_input *input, const char *node); - -int uterm_input_register_cb(struct uterm_input *input, - uterm_input_cb cb, - void *data); -void uterm_input_unregister_cb(struct uterm_input *input, - uterm_input_cb cb, - void *data); - -void uterm_input_sleep(struct uterm_input *input); -void uterm_input_wake_up(struct uterm_input *input); -bool uterm_input_is_awake(struct uterm_input *input); - -void uterm_input_keysym_to_string(struct uterm_input *input, - uint32_t keysym, char *str, size_t size); -int uterm_input_string_to_keysym(struct uterm_input *input, const char *n, - uint32_t *out); +#include /* * Virtual Terminals diff --git a/src/uterm_input.c b/src/uterm_input.c index 8c883d6..64caf58 100644 --- a/src/uterm_input.c +++ b/src/uterm_input.c @@ -40,7 +40,7 @@ #include "log.h" #include "shl_dlist.h" #include "shl_hook.h" -#include "uterm.h" +#include "uterm_input.h" #include "uterm_input_internal.h" #define LOG_SUBSYSTEM "input" diff --git a/src/uterm_input.h b/src/uterm_input.h new file mode 100644 index 0000000..36f5de2 --- /dev/null +++ b/src/uterm_input.h @@ -0,0 +1,91 @@ +/* + * uterm - Linux User-Space Terminal Input Handling + * + * Copyright (c) 2011-2013 David Herrmann + * + * 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 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. + */ + +/* + * Input Devices + * This input object can combine multiple linux input devices into a single + * device and notifies the application about events. It has several different + * keyboard backends so the full XKB feature set is available. + */ + +#ifndef UTERM_UTERM_INPUT_H +#define UTERM_UTERM_INPUT_H + +#include +#include +#include +#include + +struct uterm_input; + +/* keep in sync with shl_xkb_mods */ +enum uterm_input_modifier { + UTERM_SHIFT_MASK = (1 << 0), + UTERM_LOCK_MASK = (1 << 1), + UTERM_CONTROL_MASK = (1 << 2), + UTERM_ALT_MASK = (1 << 3), + UTERM_LOGO_MASK = (1 << 4), +}; + +/* keep in sync with TSM_VTE_INVALID */ +#define UTERM_INPUT_INVALID 0xffffffff + +struct uterm_input_event { + bool handled; /* user-controlled, default is false */ + uint16_t keycode; /* linux keycode - KEY_* - linux/input.h */ + uint32_t ascii; /* ascii keysym for @keycode */ + unsigned int mods; /* active modifiers - uterm_modifier mask */ + + unsigned int num_syms; /* number of keysyms */ + uint32_t *keysyms; /* XKB-common keysym-array - XKB_KEY_* */ + uint32_t *codepoints; /* ucs4 unicode value or UTERM_INPUT_INVALID */ +}; + +#define UTERM_INPUT_HAS_MODS(_ev, _mods) (((_ev)->mods & (_mods)) == (_mods)) + +typedef void (*uterm_input_cb) (struct uterm_input *input, + struct uterm_input_event *ev, + void *data); + +int uterm_input_new(struct uterm_input **out, struct ev_eloop *eloop, + const char *model, const char *layout, const char *variant, + const char *options, unsigned int repeat_delay, + unsigned int repeat_rate); +void uterm_input_ref(struct uterm_input *input); +void uterm_input_unref(struct uterm_input *input); + +void uterm_input_add_dev(struct uterm_input *input, const char *node); +void uterm_input_remove_dev(struct uterm_input *input, const char *node); + +int uterm_input_register_cb(struct uterm_input *input, uterm_input_cb cb, + void *data); +void uterm_input_unregister_cb(struct uterm_input *input, uterm_input_cb cb, + void *data); + +void uterm_input_sleep(struct uterm_input *input); +void uterm_input_wake_up(struct uterm_input *input); +bool uterm_input_is_awake(struct uterm_input *input); + +#endif /* UTERM_UTERM_INPUT_H */ diff --git a/src/uterm_input_internal.h b/src/uterm_input_internal.h index b015d7e..727af97 100644 --- a/src/uterm_input_internal.h +++ b/src/uterm_input_internal.h @@ -36,7 +36,7 @@ #include "eloop.h" #include "shl_dlist.h" #include "shl_misc.h" -#include "uterm.h" +#include "uterm_input.h" enum uterm_input_device_capability { UTERM_DEVICE_HAS_KEYS = (1 << 0), diff --git a/src/uterm_input_uxkb.c b/src/uterm_input_uxkb.c index d91fd44..582151e 100644 --- a/src/uterm_input_uxkb.c +++ b/src/uterm_input_uxkb.c @@ -35,7 +35,7 @@ #include "log.h" #include "shl_hook.h" #include "shl_misc.h" -#include "uterm.h" +#include "uterm_input.h" #include "uterm_input_internal.h" #define LOG_SUBSYSTEM "input_uxkb" diff --git a/src/uterm_vt.c b/src/uterm_vt.c index a751fac..c1274ab 100644 --- a/src/uterm_vt.c +++ b/src/uterm_vt.c @@ -49,6 +49,7 @@ #include "shl_dlist.h" #include "shl_misc.h" #include "uterm.h" +#include "uterm_input.h" #define LOG_SUBSYSTEM "vt"