mirror of
https://github.com/jixishi/SerialTerminalForWindowsTerminal.git
synced 2026-06-15 16:42:46 +00:00
fix: restore Ctrl+Alt+Key hotkeys and dedup normalizeHotkey
- Call enableVTInput after tea.NewProgram to restore VT input mode on Windows (bubbletea v1 conInputReader disables it, breaking Ctrl+Alt+Key combos) - Move normalizeHotkey to internal/config.NormalizeHotkey, eliminate duplicate implementations in tui and console packages - Remove unused Sess() getter from App Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -4,6 +4,7 @@ package config
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -28,6 +29,15 @@ type Config struct {
|
|||||||
HotkeyMod string
|
HotkeyMod string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NormalizeHotkey validates and normalizes a hotkey modifier string.
|
||||||
|
func NormalizeHotkey(mod string) string {
|
||||||
|
mod = strings.ToLower(strings.TrimSpace(mod))
|
||||||
|
if mod != "ctrl+alt" && mod != "ctrl+shift" {
|
||||||
|
mod = "ctrl+alt"
|
||||||
|
}
|
||||||
|
return mod
|
||||||
|
}
|
||||||
|
|
||||||
// OpenLogFile opens the configured log file for writing, or returns nil if logging is disabled.
|
// OpenLogFile opens the configured log file for writing, or returns nil if logging is disabled.
|
||||||
func OpenLogFile(cfg *Config) (*os.File, error) {
|
func OpenLogFile(cfg *Config) (*os.File, error) {
|
||||||
if cfg.EnableLog {
|
if cfg.EnableLog {
|
||||||
|
|||||||
@@ -66,6 +66,7 @@ func Run() {
|
|||||||
if cfg.EnableGUI {
|
if cfg.EnableGUI {
|
||||||
model := tui.New(appInst)
|
model := tui.New(appInst)
|
||||||
p := tea.NewProgram(model, tea.WithAltScreen(), tea.WithoutSignalHandler())
|
p := tea.NewProgram(model, tea.WithAltScreen(), tea.WithoutSignalHandler())
|
||||||
|
enableVTInput(int(os.Stdin.Fd())) // Restore VT input for Ctrl+Alt+Key hotkeys
|
||||||
if _, err = p.Run(); err != nil {
|
if _, err = p.Run(); err != nil {
|
||||||
fmt.Fprintf(os.Stderr, "tui failed: %v\n", err)
|
fmt.Fprintf(os.Stderr, "tui failed: %v\n", err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
@@ -336,13 +337,7 @@ func isExitHotkeySeq(seq []byte, cfg *config.Config) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
func normalizeHotkey(mod string) string {
|
func normalizeHotkey(mod string) string { return config.NormalizeHotkey(mod) }
|
||||||
mod = strings.ToLower(strings.TrimSpace(mod))
|
|
||||||
if mod != "ctrl+alt" && mod != "ctrl+shift" {
|
|
||||||
mod = "ctrl+alt"
|
|
||||||
}
|
|
||||||
return mod
|
|
||||||
}
|
|
||||||
|
|
||||||
func echoConsoleByte(out io.Writer, b byte) { _, _ = out.Write([]byte{b}) }
|
func echoConsoleByte(out io.Writer, b byte) { _, _ = out.Write([]byte{b}) }
|
||||||
func echoConsoleNewline(out io.Writer) { _, _ = io.WriteString(out, "\r\n") }
|
func echoConsoleNewline(out io.Writer) { _, _ = io.WriteString(out, "\r\n") }
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
tea "github.com/charmbracelet/bubbletea"
|
tea "github.com/charmbracelet/bubbletea"
|
||||||
|
"github.com/jixishi/SerialTerminalForWindowsTerminal/internal/config"
|
||||||
"github.com/jixishi/SerialTerminalForWindowsTerminal/internal/event"
|
"github.com/jixishi/SerialTerminalForWindowsTerminal/internal/event"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -55,13 +56,7 @@ func (m *Model) isLocalHotkey(key, action string) bool {
|
|||||||
return hasCtrl && hasAlt
|
return hasCtrl && hasAlt
|
||||||
}
|
}
|
||||||
|
|
||||||
func normalizeHotkeyPrefix(mod string) string {
|
func normalizeHotkeyPrefix(mod string) string { return config.NormalizeHotkey(mod) }
|
||||||
mod = strings.ToLower(strings.TrimSpace(mod))
|
|
||||||
if mod != "ctrl+alt" && mod != "ctrl+shift" {
|
|
||||||
mod = "ctrl+alt"
|
|
||||||
}
|
|
||||||
return mod
|
|
||||||
}
|
|
||||||
|
|
||||||
func hotkeyWith(mod, action string) string {
|
func hotkeyWith(mod, action string) string {
|
||||||
return normalizeHotkeyPrefix(mod) + "+" + action
|
return normalizeHotkeyPrefix(mod) + "+" + action
|
||||||
|
|||||||
Reference in New Issue
Block a user