You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
2.0 KiB
42 lines
2.0 KiB
From b11dfd761181ab5005fe3f5527faa4faf6b56112 Mon Sep 17 00:00:00 2001 |
|
From: Weng Xuetian <wengxt@gmail.com> |
|
Date: Tue, 1 Feb 2022 14:43:26 -0800 |
|
Subject: [PATCH 11/11] Only generate key repetition for keys that should |
|
repeat on wayland. |
|
|
|
This fix repetition on modifier keys, e.g. Control. |
|
--- |
|
src/video/wayland/SDL_waylandevents.c | 4 +++- |
|
src/video/wayland/SDL_waylandsym.h | 1 + |
|
2 files changed, 4 insertions(+), 1 deletion(-) |
|
|
|
diff --git a/src/video/wayland/SDL_waylandevents.c b/src/video/wayland/SDL_waylandevents.c |
|
index 85d4edfc8..55893201b 100644 |
|
--- a/src/video/wayland/SDL_waylandevents.c |
|
+++ b/src/video/wayland/SDL_waylandevents.c |
|
@@ -987,7 +987,9 @@ keyboard_handle_key(void *data, struct wl_keyboard *keyboard, |
|
SDL_SendKeyboardText(text); |
|
} |
|
} |
|
- keyboard_repeat_set(&input->keyboard_repeat, time, scancode, has_text, text); |
|
+ if (input->xkb.keymap && WAYLAND_xkb_keymap_key_repeats(input->xkb.keymap, key + 8)) { |
|
+ keyboard_repeat_set(&input->keyboard_repeat, time, scancode, has_text, text); |
|
+ } |
|
} |
|
} |
|
|
|
diff --git a/src/video/wayland/SDL_waylandsym.h b/src/video/wayland/SDL_waylandsym.h |
|
index 366ce9e94..fa29bedb1 100644 |
|
--- a/src/video/wayland/SDL_waylandsym.h |
|
+++ b/src/video/wayland/SDL_waylandsym.h |
|
@@ -122,6 +122,7 @@ SDL_WAYLAND_SYM(int, xkb_state_key_get_syms, (struct xkb_state *, xkb_keycode_t, |
|
SDL_WAYLAND_SYM(int, xkb_keysym_to_utf8, (xkb_keysym_t, char *, size_t) ) |
|
SDL_WAYLAND_SYM(struct xkb_keymap *, xkb_keymap_new_from_string, (struct xkb_context *, const char *, enum xkb_keymap_format, enum xkb_keymap_compile_flags)) |
|
SDL_WAYLAND_SYM(struct xkb_state *, xkb_state_new, (struct xkb_keymap *) ) |
|
+SDL_WAYLAND_SYM(int, xkb_keymap_key_repeats, (struct xkb_keymap *keymap, xkb_keycode_t key) ); |
|
SDL_WAYLAND_SYM(void, xkb_keymap_unref, (struct xkb_keymap *) ) |
|
SDL_WAYLAND_SYM(void, xkb_state_unref, (struct xkb_state *) ) |
|
SDL_WAYLAND_SYM(void, xkb_context_unref, (struct xkb_context *) ) |
|
-- |
|
2.34.1 |
|
|
|
|