فهرست منبع

Wayland: Fix some keys not repeating

According to the libxkbcommon documentation[1], xkb_keymap_key_repeats
requires keymap and keycode as input:

int xkb_keymap_key_repeats( struct xkb_keymap * keymap,
			    xkb_keycode_t key)

However, in inputChar in wl_input.c we are passing in xkb_keysym_t,
which was a type mismatch.

This results in some keys not repeating when they should and vice versa.

[1] https://xkbcommon.org/doc/current/group__components.html#ga9d7f998efeca98b3afc7c257bbac90a8

Closes #1908.

(cherry picked from commit 216d5e8402513b582563d5b8433fefb449a1593e)
Koray Kilinc 4 سال پیش
والد
کامیت
33ff23dc07
2فایلهای تغییر یافته به همراه3 افزوده شده و 1 حذف شده
  1. 2 0
      README.md
  2. 1 1
      src/wl_init.c

+ 2 - 0
README.md

@@ -127,6 +127,7 @@ information on what to include when reporting a bug.
  - [Cocoa] Bugfix: The MoltenVK layer contents scale was updated only after
  - [Cocoa] Bugfix: The MoltenVK layer contents scale was updated only after
    related events were emitted
    related events were emitted
  - [X11] Bugfix: Changing `GLFW_FLOATING` could leak memory
  - [X11] Bugfix: Changing `GLFW_FLOATING` could leak memory
+ - [Wayland] Bugfix: Some keys were not repeating in Wayland (#1908)
  - [NSGL] Bugfix: Defining `GL_SILENCE_DEPRECATION` externally caused
  - [NSGL] Bugfix: Defining `GL_SILENCE_DEPRECATION` externally caused
    a duplicate definition warning (#1840)
    a duplicate definition warning (#1840)
  - [EGL] Bugfix: The `GLFW_DOUBLEBUFFER` context attribute was ignored (#1843)
  - [EGL] Bugfix: The `GLFW_DOUBLEBUFFER` context attribute was ignored (#1843)
@@ -228,6 +229,7 @@ skills.
  - Arseny Kapoulkine
  - Arseny Kapoulkine
  - Cem Karan
  - Cem Karan
  - Osman Keskin
  - Osman Keskin
+ - Koray Kilinc
  - Josh Kilmer
  - Josh Kilmer
  - Byunghoon Kim
  - Byunghoon Kim
  - Cameron King
  - Cameron King

+ 1 - 1
src/wl_init.c

@@ -560,7 +560,7 @@ static GLFWbool inputChar(_GLFWwindow* window, uint32_t key)
         }
         }
     }
     }
 
 
-    return xkb_keymap_key_repeats(_glfw.wl.xkb.keymap, syms[0]);
+    return xkb_keymap_key_repeats(_glfw.wl.xkb.keymap, code);
 }
 }
 
 
 static void keyboardHandleKey(void* data,
 static void keyboardHandleKey(void* data,