summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2020-06-23 14:01:48 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2020-06-25 10:32:08 +1000
commitc09bf36306e45ea699e3a494e829bf684fd60e02 (patch)
tree1b4318baba9095a7d9d6ea8e7502834ec9a59316 /tools
parent2eb5d2c81db908ff691b0ac58f2361dce6f7c005 (diff)
downloadxorg-lib-libxkbcommon-c09bf36306e45ea699e3a494e829bf684fd60e02.tar.gz
test: untangle interactive-evdev from the test headers
Move (sometimes duplicate) the required bits into new shared files tools-common.(c|h) that are compiled into the internal tools library. Rename the test_foo() functions to tools_foo() and in one case just copy the code of the keymap compile function to the tool. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to 'tools')
-rw-r--r--tools/tools-common.c119
-rw-r--r--tools/tools-common.h65
2 files changed, 126 insertions, 58 deletions
diff --git a/tools/tools-common.c b/tools/tools-common.c
index aecb2ab..6e397c2 100644
--- a/tools/tools-common.c
+++ b/tools/tools-common.c
@@ -46,9 +46,120 @@
#include "tools-common.h"
+void
+tools_print_keycode_state(struct xkb_state *state,
+ struct xkb_compose_state *compose_state,
+ xkb_keycode_t keycode,
+ enum xkb_consumed_mode consumed_mode)
+{
+ struct xkb_keymap *keymap;
+
+ xkb_keysym_t sym;
+ const xkb_keysym_t *syms;
+ int nsyms;
+ char s[16];
+ xkb_layout_index_t layout;
+ enum xkb_compose_status status;
+
+ keymap = xkb_state_get_keymap(state);
+
+ nsyms = xkb_state_key_get_syms(state, keycode, &syms);
+
+ if (nsyms <= 0)
+ return;
+
+ status = XKB_COMPOSE_NOTHING;
+ if (compose_state)
+ status = xkb_compose_state_get_status(compose_state);
+
+ if (status == XKB_COMPOSE_COMPOSING || status == XKB_COMPOSE_CANCELLED)
+ return;
+
+ if (status == XKB_COMPOSE_COMPOSED) {
+ sym = xkb_compose_state_get_one_sym(compose_state);
+ syms = &sym;
+ nsyms = 1;
+ }
+ else if (nsyms == 1) {
+ sym = xkb_state_key_get_one_sym(state, keycode);
+ syms = &sym;
+ }
+
+ printf("keysyms [ ");
+ for (int i = 0; i < nsyms; i++) {
+ xkb_keysym_get_name(syms[i], s, sizeof(s));
+ printf("%-*s ", (int) sizeof(s), s);
+ }
+ printf("] ");
+
+ if (status == XKB_COMPOSE_COMPOSED)
+ xkb_compose_state_get_utf8(compose_state, s, sizeof(s));
+ else
+ xkb_state_key_get_utf8(state, keycode, s, sizeof(s));
+ printf("unicode [ %s ] ", s);
+
+ layout = xkb_state_key_get_layout(state, keycode);
+ printf("layout [ %s (%d) ] ",
+ xkb_keymap_layout_get_name(keymap, layout), layout);
+
+ printf("level [ %d ] ",
+ xkb_state_key_get_level(state, keycode, layout));
+
+ printf("mods [ ");
+ for (xkb_mod_index_t mod = 0; mod < xkb_keymap_num_mods(keymap); mod++) {
+ if (xkb_state_mod_index_is_active(state, mod,
+ XKB_STATE_MODS_EFFECTIVE) <= 0)
+ continue;
+ if (xkb_state_mod_index_is_consumed2(state, keycode, mod,
+ consumed_mode))
+ printf("-%s ", xkb_keymap_mod_get_name(keymap, mod));
+ else
+ printf("%s ", xkb_keymap_mod_get_name(keymap, mod));
+ }
+ printf("] ");
+
+ printf("leds [ ");
+ for (xkb_led_index_t led = 0; led < xkb_keymap_num_leds(keymap); led++) {
+ if (xkb_state_led_index_is_active(state, led) <= 0)
+ continue;
+ printf("%s ", xkb_keymap_led_get_name(keymap, led));
+ }
+ printf("] ");
+
+ printf("\n");
+}
+
+void
+tools_print_state_changes(enum xkb_state_component changed)
+{
+ if (changed == 0)
+ return;
+
+ printf("changed [ ");
+ if (changed & XKB_STATE_LAYOUT_EFFECTIVE)
+ printf("effective-layout ");
+ if (changed & XKB_STATE_LAYOUT_DEPRESSED)
+ printf("depressed-layout ");
+ if (changed & XKB_STATE_LAYOUT_LATCHED)
+ printf("latched-layout ");
+ if (changed & XKB_STATE_LAYOUT_LOCKED)
+ printf("locked-layout ");
+ if (changed & XKB_STATE_MODS_EFFECTIVE)
+ printf("effective-mods ");
+ if (changed & XKB_STATE_MODS_DEPRESSED)
+ printf("depressed-mods ");
+ if (changed & XKB_STATE_MODS_LATCHED)
+ printf("latched-mods ");
+ if (changed & XKB_STATE_MODS_LOCKED)
+ printf("locked-mods ");
+ if (changed & XKB_STATE_LEDS)
+ printf("leds ");
+ printf("]\n");
+}
+
#ifdef _MSC_VER
void
-test_disable_stdin_echo(void)
+tools_disable_stdin_echo(void)
{
HANDLE stdin_handle = GetStdHandle(STD_INPUT_HANDLE);
DWORD mode = 0;
@@ -57,7 +168,7 @@ test_disable_stdin_echo(void)
}
void
-test_enable_stdin_echo(void)
+tools_enable_stdin_echo(void)
{
HANDLE stdin_handle = GetStdHandle(STD_INPUT_HANDLE);
DWORD mode = 0;
@@ -66,7 +177,7 @@ test_enable_stdin_echo(void)
}
#else
void
-test_disable_stdin_echo(void)
+tools_disable_stdin_echo(void)
{
/* Same as `stty -echo`. */
struct termios termios;
@@ -77,7 +188,7 @@ test_disable_stdin_echo(void)
}
void
-test_enable_stdin_echo(void)
+tools_enable_stdin_echo(void)
{
/* Same as `stty echo`. */
struct termios termios;
diff --git a/tools/tools-common.h b/tools/tools-common.h
index 035c392..e971af5 100644
--- a/tools/tools-common.h
+++ b/tools/tools-common.h
@@ -23,6 +23,10 @@
* Author: Daniel Stone <daniel@fooishbar.org>
*/
+#pragma once
+
+#include "config.h"
+
#include <assert.h>
/* Don't use compat names in internal code. */
@@ -31,67 +35,20 @@
#include "xkbcommon/xkbcommon-compose.h"
#include "utils.h"
-/* The offset between KEY_* numbering, and keycodes in the XKB evdev
- * dataset. */
-#define EVDEV_OFFSET 8
-
-enum key_seq_state {
- DOWN,
- REPEAT,
- UP,
- BOTH,
- NEXT,
- FINISH,
-};
-
-int
-test_key_seq(struct xkb_keymap *keymap, ...);
-
-int
-test_key_seq_va(struct xkb_keymap *keymap, va_list args);
-
-char *
-test_get_path(const char *path_rel);
-
-char *
-test_read_file(const char *path_rel);
-
-enum test_context_flags {
- CONTEXT_NO_FLAG = 0,
- CONTEXT_ALLOW_ENVIRONMENT_NAMES = (1 << 0),
-};
-
-struct xkb_context *
-test_get_context(enum test_context_flags flags);
-
-struct xkb_keymap *
-test_compile_file(struct xkb_context *context, const char *path_rel);
-
-struct xkb_keymap *
-test_compile_string(struct xkb_context *context, const char *string);
-
-struct xkb_keymap *
-test_compile_buffer(struct xkb_context *context, const char *buf, size_t len);
-
-struct xkb_keymap *
-test_compile_rules(struct xkb_context *context, const char *rules,
- const char *model, const char *layout, const char *variant,
- const char *options);
-
void
-test_print_keycode_state(struct xkb_state *state,
- struct xkb_compose_state *compose_state,
- xkb_keycode_t keycode,
- enum xkb_consumed_mode consumed_mode);
+tools_print_keycode_state(struct xkb_state *state,
+ struct xkb_compose_state *compose_state,
+ xkb_keycode_t keycode,
+ enum xkb_consumed_mode consumed_mode);
void
-test_print_state_changes(enum xkb_state_component changed);
+tools_print_state_changes(enum xkb_state_component changed);
void
-test_disable_stdin_echo(void);
+tools_disable_stdin_echo(void);
void
-test_enable_stdin_echo(void);
+tools_enable_stdin_echo(void);
#ifdef _MSC_VER
#define setenv(varname, value, overwrite) _putenv_s((varname), (value))