diff --git a/Apps/Keyty/Sources/Keyty/Features/Visualizers/Keyboard/KeyboardVisualizer.swift b/Apps/Keyty/Sources/Keyty/Features/Visualizers/Keyboard/KeyboardVisualizer.swift index 370cd757..e6e30e37 100644 --- a/Apps/Keyty/Sources/Keyty/Features/Visualizers/Keyboard/KeyboardVisualizer.swift +++ b/Apps/Keyty/Sources/Keyty/Features/Visualizers/Keyboard/KeyboardVisualizer.swift @@ -136,12 +136,13 @@ final class KeyboardVisualizer { return } - if self.visualizerSettings.onlyShowModifiedKeystrokes && !keystroke.isModified { + let isSpecialKey = KeyboardSpecialKeyResolver.isSpecial(keystroke) + + if !self.visualizerSettings.showSpecialKeys, isSpecialKey { return } - if !self.visualizerSettings.showSpecialKeys, - KeyboardSpecialKeyResolver.isSpecial(keystroke) { + if self.visualizerSettings.onlyShowModifiedKeystrokes && !keystroke.isModified && !isSpecialKey { return } diff --git a/Apps/Keyty/Tests/KeytyTests/Features/Visualizers/Keyboard/Keycaps/KeyboardVisualizerTests.swift b/Apps/Keyty/Tests/KeytyTests/Features/Visualizers/Keyboard/Keycaps/KeyboardVisualizerTests.swift index 43a9f35e..f204a69d 100644 --- a/Apps/Keyty/Tests/KeytyTests/Features/Visualizers/Keyboard/Keycaps/KeyboardVisualizerTests.swift +++ b/Apps/Keyty/Tests/KeytyTests/Features/Visualizers/Keyboard/Keycaps/KeyboardVisualizerTests.swift @@ -59,4 +59,37 @@ final class KeyboardVisualizerTests: XCTestCase { XCTAssertEqual(self.visualizer.visibleGroupCount, 0) XCTAssertTrue(self.settings.isEnabled) } + + func testOnlyShowModifiedKeystrokesStillShowsStandaloneSpecialKeys() { + self.settings.onlyShowModifiedKeystrokes = true + self.settings.showSpecialKeys = true + self.visualizer.isPresentationActive = true + + self.visualizer.display(.keystroke(.stub(keyCode: .escape))) + + XCTAssertEqual(self.visualizer.visibleGroupCount, 1) + } + + func testOnlyShowModifiedKeystrokesStillHidesStandaloneRegularKeys() { + self.settings.onlyShowModifiedKeystrokes = true + self.visualizer.isPresentationActive = true + + self.visualizer.display(.keystroke(.stub( + keyCode: .a, + characters: "a", + charactersIgnoringModifiers: "a" + ))) + + XCTAssertEqual(self.visualizer.visibleGroupCount, 0) + } + + func testSpecialKeysToggleStillHidesStandaloneSpecialKeysWhenDisabled() { + self.settings.onlyShowModifiedKeystrokes = true + self.settings.showSpecialKeys = false + self.visualizer.isPresentationActive = true + + self.visualizer.display(.keystroke(.stub(keyCode: .escape))) + + XCTAssertEqual(self.visualizer.visibleGroupCount, 0) + } }