Files
byre/mac/Sources/Byre/ByreApp.swift
T

41 lines
1.1 KiB
Swift

import AppKit
import SwiftTerm
import SwiftUI
typealias ViewState = State
@main
struct ByreApp: App {
@ViewState private var server = Server()
var body: some Scene {
Window("byre", id: "main") {
SpikeView()
.environment(server)
.font(Fonts.font(13))
.onAppear {
installCtrlMonitor(server)
}
}
.commands {
PasteboardCommands()
}
}
}
@MainActor
private func installCtrlMonitor(_ server: Server) {
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 {
server.log("ctrl-\(key) passed to the terminal")
return event
}
server.log("ctrl-\(key) taken as a Go shortcut")
return nil
}
}