diff --git a/Sources/UI/SettingsWindow.swift b/Sources/UI/SettingsWindow.swift index efcfc67..0504cc9 100644 --- a/Sources/UI/SettingsWindow.swift +++ b/Sources/UI/SettingsWindow.swift @@ -40,6 +40,35 @@ final class SettingsWindow: NSWindow { center() } + // MARK: - 快捷键支持(LSUIElement 无 Edit 菜单,需手动转发) + + override func performKeyEquivalent(with event: NSEvent) -> Bool { + // 仅拦截 Cmd 组合键 + guard event.modifierFlags.contains(.command) else { + return super.performKeyEquivalent(with: event) + } + + let selector: Selector? + switch event.charactersIgnoringModifiers?.lowercased() { + case "a": selector = #selector(NSText.selectAll(_:)) + case "c": selector = Selector(("copy:")) + case "v": selector = Selector(("paste:")) + case "x": selector = Selector(("cut:")) + default: selector = nil + } + + guard let sel = selector else { + return super.performKeyEquivalent(with: event) + } + + // 发送到第一响应者链 + if NSApp.sendAction(sel, to: nil, from: self) { + return true + } + + return super.performKeyEquivalent(with: event) + } + private func buildUI() { guard let content = contentView else { return }