diff --git a/app/internal/xkb/xkb_unix.go b/app/internal/xkb/xkb_unix.go index 9038f2ec..5485e18a 100644 --- a/app/internal/xkb/xkb_unix.go +++ b/app/internal/xkb/xkb_unix.go @@ -124,6 +124,11 @@ func (x *Context) DispatchKey(keyCode uint32) (events []event.Event) { sym := C.xkb_state_key_get_one_sym(x.state, C.xkb_keycode_t(keyCode)) if n, ok := convertKeysym(sym); ok { cmd := key.Event{Name: n} + // Ensure that a physical backtab key is translated to + // Shift-Tab. + if sym == C.XKB_KEY_ISO_Left_Tab { + cmd.Modifiers |= key.ModShift + } 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 { cmd.Modifiers |= key.ModCtrl }