diff options
Diffstat (limited to 'vendor/gioui.org/app/internal/xkb/xkb_unix.go')
-rw-r--r-- | vendor/gioui.org/app/internal/xkb/xkb_unix.go | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/vendor/gioui.org/app/internal/xkb/xkb_unix.go b/vendor/gioui.org/app/internal/xkb/xkb_unix.go index 3525692..68b1329 100644 --- a/vendor/gioui.org/app/internal/xkb/xkb_unix.go +++ b/vendor/gioui.org/app/internal/xkb/xkb_unix.go @@ -1,5 +1,6 @@ // SPDX-License-Identifier: Unlicense OR MIT +//go:build (linux && !android) || freebsd || openbsd // +build linux,!android freebsd openbsd // Package xkb implements a Go interface for the X Keyboard Extension library. @@ -150,7 +151,7 @@ func (x *Context) Modifiers() key.Modifiers { return mods } -func (x *Context) DispatchKey(keyCode uint32) (events []event.Event) { +func (x *Context) DispatchKey(keyCode uint32, state key.State) (events []event.Event) { if x.state == nil { return } @@ -163,6 +164,7 @@ func (x *Context) DispatchKey(keyCode uint32) (events []event.Event) { cmd := key.Event{ Name: name, Modifiers: x.Modifiers(), + State: state, } // Ensure that a physical backtab key is translated to // Shift-Tab. @@ -185,7 +187,10 @@ func (x *Context) DispatchKey(keyCode uint32) (events []event.Event) { C.xkb_compose_state_reset(x.compState) str = x.utf8Buf[:size] case C.XKB_COMPOSE_NOTHING: - str = x.charsForKeycode(kc) + mod := x.Modifiers() + if mod&(key.ModCtrl|key.ModAlt|key.ModSuper) == 0 { + str = x.charsForKeycode(kc) + } } // Report only printable runes. var n int @@ -198,7 +203,7 @@ func (x *Context) DispatchKey(keyCode uint32) (events []event.Event) { str = str[:len(str)-s] } } - if len(str) > 0 { + if state == key.Press && len(str) > 0 { events = append(events, key.EditEvent{Text: string(str)}) } return @@ -230,7 +235,7 @@ func convertKeysym(s C.xkb_keysym_t) (string, bool) { if 'a' <= s && s <= 'z' { return string(rune(s - 'a' + 'A')), true } - if ' ' <= s && s <= '~' { + if ' ' < s && s <= '~' { return string(rune(s)), true } var n string @@ -288,7 +293,7 @@ func convertKeysym(s C.xkb_keysym_t) (string, bool) { case C.XKB_KEY_Tab, C.XKB_KEY_KP_Tab, C.XKB_KEY_ISO_Left_Tab: n = key.NameTab case 0x20, C.XKB_KEY_KP_Space: - n = "Space" + n = key.NameSpace default: return "", false } |