From 5dd32436740786e857c67f9236e13c60413296d8 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 22 Jun 2018 10:21:51 +0530 Subject: [PATCH] Update glfw from upstream --- glfw/glfw.py | 1 + glfw/wl_window.c | 4 ++++ glfw/x11_window.c | 4 ++++ glfw/xkb_glfw.c | 4 ++++ glfw/xkb_glfw.h | 1 + kitty/glfw-wrapper.c | 2 ++ kitty/glfw-wrapper.h | 4 ++++ 7 files changed, 20 insertions(+) diff --git a/glfw/glfw.py b/glfw/glfw.py index 1282053ab..1d380097e 100755 --- a/glfw/glfw.py +++ b/glfw/glfw.py @@ -208,6 +208,7 @@ def generate_wrappers(glfw_header, glfw_native_header): int32_t glfwGetX11Window(GLFWwindow* window) void glfwSetX11SelectionString(const char* string) const char* glfwGetX11SelectionString(void) + int glfwGetXKBScancode(const char* key_name, int case_sensitive) '''.splitlines(): if line: functions.append(Function(line.strip(), check_fail=False)) diff --git a/glfw/wl_window.c b/glfw/wl_window.c index 52022cd22..3ea921d92 100644 --- a/glfw/wl_window.c +++ b/glfw/wl_window.c @@ -1563,3 +1563,7 @@ GLFWAPI struct wl_surface* glfwGetWaylandWindow(GLFWwindow* handle) _GLFW_REQUIRE_INIT_OR_RETURN(NULL); return window->wl.surface; } + +GLFWAPI int glfwGetXKBScancode(const char* keyName, GLFWbool caseSensitive) { + return glfw_xkb_keysym_from_name(keyName, caseSensitive); +} diff --git a/glfw/x11_window.c b/glfw/x11_window.c index f1b970c34..1eecd1d2e 100644 --- a/glfw/x11_window.c +++ b/glfw/x11_window.c @@ -2937,3 +2937,7 @@ GLFWAPI const char* glfwGetX11SelectionString(void) _GLFW_REQUIRE_INIT_OR_RETURN(NULL); return getSelectionString(_glfw.x11.PRIMARY); } + +GLFWAPI int glfwGetXKBScancode(const char* keyName, GLFWbool caseSensitive) { + return glfw_xkb_keysym_from_name(keyName, caseSensitive); +} diff --git a/glfw/xkb_glfw.c b/glfw/xkb_glfw.c index 3eef19b32..98ee95a84 100644 --- a/glfw/xkb_glfw.c +++ b/glfw/xkb_glfw.c @@ -361,6 +361,10 @@ glfw_xkb_keysym_name(xkb_keysym_t sym) { return name; } +int +glfw_xkb_keysym_from_name(const char *name, GLFWbool case_sensitive) { + return (int)xkb_keysym_from_name(name, case_sensitive ? XKB_KEYSYM_NO_FLAGS : XKB_KEYSYM_CASE_INSENSITIVE); +} static inline const char* format_mods(unsigned int mods) { diff --git a/glfw/xkb_glfw.h b/glfw/xkb_glfw.h index a80efe161..805aee367 100644 --- a/glfw/xkb_glfw.h +++ b/glfw/xkb_glfw.h @@ -83,3 +83,4 @@ GLFWbool glfw_xkb_should_repeat(_GLFWXKBData *xkb, xkb_keycode_t scancode); const char* glfw_xkb_keysym_name(xkb_keysym_t sym); xkb_keysym_t glfw_xkb_sym_for_key(int key); void glfw_xkb_handle_key_event(_GLFWwindow *window, _GLFWXKBData *xkb, xkb_keycode_t scancode, int action); +int glfw_xkb_keysym_from_name(const char *name, GLFWbool case_sensitive); diff --git a/kitty/glfw-wrapper.c b/kitty/glfw-wrapper.c index f34fae43f..071ac0bf4 100644 --- a/kitty/glfw-wrapper.c +++ b/kitty/glfw-wrapper.c @@ -371,6 +371,8 @@ load_glfw(const char* path) { *(void **) (&glfwGetX11SelectionString_impl) = dlsym(handle, "glfwGetX11SelectionString"); + *(void **) (&glfwGetXKBScancode_impl) = dlsym(handle, "glfwGetXKBScancode"); + return NULL; } diff --git a/kitty/glfw-wrapper.h b/kitty/glfw-wrapper.h index 234426774..d7eeca7e5 100644 --- a/kitty/glfw-wrapper.h +++ b/kitty/glfw-wrapper.h @@ -1862,4 +1862,8 @@ typedef const char* (*glfwGetX11SelectionString_func)(); glfwGetX11SelectionString_func glfwGetX11SelectionString_impl; #define glfwGetX11SelectionString glfwGetX11SelectionString_impl +typedef int (*glfwGetXKBScancode_func)(const char*, int); +glfwGetXKBScancode_func glfwGetXKBScancode_impl; +#define glfwGetXKBScancode glfwGetXKBScancode_impl + const char* load_glfw(const char* path);