mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-03 16:35:36 +00:00
app: send keypress events for modifier keys
This change causes modifier keys (Control, Shift, Alt, Super) to be sent to the application as key.Event events. These will still continue to be used as modifiers for other key and pointer events as they are today. This commit also adds a minor cleanup to use constants for function keys in the OS-specific keypress handling functions. Signed-off-by: Jeff Williams <kanobe@gmail.com>
This commit is contained in:
committed by
Elias Naur
parent
fcaadb3698
commit
13183522dd
@@ -267,33 +267,41 @@ func convertKeysym(s C.xkb_keysym_t) (string, bool) {
|
||||
case C.XKB_KEY_Page_Down:
|
||||
n = key.NamePageDown
|
||||
case C.XKB_KEY_F1:
|
||||
n = "F1"
|
||||
n = key.NameF1
|
||||
case C.XKB_KEY_F2:
|
||||
n = "F2"
|
||||
n = key.NameF2
|
||||
case C.XKB_KEY_F3:
|
||||
n = "F3"
|
||||
n = key.NameF3
|
||||
case C.XKB_KEY_F4:
|
||||
n = "F4"
|
||||
n = key.NameF4
|
||||
case C.XKB_KEY_F5:
|
||||
n = "F5"
|
||||
n = key.NameF5
|
||||
case C.XKB_KEY_F6:
|
||||
n = "F6"
|
||||
n = key.NameF6
|
||||
case C.XKB_KEY_F7:
|
||||
n = "F7"
|
||||
n = key.NameF7
|
||||
case C.XKB_KEY_F8:
|
||||
n = "F8"
|
||||
n = key.NameF8
|
||||
case C.XKB_KEY_F9:
|
||||
n = "F9"
|
||||
n = key.NameF9
|
||||
case C.XKB_KEY_F10:
|
||||
n = "F10"
|
||||
n = key.NameF10
|
||||
case C.XKB_KEY_F11:
|
||||
n = "F11"
|
||||
n = key.NameF11
|
||||
case C.XKB_KEY_F12:
|
||||
n = "F12"
|
||||
n = key.NameF12
|
||||
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 = key.NameSpace
|
||||
case C.XKB_KEY_Control_L, C.XKB_KEY_Control_R:
|
||||
n = key.NameCtrl
|
||||
case C.XKB_KEY_Shift_L, C.XKB_KEY_Shift_R:
|
||||
n = key.NameShift
|
||||
case C.XKB_KEY_Alt_L, C.XKB_KEY_Alt_R:
|
||||
n = key.NameAlt
|
||||
case C.XKB_KEY_Super_L, C.XKB_KEY_Super_R:
|
||||
n = key.NameSuper
|
||||
default:
|
||||
return "", false
|
||||
}
|
||||
|
||||
@@ -905,6 +905,14 @@ func convertKeyCode(code C.jint) (string, bool) {
|
||||
n = key.NameEnter
|
||||
case C.AKEYCODE_ENTER:
|
||||
n = key.NameEnter
|
||||
case C.AKEYCODE_CTRL_LEFT, C.AKEYCODE_CTRL_RIGHT:
|
||||
n = key.NameCtrl
|
||||
case C.AKEYCODE_SHIFT_LEFT, C.AKEYCODE_SHIFT_RIGHT:
|
||||
n = key.NameShift
|
||||
case C.AKEYCODE_ALT_LEFT, C.AKEYCODE_ALT_RIGHT:
|
||||
n = key.NameAlt
|
||||
case C.AKEYCODE_META_LEFT, C.AKEYCODE_META_RIGHT:
|
||||
n = key.NameSuper
|
||||
default:
|
||||
return "", false
|
||||
}
|
||||
|
||||
+33
-2
@@ -677,6 +677,7 @@ func osMain() {
|
||||
|
||||
func translateKey(k string) (string, bool) {
|
||||
var n string
|
||||
|
||||
switch k {
|
||||
case "ArrowUp":
|
||||
n = key.NameUpArrow
|
||||
@@ -706,8 +707,38 @@ func translateKey(k string) (string, bool) {
|
||||
n = key.NameTab
|
||||
case " ":
|
||||
n = key.NameSpace
|
||||
case "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12":
|
||||
n = k
|
||||
case "F1":
|
||||
n = key.NameF1
|
||||
case "F2":
|
||||
n = key.NameF2
|
||||
case "F3":
|
||||
n = key.NameF3
|
||||
case "F4":
|
||||
n = key.NameF4
|
||||
case "F5":
|
||||
n = key.NameF5
|
||||
case "F6":
|
||||
n = key.NameF6
|
||||
case "F7":
|
||||
n = key.NameF7
|
||||
case "F8":
|
||||
n = key.NameF8
|
||||
case "F9":
|
||||
n = key.NameF9
|
||||
case "F10":
|
||||
n = key.NameF10
|
||||
case "F11":
|
||||
n = key.NameF11
|
||||
case "F12":
|
||||
n = key.NameF12
|
||||
case "Control":
|
||||
n = key.NameCtrl
|
||||
case "Shift":
|
||||
n = key.NameShift
|
||||
case "Alt":
|
||||
n = key.NameAlt
|
||||
case "OS":
|
||||
n = key.NameSuper
|
||||
default:
|
||||
r, s := utf8.DecodeRuneInString(k)
|
||||
// If there is exactly one printable character, return that.
|
||||
|
||||
+12
-12
@@ -610,29 +610,29 @@ func convertKey(k rune) (string, bool) {
|
||||
case C.NSPageDownFunctionKey:
|
||||
n = key.NamePageDown
|
||||
case C.NSF1FunctionKey:
|
||||
n = "F1"
|
||||
n = key.NameF1
|
||||
case C.NSF2FunctionKey:
|
||||
n = "F2"
|
||||
n = key.NameF2
|
||||
case C.NSF3FunctionKey:
|
||||
n = "F3"
|
||||
n = key.NameF3
|
||||
case C.NSF4FunctionKey:
|
||||
n = "F4"
|
||||
n = key.NameF4
|
||||
case C.NSF5FunctionKey:
|
||||
n = "F5"
|
||||
n = key.NameF5
|
||||
case C.NSF6FunctionKey:
|
||||
n = "F6"
|
||||
n = key.NameF6
|
||||
case C.NSF7FunctionKey:
|
||||
n = "F7"
|
||||
n = key.NameF7
|
||||
case C.NSF8FunctionKey:
|
||||
n = "F8"
|
||||
n = key.NameF8
|
||||
case C.NSF9FunctionKey:
|
||||
n = "F9"
|
||||
n = key.NameF9
|
||||
case C.NSF10FunctionKey:
|
||||
n = "F10"
|
||||
n = key.NameF10
|
||||
case C.NSF11FunctionKey:
|
||||
n = "F11"
|
||||
n = key.NameF11
|
||||
case C.NSF12FunctionKey:
|
||||
n = "F12"
|
||||
n = key.NameF12
|
||||
case 0x09, 0x19:
|
||||
n = key.NameTab
|
||||
case 0x20:
|
||||
|
||||
+21
-12
@@ -739,6 +739,7 @@ func convertKeyCode(code uintptr) (string, bool) {
|
||||
return string(rune(code)), true
|
||||
}
|
||||
var r string
|
||||
|
||||
switch code {
|
||||
case windows.VK_ESCAPE:
|
||||
r = key.NameEscape
|
||||
@@ -765,29 +766,29 @@ func convertKeyCode(code uintptr) (string, bool) {
|
||||
case windows.VK_NEXT:
|
||||
r = key.NamePageDown
|
||||
case windows.VK_F1:
|
||||
r = "F1"
|
||||
r = key.NameF1
|
||||
case windows.VK_F2:
|
||||
r = "F2"
|
||||
r = key.NameF2
|
||||
case windows.VK_F3:
|
||||
r = "F3"
|
||||
r = key.NameF3
|
||||
case windows.VK_F4:
|
||||
r = "F4"
|
||||
r = key.NameF4
|
||||
case windows.VK_F5:
|
||||
r = "F5"
|
||||
r = key.NameF5
|
||||
case windows.VK_F6:
|
||||
r = "F6"
|
||||
r = key.NameF6
|
||||
case windows.VK_F7:
|
||||
r = "F7"
|
||||
r = key.NameF7
|
||||
case windows.VK_F8:
|
||||
r = "F8"
|
||||
r = key.NameF8
|
||||
case windows.VK_F9:
|
||||
r = "F9"
|
||||
r = key.NameF9
|
||||
case windows.VK_F10:
|
||||
r = "F10"
|
||||
r = key.NameF10
|
||||
case windows.VK_F11:
|
||||
r = "F11"
|
||||
r = key.NameF11
|
||||
case windows.VK_F12:
|
||||
r = "F12"
|
||||
r = key.NameF12
|
||||
case windows.VK_TAB:
|
||||
r = key.NameTab
|
||||
case windows.VK_SPACE:
|
||||
@@ -814,6 +815,14 @@ func convertKeyCode(code uintptr) (string, bool) {
|
||||
r = "]"
|
||||
case windows.VK_OEM_7:
|
||||
r = "'"
|
||||
case windows.VK_CONTROL:
|
||||
r = key.NameCtrl
|
||||
case windows.VK_SHIFT:
|
||||
r = key.NameShift
|
||||
case windows.VK_MENU:
|
||||
r = key.NameAlt
|
||||
case windows.VK_LWIN, windows.VK_RWIN:
|
||||
r = key.NameSuper
|
||||
default:
|
||||
return "", false
|
||||
}
|
||||
|
||||
@@ -133,6 +133,22 @@ const (
|
||||
NamePageDown = "⇟"
|
||||
NameTab = "⇥"
|
||||
NameSpace = "Space"
|
||||
NameCtrl = "⌃"
|
||||
NameShift = "⇧"
|
||||
NameAlt = "⎇"
|
||||
NameSuper = "⊞"
|
||||
NameF1 = "F1"
|
||||
NameF2 = "F2"
|
||||
NameF3 = "F3"
|
||||
NameF4 = "F4"
|
||||
NameF5 = "F5"
|
||||
NameF6 = "F6"
|
||||
NameF7 = "F7"
|
||||
NameF8 = "F8"
|
||||
NameF9 = "F9"
|
||||
NameF10 = "F10"
|
||||
NameF11 = "F11"
|
||||
NameF12 = "F12"
|
||||
)
|
||||
|
||||
// Contain reports whether m contains all modifiers
|
||||
|
||||
Reference in New Issue
Block a user