From 8409933daef1421afa0ba681d1992a806eed8f26 Mon Sep 17 00:00:00 2001 From: Serhii Bykov Date: Sun, 16 Aug 2026 13:41:53 +0200 Subject: [PATCH] fix(keyboard): show standalone special keys with combo-only filter --- .../Keyboard/KeyboardVisualizer.swift | 7 ++-- .../Keycaps/KeyboardVisualizerTests.swift | 33 +++++++++++++++++++ 2 files changed, 37 insertions(+), 3 deletions(-) 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) + } }