From 950e578a6bc7025682d01b6449d2bdfcefba6467 Mon Sep 17 00:00:00 2001 From: Serhii Bykov Date: Fri, 14 Aug 2026 17:39:23 +0200 Subject: [PATCH] fix(display): always uppercase layout-translated key legends --- .../Keyty/Services/Display/EventLegendResolver.swift | 6 +++--- .../EventLegendResolverStandardKeyEventTests.swift | 9 +++++---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Apps/Keyty/Sources/Keyty/Services/Display/EventLegendResolver.swift b/Apps/Keyty/Sources/Keyty/Services/Display/EventLegendResolver.swift index ce82ba9..a695425 100644 --- a/Apps/Keyty/Sources/Keyty/Services/Display/EventLegendResolver.swift +++ b/Apps/Keyty/Sources/Keyty/Services/Display/EventLegendResolver.swift @@ -90,10 +90,10 @@ private extension EventLegendResolver { // MARK: - Layout Translation private extension EventLegendResolver { - // The legend printed on the physical key, cased for a modified chord. + // The legend printed on the physical key, which is uppercase on a real + // keyboard whether or not a modifier is held. func translatedKey(_ keystroke: StandardKeyEvent) -> String { - let translated = self.uchrData.translatedKeyCode(keystroke.keyCode) - return keystroke.isModified ? Self.legendCased(translated) : translated + Self.legendCased(self.uchrData.translatedKeyCode(keystroke.keyCode)) } // Uppercases a legend only when the result keeps its length. diff --git a/Apps/Keyty/Tests/KeytyTests/Services/Display/EventLegendResolverStandardKeyEventTests.swift b/Apps/Keyty/Tests/KeytyTests/Services/Display/EventLegendResolverStandardKeyEventTests.swift index 94cae81..c21a2c6 100644 --- a/Apps/Keyty/Tests/KeytyTests/Services/Display/EventLegendResolverStandardKeyEventTests.swift +++ b/Apps/Keyty/Tests/KeytyTests/Services/Display/EventLegendResolverStandardKeyEventTests.swift @@ -51,12 +51,13 @@ extension EventLegendResolverStandardKeyEventTests { } } - /// A digit has no distinct uppercase form, so only letters show the casing rule. - func testLetterTextIsUppercasedOnlyWhenModified() { - for (modifiers, kinds, name) in Self.allModifierCombinations { + /// A legend is the label printed on the key, which is uppercase whether or + /// not a modifier is held. + func testLetterTextIsAlwaysUppercased() { + for (modifiers, _, name) in Self.allModifierCombinations { let legend = self.legend(.stub(keyCode: .a, modifiers: modifiers)) - XCTAssertEqual(legend.text, kinds.isEmpty ? "a" : "A", "for \(name)") + XCTAssertEqual(legend.text, "A", "for \(name)") XCTAssertEqual(legend.kind, .text, "for \(name)") } }