- keyboard handling depends on Debugger Window focused or not - so handling textFields in DebuggerWindow is possible

- Added key binding to Debugger
This commit is contained in:
tudnai 2022-10-29 10:14:25 -07:00
parent 17ee6a3e2c
commit 594feb4618
3 changed files with 143 additions and 63 deletions

View File

@ -120,7 +120,8 @@
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="RZL-Zg-BzE"/>
<menuItem title="Apple DOS 3.3 January 1983" keyEquivalent="1" identifier="Apple DOS 3.3 January 1983" id="KuV-6R-gyL">
<menuItem title="Apple DOS 3.3 January 1983" identifier="Apple DOS 3.3 January 1983" id="KuV-6R-gyL">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="Disk1_Selected:" target="Voe-Tx-rLC" id="fFn-bN-fJA"/>
</connections>
@ -144,7 +145,8 @@
<action selector="Disk1_Selected:" target="Voe-Tx-rLC" id="43k-vB-bj0"/>
</connections>
</menuItem>
<menuItem title="Merlin Assembler (early version, 40-column, DOS 3.3) side A" keyEquivalent="2" identifier="Merlin Assembler (early version, 40-column, DOS 3.3) side A" id="m64-gM-Lqu">
<menuItem title="Merlin Assembler (early version, 40-column, DOS 3.3) side A" identifier="Merlin Assembler (early version, 40-column, DOS 3.3) side A" id="m64-gM-Lqu">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="Disk1_Selected:" target="Voe-Tx-rLC" id="Fky-ox-w05"/>
</connections>
@ -180,7 +182,8 @@
<action selector="Disk1_Selected:" target="Voe-Tx-rLC" id="JUf-es-jdV"/>
</connections>
</menuItem>
<menuItem title="Apple II+ Dealer Diagnostics" keyEquivalent="3" identifier="Apple II+ Dealer Diagnostics" id="jjf-fs-rZ7">
<menuItem title="Apple II+ Dealer Diagnostics" identifier="Apple II+ Dealer Diagnostics" id="jjf-fs-rZ7">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="Disk1_Selected:" target="Voe-Tx-rLC" id="vIK-Yl-r1f"/>
</connections>
@ -191,7 +194,8 @@
<action selector="Disk1_Selected:" target="Voe-Tx-rLC" id="Bwc-m1-LET"/>
</connections>
</menuItem>
<menuItem title="LockSmith v6.0" keyEquivalent="4" identifier="locksmith_v6.0" id="lZl-BU-L3p">
<menuItem title="LockSmith v6.0" identifier="locksmith_v6.0" id="lZl-BU-L3p">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="Disk1_Selected:" target="Voe-Tx-rLC" id="xAB-nY-zVJ"/>
</connections>
@ -202,23 +206,27 @@
<action selector="Disk1_Selected:" target="Voe-Tx-rLC" id="MrU-cD-yHm"/>
</connections>
</menuItem>
<menuItem title="XPS Diagnostic IIe" keyEquivalent="5" identifier="XPS Diagnostic IIe" id="zBI-ok-Se7">
<menuItem title="XPS Diagnostic IIe" identifier="XPS Diagnostic IIe" id="zBI-ok-Se7">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="Disk1_Selected:" target="Voe-Tx-rLC" id="GUr-Zl-fYR"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="kb8-Z5-nGS"/>
<menuItem title="Donkey Kong" keyEquivalent="6" identifier="Donkey Kong" id="ero-Yw-Fxy">
<menuItem title="Donkey Kong" identifier="Donkey Kong" id="ero-Yw-Fxy">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="Disk1_Selected:" target="Voe-Tx-rLC" id="wwf-cD-Lv9"/>
</connections>
</menuItem>
<menuItem title="Qbit" keyEquivalent="7" identifier="Qbit" id="3yK-n1-y7H">
<menuItem title="Qbit" identifier="Qbit" id="3yK-n1-y7H">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="Disk1_Selected:" target="Voe-Tx-rLC" id="c8a-9v-oR4"/>
</connections>
</menuItem>
<menuItem title="Sneakers" keyEquivalent="8" identifier="Sneakers" id="iAb-YK-Q8d">
<menuItem title="Sneakers" identifier="Sneakers" id="iAb-YK-Q8d">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="Disk1_Selected:" target="Voe-Tx-rLC" id="zhC-rp-mN0"/>
</connections>
@ -235,7 +243,8 @@
<action selector="Disk1_Selected:" target="Voe-Tx-rLC" id="hRl-0O-47L"/>
</connections>
</menuItem>
<menuItem title="Xonix" keyEquivalent="9" identifier="Xonix" id="242-uR-ubX">
<menuItem title="Xonix" identifier="Xonix" id="242-uR-ubX">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="Disk1_Selected:" target="Voe-Tx-rLC" id="Ysg-X9-qeK"/>
</connections>
@ -782,8 +791,8 @@
<action selector="PowerOn:" target="Voe-Tx-rLC" id="IYU-yC-Gc6"/>
</connections>
</menuItem>
<menuItem title=" ❙❙ Pause" id="UvV-rl-Pa2">
<modifierMask key="keyEquivalentModifierMask"/>
<menuItem title=" ❙❙ Pause" keyEquivalent=" " id="UvV-rl-Pa2">
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
<connections>
<action selector="Pause:" target="Voe-Tx-rLC" id="DhQ-Sl-WbJ"/>
</connections>
@ -796,13 +805,18 @@
</menuItem>
<menuItem isSeparatorItem="YES" id="EpV-Zl-RlZ"/>
<menuItem title="Cold Reset" id="nzj-IC-y8T">
<modifierMask key="keyEquivalentModifierMask"/>
<string key="keyEquivalent" base64-UTF8="YES">
Gw
</string>
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
<connections>
<action selector="ColdReset:" target="Voe-Tx-rLC" id="sWD-Vp-yRD"/>
</connections>
</menuItem>
<menuItem title="Warm Reset" id="ivK-Gh-v9c">
<modifierMask key="keyEquivalentModifierMask"/>
<string key="keyEquivalent" base64-UTF8="YES">
Gw
</string>
<connections>
<action selector="WarmReset:" target="Voe-Tx-rLC" id="rnE-hI-s4T"/>
</connections>
@ -834,6 +848,14 @@
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Debug" id="7qQ-fs-ZQH">
<items>
<menuItem title="Show Debug" image="NSListViewTemplate" id="qj2-MQ-kvf">
<attributedString key="attributedTitle"/>
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="DebugContinue:" target="Voe-Tx-rLC" id="9vz-Qv-9Nq"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="cie-yN-x37"/>
<menuItem title=" Continue" image="NSTouchBarSkipToEndTemplate" id="4XT-55-ZIi">
<attributedString key="attributedTitle"/>
<modifierMask key="keyEquivalentModifierMask"/>
@ -847,25 +869,21 @@
<action selector="Pause:" target="Voe-Tx-rLC" id="ZHS-S4-fpJ"/>
</connections>
</menuItem>
<menuItem title=" Step Over" image="NSTouchBarGoForwardTemplate" keyEquivalent="" id="sJB-Vb-4l9">
<modifierMask key="keyEquivalentModifierMask"/>
<menuItem title=" Step Over" image="NSTouchBarGoForwardTemplate" keyEquivalent="6" id="sJB-Vb-4l9">
<connections>
<action selector="DebugStepOver:" target="Voe-Tx-rLC" id="j9J-b7-Qc7"/>
</connections>
</menuItem>
<menuItem title="Step In" image="NSTouchBarGoDownTemplate" keyEquivalent="" id="8Ex-Dj-aTQ">
<modifierMask key="keyEquivalentModifierMask"/>
<menuItem title="Step In" image="NSTouchBarGoDownTemplate" keyEquivalent="7" id="8Ex-Dj-aTQ">
<connections>
<action selector="DebugStepIn:" target="Voe-Tx-rLC" id="VS2-dJ-ej6"/>
</connections>
</menuItem>
<menuItem title="Step Out" image="NSTouchBarGoUpTemplate" keyEquivalent="" id="nJ4-nf-edr">
<modifierMask key="keyEquivalentModifierMask"/>
<menuItem title="Step Out" image="NSTouchBarGoUpTemplate" keyEquivalent="8" id="nJ4-nf-edr">
<connections>
<action selector="DebugStepOut:" target="Voe-Tx-rLC" id="yLP-2Q-Aj3"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="cie-yN-x37"/>
<menuItem isSeparatorItem="YES" id="jeh-zg-X9x"/>
</items>
</menu>
@ -1941,16 +1959,34 @@
<menuItem title="Quick Disk" tag="21" id="cth-H6-Drg"/>
<menuItem title="Disk Sound" state="on" tag="22" id="5cI-3C-PMM"/>
<menuItem isSeparatorItem="YES" id="uDF-ui-Ho0"/>
<menuItem title="Apple DOS 3.3 January 1983" tag="1000" keyEquivalent="1" id="KA0-R9-E92"/>
<menuItem title="Merlin Assembler" tag="1000" keyEquivalent="2" id="yRn-vq-bwc"/>
<menuItem title="Apple II+ Dealer Diagnostics" tag="1000" keyEquivalent="3" id="LwD-Oc-zna"/>
<menuItem title="LockSmith v6.0" tag="1000" keyEquivalent="4" id="O53-ih-1JA"/>
<menuItem title="XPS Diagnostic IIe" tag="1000" keyEquivalent="5" id="31n-KV-XJd"/>
<menuItem title="Donkey Kong" tag="1000" keyEquivalent="6" id="Bde-EV-3Og"/>
<menuItem title="Qbit" tag="1000" keyEquivalent="7" id="enu-GL-UoY"/>
<menuItem title="Sneakers" tag="1000" keyEquivalent="8" id="RKR-CY-boE"/>
<menuItem title="Apple DOS 3.3 January 1983" tag="1000" id="KA0-R9-E92">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Merlin Assembler" tag="1000" id="yRn-vq-bwc">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Apple II+ Dealer Diagnostics" tag="1000" id="LwD-Oc-zna">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="LockSmith v6.0" tag="1000" id="O53-ih-1JA">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="XPS Diagnostic IIe" tag="1000" id="31n-KV-XJd">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Donkey Kong" tag="1000" id="Bde-EV-3Og">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Qbit" tag="1000" id="enu-GL-UoY">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Sneakers" tag="1000" id="RKR-CY-boE">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Wavy Navy" tag="1000" id="Iya-rl-ZTV"/>
<menuItem title="Xonix" tag="1000" keyEquivalent="9" id="pSK-h5-XrY"/>
<menuItem title="Xonix" tag="1000" id="pSK-h5-XrY">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Lode Runner" tag="1000" id="w5E-lk-aOS"/>
</items>
</menu>
@ -1975,16 +2011,34 @@
<menuItem title="Quick Disk" tag="21" id="yDH-Ob-i3N"/>
<menuItem title="Disk Sound" state="on" tag="22" id="vmR-CG-qdv"/>
<menuItem isSeparatorItem="YES" id="T8N-lz-JYX"/>
<menuItem title="Apple DOS 3.3 January 1983" tag="1000" keyEquivalent="1" id="P7T-XT-Cdu"/>
<menuItem title="Merlin Assembler" tag="1000" keyEquivalent="2" id="tB8-sJ-HlO"/>
<menuItem title="Apple II+ Dealer Diagnostics" tag="1000" keyEquivalent="3" id="dGd-Db-yBA"/>
<menuItem title="LockSmith v6.0" tag="1000" keyEquivalent="4" id="szs-zR-mkn"/>
<menuItem title="XPS Diagnostic IIe" tag="1000" keyEquivalent="5" id="EPI-Ma-d6C"/>
<menuItem title="Donkey Kong" tag="1000" keyEquivalent="6" id="XyX-n0-A2F"/>
<menuItem title="Qbit" tag="1000" keyEquivalent="7" id="oMK-5v-QR3"/>
<menuItem title="Sneakers" tag="1000" keyEquivalent="8" id="dZn-Mw-uXV"/>
<menuItem title="Apple DOS 3.3 January 1983" tag="1000" id="P7T-XT-Cdu">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Merlin Assembler" tag="1000" id="tB8-sJ-HlO">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Apple II+ Dealer Diagnostics" tag="1000" id="dGd-Db-yBA">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="LockSmith v6.0" tag="1000" id="szs-zR-mkn">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="XPS Diagnostic IIe" tag="1000" id="EPI-Ma-d6C">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Donkey Kong" tag="1000" id="XyX-n0-A2F">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Qbit" tag="1000" id="oMK-5v-QR3">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Sneakers" tag="1000" id="dZn-Mw-uXV">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Wavy Navy" tag="1000" id="eO9-bs-03B"/>
<menuItem title="Xonix" tag="1000" keyEquivalent="9" id="Ui5-Id-ckw"/>
<menuItem title="Xonix" tag="1000" id="Ui5-Id-ckw">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Lode Runner" tag="1000" id="5tF-q8-j5x"/>
</items>
</menu>
@ -2358,6 +2412,7 @@
<image name="Green" width="32" height="32"/>
<image name="Joystick" width="32" height="32"/>
<image name="NSActionTemplate" width="14" height="14"/>
<image name="NSListViewTemplate" width="14" height="10"/>
<image name="NSTouchBarAudioOutputMuteTemplate" width="26" height="30"/>
<image name="NSTouchBarAudioOutputVolumeLowTemplate" width="23" height="30"/>
<image name="NSTouchBarAudioOutputVolumeMediumTemplate" width="23" height="30"/>

