import AppKit import SwiftTerm import SwiftUI typealias ViewState = State @main struct ByreApp: App { @ViewState private var connection = Connection() @ViewState private var spike = SpikeLog() var body: some Scene { Window("byre", id: "main") { RootView() .environment(connection) .environment(spike) .font(Fonts.font(13)) .onAppear { installCtrlMonitor(spike) } } .commands { CommandGroup(after: .appInfo) { Button("Change Server…") { connection.changeServer() } } PasteboardCommands() } } } @MainActor private func installCtrlMonitor(_ spike: SpikeLog) { NSEvent.addLocalMonitorForEvents(matching: .keyDown) { event in let flags = event.modifierFlags.intersection(.deviceIndependentFlagsMask) guard flags.contains(.control), !flags.contains(.command), let key = event.charactersIgnoringModifiers, ["k", "p", "l", "s", "/"].contains(key) else { return event } if event.window?.firstResponder is TerminalView { spike.log("ctrl-\(key) passed to the terminal") return event } spike.log("ctrl-\(key) taken as a Go shortcut") return nil } }