Add the macOS client spike and record its SwiftUI gap results
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user