mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-02 07:21:32 +08:00

* Test release workflow * Update release.yml * Update release.yml * add linux deps * Update release.yml * Update release.yml * Update release.yml * Update release.yml * Update release.yml * Update release.yml * Update release.yml * Update release.yml * Update release.yml * Fix: Misc tests * Fix: Misc tests + linux build tags * Fix: Bindings tests + move templates to pkg. Add json schema for templates * Fix: template tests * Add tests to release workflow. Test for go 1.18 + go 1.19 Fix: ignore .m files for non darwin builds. Fix watcher test. Fix warning in clilogger. * Fix release pipeline * Matrix for tests * Rename templates to make tests work * Update template test * Debug template test * Debug template test * Debug template test * Fix gitignore * Update release.yml
107 lines
2.6 KiB
Go
107 lines
2.6 KiB
Go
//go:build linux
|
|
// +build linux
|
|
|
|
package linux
|
|
|
|
/*
|
|
#cgo linux pkg-config: gtk+-3.0 webkit2gtk-4.0
|
|
|
|
#include "gtk/gtk.h"
|
|
|
|
*/
|
|
import "C"
|
|
import (
|
|
"github.com/wailsapp/wails/v2/pkg/menu/keys"
|
|
)
|
|
|
|
var namedKeysToGTK = map[string]C.guint{
|
|
"backspace": C.guint(0xff08),
|
|
"tab": C.guint(0xff09),
|
|
"return": C.guint(0xff0d),
|
|
"enter": C.guint(0xff0d),
|
|
"escape": C.guint(0xff1b),
|
|
"left": C.guint(0xff51),
|
|
"right": C.guint(0xff53),
|
|
"up": C.guint(0xff52),
|
|
"down": C.guint(0xff54),
|
|
"space": C.guint(0xff80),
|
|
"delete": C.guint(0xff9f),
|
|
"home": C.guint(0xff95),
|
|
"end": C.guint(0xff9c),
|
|
"page up": C.guint(0xff9a),
|
|
"page down": C.guint(0xff9b),
|
|
"f1": C.guint(0xffbe),
|
|
"f2": C.guint(0xffbf),
|
|
"f3": C.guint(0xffc0),
|
|
"f4": C.guint(0xffc1),
|
|
"f5": C.guint(0xffc2),
|
|
"f6": C.guint(0xffc3),
|
|
"f7": C.guint(0xffc4),
|
|
"f8": C.guint(0xffc5),
|
|
"f9": C.guint(0xffc6),
|
|
"f10": C.guint(0xffc7),
|
|
"f11": C.guint(0xffc8),
|
|
"f12": C.guint(0xffc9),
|
|
"f13": C.guint(0xffca),
|
|
"f14": C.guint(0xffcb),
|
|
"f15": C.guint(0xffcc),
|
|
"f16": C.guint(0xffcd),
|
|
"f17": C.guint(0xffce),
|
|
"f18": C.guint(0xffcf),
|
|
"f19": C.guint(0xffd0),
|
|
"f20": C.guint(0xffd1),
|
|
"f21": C.guint(0xffd2),
|
|
"f22": C.guint(0xffd3),
|
|
"f23": C.guint(0xffd4),
|
|
"f24": C.guint(0xffd5),
|
|
"f25": C.guint(0xffd6),
|
|
"f26": C.guint(0xffd7),
|
|
"f27": C.guint(0xffd8),
|
|
"f28": C.guint(0xffd9),
|
|
"f29": C.guint(0xffda),
|
|
"f30": C.guint(0xffdb),
|
|
"f31": C.guint(0xffdc),
|
|
"f32": C.guint(0xffdd),
|
|
"f33": C.guint(0xffde),
|
|
"f34": C.guint(0xffdf),
|
|
"f35": C.guint(0xffe0),
|
|
"numlock": C.guint(0xff7f),
|
|
}
|
|
|
|
func acceleratorToGTK(accelerator *keys.Accelerator) (C.guint, C.GdkModifierType) {
|
|
key := parseKey(accelerator.Key)
|
|
mods := parseModifiers(accelerator.Modifiers)
|
|
return key, mods
|
|
}
|
|
|
|
func parseKey(key string) C.guint {
|
|
var result C.guint
|
|
result, found := namedKeysToGTK[key]
|
|
if found {
|
|
return result
|
|
}
|
|
// Check for unknown namedkeys
|
|
if len(key) > 1 {
|
|
return C.guint(0)
|
|
}
|
|
keyval := rune(key[0])
|
|
return C.gdk_unicode_to_keyval(C.guint(keyval))
|
|
}
|
|
|
|
func parseModifiers(modifiers []keys.Modifier) C.GdkModifierType {
|
|
|
|
var result C.GdkModifierType
|
|
|
|
for _, modifier := range modifiers {
|
|
switch modifier {
|
|
case keys.ShiftKey:
|
|
result |= C.GDK_SHIFT_MASK
|
|
case keys.ControlKey, keys.CmdOrCtrlKey:
|
|
result |= C.GDK_CONTROL_MASK
|
|
case keys.OptionOrAltKey:
|
|
result |= C.GDK_MOD1_MASK
|
|
}
|
|
}
|
|
return result
|
|
}
|