Skip to content

Commit ff88df1

Browse files
committed
fix: add esc alias for escape key
Fixes #93
1 parent 22bbd22 commit ff88df1

File tree

4 files changed

+48
-3
lines changed

4 files changed

+48
-3
lines changed

Sources/SendKeysLib/Commands/KeyPressCommand.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public class KeyPressCommand: Command, RequiresKeyPresser {
3030
}
3131

3232
public override func execute() throws {
33-
try! keyPresser!.keyPress(key: key!, modifiers: modifiers)
33+
let _ = try! keyPresser!.keyPress(key: key!, modifiers: modifiers)
3434
}
3535

3636
public override func equals(_ comparison: Command) -> Bool {

Sources/SendKeysLib/KeyCodes.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ struct KeyCodes {
153153
"space": KeyCodeWithFlags(space),
154154
"delete": KeyCodeWithFlags(delete),
155155
"escape": KeyCodeWithFlags(escape),
156+
"esc": KeyCodeWithFlags(escape),
156157
"": KeyCodeWithFlags(command),
157158
"cmd": KeyCodeWithFlags(command),
158159
"command": KeyCodeWithFlags(command),

Sources/SendKeysLib/KeyPresser.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,12 @@ public class KeyPresser {
99
self.application = app
1010
}
1111

12-
func keyPress(key: String, modifiers: [String]) throws {
12+
func keyPress(key: String, modifiers: [String]) throws -> CGEvent? {
1313
if let keyDownEvent = try! keyDown(key: key, modifiers: modifiers) {
14-
let _ = keyUp(key: key, modifiers: modifiers, event: keyDownEvent)
14+
return keyUp(key: key, modifiers: modifiers, event: keyDownEvent)
1515
}
16+
17+
return nil
1618
}
1719

1820
func keyDown(key: String, modifiers: [String]) throws -> CGEvent? {
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import XCTest
2+
3+
@testable import SendKeysLib
4+
5+
final class KeyPresserTests: XCTestCase {
6+
func testEscapeKey() throws {
7+
let presser = KeyPresser(app: nil)
8+
let event = try! presser.keyPress(key: "escape", modifiers: [])
9+
10+
XCTAssertEqual(event!.getIntegerValueField(.keyboardEventKeycode), 53)
11+
}
12+
13+
func testEscapeKeyUsingAlias() throws {
14+
let presser = KeyPresser(app: nil)
15+
let event = try! presser.keyPress(key: "esc", modifiers: [])
16+
17+
XCTAssertEqual(event!.getIntegerValueField(.keyboardEventKeycode), 53)
18+
}
19+
20+
func testEnterKey() throws {
21+
let presser = KeyPresser(app: nil)
22+
let event = try! presser.keyPress(key: "return", modifiers: [])
23+
24+
XCTAssertEqual(event!.getIntegerValueField(.keyboardEventKeycode), 36)
25+
}
26+
27+
func testShiftModifier() throws {
28+
let presser = KeyPresser(app: nil)
29+
let event = try! presser.keyPress(key: "a", modifiers: ["shift"])
30+
31+
XCTAssertEqual(event!.getIntegerValueField(.keyboardEventKeycode), 0)
32+
XCTAssertTrue(event!.flags.contains([.maskShift]))
33+
}
34+
35+
func testCommandControlModifier() throws {
36+
let presser = KeyPresser(app: nil)
37+
let event = try! presser.keyPress(key: "c", modifiers: ["command", "control"])
38+
39+
XCTAssertEqual(event!.getIntegerValueField(.keyboardEventKeycode), 8)
40+
XCTAssertTrue(event!.flags.contains([.maskCommand, .maskControl]))
41+
}
42+
}

0 commit comments

Comments
 (0)