From aca511f849d43e7a687e5c997be2224ffde00df3 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Sun, 24 Nov 2019 19:38:39 +0100 Subject: [PATCH] app/internal/window: (wasm) generate key.Events for all printable characters Signed-off-by: Elias Naur --- app/internal/window/os_js.go | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/app/internal/window/os_js.go b/app/internal/window/os_js.go index 1644be4c..e3ffe98d 100644 --- a/app/internal/window/os_js.go +++ b/app/internal/window/os_js.go @@ -4,9 +4,12 @@ package window import ( "image" + "strings" "sync" "syscall/js" "time" + "unicode" + "unicode/utf8" "gioui.org/f32" "gioui.org/io/key" @@ -396,15 +399,6 @@ func Main() { } func translateKey(k string) (string, bool) { - if len(k) == 1 { - c := k[0] - if '0' <= c && c <= '9' || 'A' <= c && c <= 'Z' { - return string(c), true - } - if 'a' <= c && c <= 'z' { - return string(c - 0x20), true - } - } var n string switch k { case "ArrowUp": @@ -438,6 +432,11 @@ func translateKey(k string) (string, bool) { case "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12": n = k default: + r, s := utf8.DecodeRuneInString(k) + // If there is exactly one printable character, return that. + if s == len(k) && unicode.IsPrint(r) { + return strings.ToUpper(k), true + } return "", false } return n, true