Linux: Rather than crashing on systems that give us broken keymaps just ignore key events
This commit is contained in:
parent
d9d16423a8
commit
bc5c349d53
1 changed files with 3 additions and 0 deletions
3
glfw/xkb_glfw.c
vendored
3
glfw/xkb_glfw.c
vendored
|
|
@ -713,6 +713,7 @@ glfw_xkb_should_repeat(_GLFWXKBData *xkb, xkb_keycode_t keycode) {
|
||||||
#ifdef _GLFW_WAYLAND
|
#ifdef _GLFW_WAYLAND
|
||||||
keycode += 8;
|
keycode += 8;
|
||||||
#endif
|
#endif
|
||||||
|
if (!xkb->keymap) return false;
|
||||||
return xkb_keymap_key_repeats(xkb->keymap, keycode);
|
return xkb_keymap_key_repeats(xkb->keymap, keycode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -797,6 +798,7 @@ format_xkb_mods(_GLFWXKBData *xkb, const char* name, xkb_mod_mask_t mods) {
|
||||||
|
|
||||||
void
|
void
|
||||||
glfw_xkb_update_ime_state(_GLFWwindow *w, _GLFWXKBData *xkb, const GLFWIMEUpdateEvent *ev) {
|
glfw_xkb_update_ime_state(_GLFWwindow *w, _GLFWXKBData *xkb, const GLFWIMEUpdateEvent *ev) {
|
||||||
|
if (!xkb->keymap) return;
|
||||||
int x = 0, y = 0;
|
int x = 0, y = 0;
|
||||||
switch(ev->type) {
|
switch(ev->type) {
|
||||||
case GLFW_IME_UPDATE_FOCUS:
|
case GLFW_IME_UPDATE_FOCUS:
|
||||||
|
|
@ -862,6 +864,7 @@ is_switch_layout_key(xkb_keysym_t xkb_sym) {
|
||||||
|
|
||||||
void
|
void
|
||||||
glfw_xkb_handle_key_event(_GLFWwindow *window, _GLFWXKBData *xkb, xkb_keycode_t xkb_keycode, int action) {
|
glfw_xkb_handle_key_event(_GLFWwindow *window, _GLFWXKBData *xkb, xkb_keycode_t xkb_keycode, int action) {
|
||||||
|
if (!xkb->keymap) return;
|
||||||
static char key_text[64] = {0};
|
static char key_text[64] = {0};
|
||||||
const xkb_keysym_t *syms, *clean_syms, *default_syms;
|
const xkb_keysym_t *syms, *clean_syms, *default_syms;
|
||||||
xkb_keysym_t xkb_sym, shifted_xkb_sym = XKB_KEY_NoSymbol, alternate_xkb_sym = XKB_KEY_NoSymbol;
|
xkb_keysym_t xkb_sym, shifted_xkb_sym = XKB_KEY_NoSymbol, alternate_xkb_sym = XKB_KEY_NoSymbol;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue