5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-06 00:32:32 +08:00
wails/v2/pkg/menu/keys/keys.go
2020-12-26 14:58:22 +11:00

83 lines
2.0 KiB
Go

package keys
// Modifier is actually a string
type Modifier string
const (
// CmdOrCtrlKey represents Command on Mac and Control on other platforms
CmdOrCtrlKey Modifier = "CmdOrCtrl"
// OptionOrAltKey represents Option on Mac and Alt on other platforms
OptionOrAltKey Modifier = "OptionOrAlt"
// ShiftKey represents the shift key on all systems
ShiftKey Modifier = "Shift"
// SuperKey represents Command on Mac and the Windows key on the other platforms
SuperKey Modifier = "Super"
// ControlKey represents the control key on all systems
ControlKey Modifier = "Control"
)
// Accelerator holds the keyboard shortcut for a menu item
type Accelerator struct {
Key string
Modifiers []Modifier
}
// Key creates a standard key Accelerator
func Key(key string) *Accelerator {
return &Accelerator{
Key: key,
}
}
// CmdOrCtrl creates a 'CmdOrCtrl' Accelerator
func CmdOrCtrl(key string) *Accelerator {
return &Accelerator{
Key: key,
Modifiers: []Modifier{CmdOrCtrlKey},
}
}
// OptionOrAlt creates a 'OptionOrAlt' Accelerator
func OptionOrAlt(key string) *Accelerator {
return &Accelerator{
Key: key,
Modifiers: []Modifier{OptionOrAltKey},
}
}
// Shift creates a 'Shift' Accelerator
func Shift(key string) *Accelerator {
return &Accelerator{
Key: key,
Modifiers: []Modifier{ShiftKey},
}
}
// Control creates a 'Control' Accelerator
func Control(key string) *Accelerator {
return &Accelerator{
Key: key,
Modifiers: []Modifier{ControlKey},
}
}
// Super creates a 'Super' Accelerator
func Super(key string) *Accelerator {
return &Accelerator{
Key: key,
Modifiers: []Modifier{SuperKey},
}
}
// Combo creates an Accelerator with multiple Modifiers
func Combo(key string, modifier1 Modifier, modifier2 Modifier, rest ...Modifier) *Accelerator {
result := &Accelerator{
Key: key,
Modifiers: []Modifier{modifier1, modifier2},
}
for _, extra := range rest {
result.Modifiers = append(result.Modifiers, extra)
}
return result
}