mirror of
https://github.com/kovidgoyal/kitty
synced 2026-07-19 06:54:58 +02:00
Linux: Rather than crashing on systems that give us broken keymaps just ignore key events
This commit is contained in:
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;
|
||||||
|
|||||||
Reference in New Issue
Block a user