From d5e781e8e14bf7f1c4da06f558730f5de78ef24f Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Sat, 29 Feb 2020 18:30:58 -0500 Subject: [PATCH] Adds macOS UI option to use logical keyboard input. --- .../Mac/Clock Signal/Base.lproj/MainMenu.xib | 26 +++++++------------ .../Documents/MachineDocument.swift | 17 ++++++++++-- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/OSBindings/Mac/Clock Signal/Base.lproj/MainMenu.xib b/OSBindings/Mac/Clock Signal/Base.lproj/MainMenu.xib index 43bcadf11..36741cd62 100644 --- a/OSBindings/Mac/Clock Signal/Base.lproj/MainMenu.xib +++ b/OSBindings/Mac/Clock Signal/Base.lproj/MainMenu.xib @@ -1,8 +1,8 @@ - + - + @@ -121,18 +121,6 @@ - - - - - - - - - - - - @@ -176,9 +164,14 @@ - + - + + + + + + @@ -227,6 +220,7 @@ + diff --git a/OSBindings/Mac/Clock Signal/Documents/MachineDocument.swift b/OSBindings/Mac/Clock Signal/Documents/MachineDocument.swift index 14bc46168..f60789319 100644 --- a/OSBindings/Mac/Clock Signal/Documents/MachineDocument.swift +++ b/OSBindings/Mac/Clock Signal/Documents/MachineDocument.swift @@ -531,10 +531,14 @@ class MachineDocument: } // MARK: Joystick-via-the-keyboard selection - @IBAction func useKeyboardAsKeyboard(_ sender: NSMenuItem?) { + @IBAction func useKeyboardAsPhysicalKeyboard(_ sender: NSMenuItem?) { machine.inputMode = .keyboardPhysical } + @IBAction func useKeyboardAsLogicalKeyboard(_ sender: NSMenuItem?) { + machine.inputMode = .keyboardLogical + } + @IBAction func useKeyboardAsJoystick(_ sender: NSMenuItem?) { machine.inputMode = .joystick } @@ -545,7 +549,7 @@ class MachineDocument: override func validateUserInterfaceItem(_ item: NSValidatedUserInterfaceItem) -> Bool { if let menuItem = item as? NSMenuItem { switch item.action { - case #selector(self.useKeyboardAsKeyboard): + case #selector(self.useKeyboardAsPhysicalKeyboard): if machine == nil || !machine.hasExclusiveKeyboard { menuItem.state = .off return false @@ -554,6 +558,15 @@ class MachineDocument: menuItem.state = machine.inputMode == .keyboardPhysical ? .on : .off return true + case #selector(self.useKeyboardAsLogicalKeyboard): + if machine == nil || !machine.hasExclusiveKeyboard { + menuItem.state = .off + return false + } + + menuItem.state = machine.inputMode == .keyboardLogical ? .on : .off + return true + case #selector(self.useKeyboardAsJoystick): if machine == nil || !machine.hasJoystick { menuItem.state = .off