From 7ed43baaa6be88a55952a3411575922c8d883a08 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Mon, 06 Jul 2026 15:47:42 +0800
Subject: [PATCH] feat: default right modifier hotkey

---
 C1.source/privatevoice.src/internal/config/config.go |   30 ++++++++++++++++++++++++++++--
 1 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/C1.source/privatevoice.src/internal/config/config.go b/C1.source/privatevoice.src/internal/config/config.go
index e3e15c8..25bbffe 100755
--- a/C1.source/privatevoice.src/internal/config/config.go
+++ b/C1.source/privatevoice.src/internal/config/config.go
@@ -3,12 +3,15 @@
 import (
 	"encoding/json"
 	"os"
+	"runtime"
 	"voicesnap/internal/logger"
 	"voicesnap/internal/model"
 	"voicesnap/internal/paths"
 )
 
 const (
+	LegacyDefaultHotkeyVK    = 0xA5
+	RightModifierDefaultVK   = 0x5C
 	HotkeyModeTap            = "tap"
 	HotkeyModeHold           = "hold"
 	LanguageModeAuto         = "auto"
@@ -38,8 +41,22 @@
 
 // Default returns a default configuration.
 func Default() *Config {
+	return defaultWithHotkey(defaultHotkeyVKForNewConfig(runtime.GOOS))
+}
+
+func legacyDefaultForExistingConfig() *Config {
+	return defaultWithHotkey(LegacyDefaultHotkeyVK)
+}
+
+// ExistingConfigFallback returns a legacy-safe fallback for cases where a
+// config file exists but cannot be read or parsed.
+func ExistingConfigFallback() *Config {
+	return legacyDefaultForExistingConfig()
+}
+
+func defaultWithHotkey(hotkeyVK int) *Config {
 	return &Config{
-		HotkeyVK:                 0xA5, // Right Alt
+		HotkeyVK:                 hotkeyVK,
 		HotkeyMode:               HotkeyModeHold,
 		AutoHide:                 true,
 		SoundFeedback:            true,
@@ -51,6 +68,15 @@
 		LanguageID:               model.DefaultLanguageID,
 		ModelDownloadUrl:         "http://www.maikami.com/voicesnap/sensevoice.zip",
 		FallbackModelDownloadUrl: "https://modelscope.cn/models/sherpa-onnx/sherpa-onnx-sense-voice-zh-en-ja-ko-yue/resolve/master/sherpa-onnx-sense-voice-zh-en-ja-ko-yue-int8-2024-07-17.tar.bz2",
+	}
+}
+
+func defaultHotkeyVKForNewConfig(goos string) int {
+	switch goos {
+	case "darwin", "windows":
+		return RightModifierDefaultVK
+	default:
+		return LegacyDefaultHotkeyVK
 	}
 }
 
@@ -71,7 +97,7 @@
 		return nil, err
 	}
 
-	cfg := Default()
+	cfg := legacyDefaultForExistingConfig()
 	if err := json.Unmarshal(data, cfg); err != nil {
 		return nil, err
 	}

--
Gitblit v1.9.3