@@ -73,6 +73,28 @@ final class KeyboardLayoutTests: XCTestCase {
7373 uninstallInputSource ( id: ABCKeyboardID)
7474 }
7575
76+ func testKeyCodesForABCKeyboardWithCommandModifier( ) {
77+ let isInstalledABCKeyboard = isInstalledInputSource ( id: ABCKeyboardID)
78+ XCTAssertTrue ( installInputSource ( id: ABCKeyboardID) )
79+ XCTAssertTrue ( selectInputSource ( id: ABCKeyboardID) )
80+ let notificationCenter = NotificationCenter ( )
81+ let keyboardLayout = KeyboardLayout ( notificationCenter: notificationCenter)
82+ let vKeyCode = keyboardLayout. currentKeyCode ( for: . v, carbonModifiers: cmdKey)
83+ XCTAssertEqual ( vKeyCode, CGKeyCode ( QWERTYVKeyCode) )
84+ let vKey = keyboardLayout. currentKey ( for: QWERTYVKeyCode, carbonModifiers: cmdKey)
85+ XCTAssertEqual ( vKey, . v)
86+ let vCharacter = keyboardLayout. currentCharacter ( for: QWERTYVKeyCode, carbonModifiers: cmdKey)
87+ XCTAssertEqual ( vCharacter, " v " )
88+ let vShiftCharacter = keyboardLayout. currentCharacter ( for: QWERTYVKeyCode, carbonModifiers: modifierTransformer. carbonFlags ( from: [ . shift, . command] ) )
89+ XCTAssertEqual ( vShiftCharacter, " V " )
90+ let vOptionCharacter = keyboardLayout. currentCharacter ( for: QWERTYVKeyCode, carbonModifiers: modifierTransformer. carbonFlags ( from: [ . option, . command] ) )
91+ XCTAssertEqual ( vOptionCharacter, " √ " )
92+ let vShiftOptionCharacter = keyboardLayout. currentCharacter ( for: QWERTYVKeyCode, carbonModifiers: modifierTransformer. carbonFlags ( from: [ . shift, . option, . command] ) )
93+ XCTAssertEqual ( vShiftOptionCharacter, " ◊ " )
94+ guard !isInstalledABCKeyboard else { return }
95+ uninstallInputSource ( id: ABCKeyboardID)
96+ }
97+
7698 func testKeyCodesForDvorakKeyboard( ) {
7799 let isInstalledDvorakKeyboard = isInstalledInputSource ( id: dvorakKeyboardID)
78100 XCTAssertTrue ( installInputSource ( id: dvorakKeyboardID) )
@@ -85,11 +107,11 @@ final class KeyboardLayoutTests: XCTestCase {
85107 XCTAssertEqual ( vKey, . v)
86108 let vCharacter = keyboardLayout. currentCharacter ( for: DvorakVKeyCode, carbonModifiers: 0 )
87109 XCTAssertEqual ( vCharacter, " v " )
88- let vShiftCharacter = keyboardLayout. currentCharacter ( for: DvorakVKeyCode, carbonModifiers: modifierTransformer. carbonFlags ( from: [ . shift, . command ] ) )
110+ let vShiftCharacter = keyboardLayout. currentCharacter ( for: DvorakVKeyCode, carbonModifiers: modifierTransformer. carbonFlags ( from: . shift) )
89111 XCTAssertEqual ( vShiftCharacter, " V " )
90- let vOptionCharacter = keyboardLayout. currentCharacter ( for: DvorakVKeyCode, carbonModifiers: modifierTransformer. carbonFlags ( from: [ . option, . command ] ) )
112+ let vOptionCharacter = keyboardLayout. currentCharacter ( for: DvorakVKeyCode, carbonModifiers: modifierTransformer. carbonFlags ( from: [ . option] ) )
91113 XCTAssertEqual ( vOptionCharacter, " √ " )
92- let vShiftOptionCharacter = keyboardLayout. currentCharacter ( for: DvorakVKeyCode, carbonModifiers: modifierTransformer. carbonFlags ( from: [ . shift, . option, . command ] ) )
114+ let vShiftOptionCharacter = keyboardLayout. currentCharacter ( for: DvorakVKeyCode, carbonModifiers: modifierTransformer. carbonFlags ( from: [ . shift, . option] ) )
93115 XCTAssertEqual ( vShiftOptionCharacter, " ◊ " )
94116 guard !isInstalledDvorakKeyboard else { return }
95117 uninstallInputSource ( id: dvorakKeyboardID)
0 commit comments