aboutsummaryrefslogtreecommitdiff
path: root/vendor/gioui.org/app/internal/xkb/xkb_unix.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/gioui.org/app/internal/xkb/xkb_unix.go')
-rw-r--r--vendor/gioui.org/app/internal/xkb/xkb_unix.go15
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
}