From 49bb7670484ffb73f6bdc464b2b870b8ffb5de6c Mon Sep 17 00:00:00 2001 From: Egon Elbre Date: Fri, 16 Jun 2023 12:41:38 +0300 Subject: [PATCH] app/internal/xkb: ensure things don't panic If there's no keyboard attached we don't want to panic when querying modifiers. Signed-off-by: Egon Elbre --- app/internal/xkb/xkb_unix.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/internal/xkb/xkb_unix.go b/app/internal/xkb/xkb_unix.go index eda120d8..95348ef8 100644 --- a/app/internal/xkb/xkb_unix.go +++ b/app/internal/xkb/xkb_unix.go @@ -136,6 +136,10 @@ func (x *Context) LoadKeymap(format int, fd int, size int) error { func (x *Context) Modifiers() key.Modifiers { var mods key.Modifiers + if x.state == nil { + return mods + } + if C.xkb_state_mod_name_is_active(x.state, (*C.char)(unsafe.Pointer(&_XKB_MOD_NAME_CTRL[0])), C.XKB_STATE_MODS_EFFECTIVE) == 1 { mods |= key.ModCtrl } @@ -219,6 +223,9 @@ func (x *Context) charsForKeycode(keyCode C.xkb_keycode_t) []byte { } func (x *Context) IsRepeatKey(keyCode uint32) bool { + if x.state == nil { + return false + } kc := C.xkb_keycode_t(keyCode) return C.xkb_keymap_key_repeats(x.keyMap, kc) == 1 }