View File

@ -42,6 +42,19 @@ class DebuggerWindowController: NSWindowController, NSWindowDelegate {
}
var isKey : Bool = false
func windowDidBecomeKey(_ notification: Notification) {
// NSLog("windowDidBecomeKey")
isKey = true
}
func windowDidResignKey(_ notification: Notification) {
// NSLog("windowDidResignKey")
isKey = false
}
// TODO: Probably there is a better way to achieve this
// fill non-break spaces to provide uniform button width
let offLabel = "Off \u{A0}\u{A0}\u{A0}\u{A0}\u{A0}\u{A0}\u{A0}\u{A0}\u{A0}"

View File

@ -592,7 +592,10 @@ class ViewController: NSViewController {
pdl_diffarr[3] = pdl_valarr[3] - pdl_prevarr[3]
}
}
var savedVideoMode = videoMode_t.init()
override func keyDown(with event: NSEvent) {
@ -705,9 +708,6 @@ class ViewController: NSViewController {
}
var savedVideoMode = videoMode_t.init()
override func keyUp(with event: NSEvent) {
// print("keyUp")
// switch event.modifierFlags.intersection(.deviceIndependentFlagsMask) {
@ -840,8 +840,6 @@ class ViewController: NSViewController {
}
}
var was = 0;
@ -1417,6 +1415,38 @@ class ViewController: NSViewController {
@IBOutlet weak var disk1_closed: NSImageView!
@IBOutlet weak var disk2_closed: NSImageView!
func keyEventsOn() {
// NSEvent.removeMonitor(NSEvent.EventType.flagsChanged)
// NSEvent.addLocalMonitorForEvents(matching: .flagsChanged) {
// self.flagsChanged(with: $0)
// return $0
// }
// NSEvent.removeMonitor(NSEvent.EventType.keyDown)
NSEvent.addLocalMonitorForEvents(matching: .keyDown) {
// print("keyDown event")
if DebuggerWindowController.current?.isKey ?? false {
return $0
}
self.keyDown(with: $0)
return nil
}
NSEvent.addLocalMonitorForEvents(matching: .keyUp) {
// print("keyUp event")
if DebuggerWindowController.current?.isKey ?? false {
return $0
}
self.keyUp(with: $0)
return nil
}
}
override func viewDidLoad() {
super.viewDidLoad()
@ -1480,25 +1510,7 @@ class ViewController: NSViewController {
self.textDisplayScroller.scaleUnitSquare(to: NSSize(width: 1, height: 1))
// NSEvent.removeMonitor(NSEvent.EventType.flagsChanged)
// NSEvent.addLocalMonitorForEvents(matching: .flagsChanged) {
// self.flagsChanged(with: $0)
// return $0
// }
// NSEvent.removeMonitor(NSEvent.EventType.keyDown)
NSEvent.addLocalMonitorForEvents(matching: .keyDown) {
// print("keyDown event")
self.keyDown(with: $0)
return nil
// return $0
}
NSEvent.addLocalMonitorForEvents(matching: .keyUp) {
// print("keyUp event")
self.keyUp(with: $0)
return nil
// return $0
}
keyEventsOn()
// displayField.maximumNumberOfLines = textLines
// displayField.preferredMaxLayoutWidth = displayField.frame.width