From bc6f00f4b184f17ee67085d2436e205b871f9d59 Mon Sep 17 00:00:00 2001 From: tudnai Date: Thu, 8 Dec 2022 15:27:45 -0800 Subject: [PATCH] KeyDown events in Debugger Window Controller --- A2Mac/Base.lproj/Debugger.storyboard | 30 +++++------ A2Mac/DebuggerViewController.swift | 4 +- A2Mac/DebuggerWindowController.swift | 75 ++++++++++++++++++++++++++-- 3 files changed, 89 insertions(+), 20 deletions(-) diff --git a/A2Mac/Base.lproj/Debugger.storyboard b/A2Mac/Base.lproj/Debugger.storyboard index e32580a..bb19ad2 100644 --- a/A2Mac/Base.lproj/Debugger.storyboard +++ b/A2Mac/Base.lproj/Debugger.storyboard @@ -237,7 +237,7 @@ - + @@ -245,7 +245,7 @@ - + @@ -256,7 +256,7 @@ - + @@ -267,14 +267,14 @@ - + - + @@ -292,13 +292,13 @@ - + - + @@ -372,17 +372,17 @@ - + - + - + - + @@ -436,8 +436,8 @@ - - + + @@ -558,7 +558,7 @@ - + @@ -812,7 +812,7 @@ - + diff --git a/A2Mac/DebuggerViewController.swift b/A2Mac/DebuggerViewController.swift index e9be738..0042b99 100644 --- a/A2Mac/DebuggerViewController.swift +++ b/A2Mac/DebuggerViewController.swift @@ -532,11 +532,13 @@ N V - B D I Z C } + let leftSideSize = CGFloat(30) + // select disassembly line override func mouseDown(with event: NSEvent) { let location = convertMouseCoordinates(scrollView: Disass_Scroll, display: Disass_Display, mouseLocation: event.locationInWindow) - if location.x < 30 { + if location.x < leftSideSize { let line = getLine(inView: Disass_Display, forY: location.y) let addr = getAddr(forLine: line) diff --git a/A2Mac/DebuggerWindowController.swift b/A2Mac/DebuggerWindowController.swift index 8fb810b..b7d6403 100644 --- a/A2Mac/DebuggerWindowController.swift +++ b/A2Mac/DebuggerWindowController.swift @@ -40,6 +40,11 @@ class DebuggerWindowController: NSWindowController, NSWindowDelegate { if isWindowFullscreen { window?.toggleFullScreen(self) } + + NSEvent.addLocalMonitorForEvents(matching: .keyDown) { + return self.keyHandler(with: $0) + // return nil // $0 + } } @@ -156,16 +161,78 @@ class DebuggerWindowController: NSWindowController, NSWindowDelegate { } } + // AppleScript Keycodes + let leftArrowKey = 123 + let rightArrowKey = 124 + let upArrowKey = 126 + let downArrowKey = 125 + + let F4FunctionKey = 118 + let F5FunctionKey = 96 + let F6FunctionKey = 97 + let F7FunctionKey = 98 + let F8FunctionKey = 100 + + + func keyHandler(with event: NSEvent) -> NSEvent? { + let keyCode = Int(event.keyCode) + + print("keyDown DWC:", keyCode) + + switch keyCode { + case leftArrowKey: + break + + case rightArrowKey: + break + + case downArrowKey: + break + + case upArrowKey: + if isKey { + print("upArrowKeyDn in Debugger") + break + } + + print("upArrowKeyDn outside of Debugger") + + + case F4FunctionKey: + Continue() + + case F5FunctionKey: + Pause() + + case F6FunctionKey: + Step_Over(event) + + case F7FunctionKey: + Step_In(event) + + case F8FunctionKey: + Step_Out(event) + + default: +// print("keycode: %d", keyCode) + return event + } + + return nil + } + + + let JSR_instr_code : UInt8 = 0x20 @IBAction func Step_Over(_ sender: Any) { - if MEM[Int(m6502.PC)] == 0x20 { + if MEM[Int(m6502.PC)] == JSR_instr_code { m6502.debugger.SP = m6502.SP > 1 ? m6502.SP : 0 m6502.debugger.wMask = 0 m6502.debugger.mask.out = 1 - m6502.debugger.mask.hlt = 1; - m6502.debugger.mask.brk = 1; - m6502.debugger.mask.inv = 1; + m6502.debugger.mask.hlt = 1 + m6502.debugger.mask.brk = 1 + m6502.debugger.mask.inv = 1 m6502.debugger.on = true