| | |
| | | "voicesnap/internal/paths" |
| | | ) |
| | | |
| | | const ( |
| | | HotkeyModeTap = "tap" |
| | | HotkeyModeHold = "hold" |
| | | ) |
| | | |
| | | // Config holds the application configuration, compatible with the WPF version's config.json. |
| | | type Config struct { |
| | | HotkeyVK int `json:"HotkeyVK"` |
| | | HotkeyMode string `json:"HotkeyMode"` |
| | | AutoHide bool `json:"AutoHide"` |
| | | SoundFeedback bool `json:"SoundFeedback"` |
| | | HideDockIcon bool `json:"HideDockIcon"` |
| | |
| | | func Default() *Config { |
| | | return &Config{ |
| | | HotkeyVK: 0xA5, // Right Alt |
| | | HotkeyMode: HotkeyModeHold, |
| | | AutoHide: true, |
| | | SoundFeedback: true, |
| | | HideDockIcon: true, |
| | |
| | | if err := json.Unmarshal(data, cfg); err != nil { |
| | | return nil, err |
| | | } |
| | | cfg.HotkeyMode = NormalizeHotkeyMode(cfg.HotkeyMode) |
| | | return cfg, nil |
| | | } |
| | | |
| | | func NormalizeHotkeyMode(mode string) string { |
| | | switch mode { |
| | | case HotkeyModeTap, HotkeyModeHold: |
| | | return mode |
| | | default: |
| | | return HotkeyModeHold |
| | | } |
| | | } |
| | | |
| | | // Save writes the config to disk. |
| | | func Save(cfg *Config) { |
| | | if err := paths.Ensure(); err != nil { |