From de7d6b28fa7ec8df34a981d95d4b90e889c1fe2e Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Sat, 9 Nov 2019 11:17:36 +0100 Subject: [PATCH] io/key: add support for the Tab and Space keys Fixes gio#62 Signed-off-by: Elias Naur --- app/internal/window/os_js.go | 4 ++++ app/internal/window/os_macos.go | 4 ++++ app/internal/window/os_windows.go | 6 ++++++ app/internal/window/os_x11.go | 4 ++++ app/internal/xkb/xkb_unix.go | 4 ++++ io/key/key.go | 1 + 6 files changed, 23 insertions(+) diff --git a/app/internal/window/os_js.go b/app/internal/window/os_js.go index d3b122a0..a8900fc0 100644 --- a/app/internal/window/os_js.go +++ b/app/internal/window/os_js.go @@ -419,6 +419,10 @@ func translateKey(k string) (string, bool) { n = key.NamePageUp case "PageDown": n = key.NamePageDown + case "Tab": + n = key.NameTab + case " ": + n = "Space" case "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12": n = k default: diff --git a/app/internal/window/os_macos.go b/app/internal/window/os_macos.go index bcdffc33..04b4915e 100644 --- a/app/internal/window/os_macos.go +++ b/app/internal/window/os_macos.go @@ -346,6 +346,10 @@ func convertKey(k rune) (string, bool) { n = "F11" case C.NSF12FunctionKey: n = "F12" + case 0x09: + n = key.NameTab + case 0x20: + n = "Space" default: return "", false } diff --git a/app/internal/window/os_windows.go b/app/internal/window/os_windows.go index bac8114c..a12070b8 100644 --- a/app/internal/window/os_windows.go +++ b/app/internal/window/os_windows.go @@ -110,6 +110,8 @@ const ( _VK_PRIOR = 0x21 _VK_RIGHT = 0x27 _VK_RETURN = 0x0d + _VK_SPACE = 0x20 + _VK_TAB = 0x09 _VK_UP = 0x26 _VK_F1 = 0x70 @@ -524,6 +526,10 @@ func convertKeyCode(code uintptr) (string, bool) { r = "F11" case _VK_F12: r = "F12" + case _VK_TAB: + r = key.NameTab + case _VK_SPACE: + r = "Space" default: return "", false } diff --git a/app/internal/window/os_x11.go b/app/internal/window/os_x11.go index ab80afeb..c694e206 100644 --- a/app/internal/window/os_x11.go +++ b/app/internal/window/os_x11.go @@ -402,6 +402,10 @@ func x11SpecialKeySymToRune(s C.KeySym) (string, bool) { n = "F11" case C.XK_F12: n = "F12" + case C.XK_Tab: + n = key.NameTab + case 0x20, C.XK_KP_Space: + n = "Space" default: return "", false } diff --git a/app/internal/xkb/xkb_unix.go b/app/internal/xkb/xkb_unix.go index 470de075..48b122d7 100644 --- a/app/internal/xkb/xkb_unix.go +++ b/app/internal/xkb/xkb_unix.go @@ -249,6 +249,10 @@ func convertKeysym(s C.xkb_keysym_t) (string, bool) { n = "F11" case C.XKB_KEY_F12: n = "F12" + case C.XKB_KEY_Tab, C.XKB_KEY_KP_Tab: + n = key.NameTab + case 0x20, C.XKB_KEY_KP_Space: + n = "Space" default: return "", false } diff --git a/io/key/key.go b/io/key/key.go index 275cb6d9..e90c5dff 100644 --- a/io/key/key.go +++ b/io/key/key.go @@ -87,6 +87,7 @@ const ( NameDeleteForward = "⌦" NamePageUp = "⇞" NamePageDown = "⇟" + NameTab = "⇥" ) // Contain reports whether m contains all modifiers