Skip to content

Commit 6feaa8d

Browse files
committed
(#47) Refactored keyboard provider
1 parent ace2dda commit 6feaa8d

File tree

2 files changed

+63
-28
lines changed

2 files changed

+63
-28
lines changed

lib/provider/native/keyboard-action-provider.interface.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -20,29 +20,29 @@ export interface KeyboardActionProvider {
2020
* @param {string} input The text to type
2121
* @memberof KeyboardActionProvider
2222
*/
23-
type(input: string): void;
23+
type(input: string): Promise<void>;
2424

2525
/**
2626
* Click should allow to press a single key via OS level keyboard event
2727
*
2828
* @param {Key[]} keys The keys to click
2929
* @memberof KeyboardActionProvider
3030
*/
31-
click(...keys: Key[]): void;
31+
click(...keys: Key[]): Promise<void>;
3232

3333
/**
3434
* pressKey should allow to press and hold a key via OS level keyboard event
3535
*
3636
* @param {Key[]} keys to press and hold
3737
* @memberof KeyboardActionProvider
3838
*/
39-
pressKey(...keys: Key[]): void;
39+
pressKey(...keys: Key[]): Promise<void>;
4040

4141
/**
4242
* releaseKey should release a pressed key via OS level keyboard event
4343
*
4444
* @param {Key[]} keys to release
4545
* @memberof KeyboardActionProvider
4646
*/
47-
releaseKey(...keys: Key[]): void;
47+
releaseKey(...keys: Key[]): Promise<void>;
4848
}

lib/provider/native/robotjs-keyboard-action.class.ts

+59-24
Original file line numberDiff line numberDiff line change
@@ -129,41 +129,76 @@ export class KeyboardAction implements KeyboardActionProvider {
129129
.filter(modifierKey => modifierKey != null && modifierKey.length > 1);
130130
}
131131

132-
private static key(key: Key, event: "up" | "down", ...modifiers: Key[]) {
133-
const nativeKey = KeyboardAction.keyLookup(key);
134-
const modifierKeys = this.mapModifierKeys(...modifiers);
135-
if (nativeKey) {
136-
robot.keyToggle(nativeKey, event, modifierKeys);
137-
}
132+
private static key(key: Key, event: "up" | "down", ...modifiers: Key[]): Promise<void> {
133+
return new Promise<void>((resolve, reject) => {
134+
try {
135+
const nativeKey = KeyboardAction.keyLookup(key);
136+
const modifierKeys = this.mapModifierKeys(...modifiers);
137+
if (nativeKey) {
138+
robot.keyToggle(nativeKey, event, modifierKeys);
139+
}
140+
resolve();
141+
} catch (e) {
142+
reject(e);
143+
}
144+
});
138145
}
139146

140147
constructor() {
141148
}
142149

143-
public type(input: string): void {
144-
robot.typeString(input);
150+
public type(input: string): Promise<void> {
151+
return new Promise<void>(((resolve, reject) => {
152+
try {
153+
robot.typeString(input);
154+
resolve();
155+
} catch (e) {
156+
reject(e);
157+
}
158+
}));
145159
}
146160

147-
public click(...keys: Key[]): void {
148-
keys.reverse();
149-
const [key, ...modifiers] = keys;
150-
const nativeKey = KeyboardAction.keyLookup(key);
151-
const modifierKeys = KeyboardAction.mapModifierKeys(...modifiers);
152-
if (nativeKey) {
153-
robot.keyTap(nativeKey, modifierKeys);
154-
}
161+
public click(...keys: Key[]): Promise<void> {
162+
return new Promise<void>(((resolve, reject) => {
163+
try {
164+
keys.reverse();
165+
const [key, ...modifiers] = keys;
166+
const nativeKey = KeyboardAction.keyLookup(key);
167+
const modifierKeys = KeyboardAction.mapModifierKeys(...modifiers);
168+
if (nativeKey) {
169+
robot.keyTap(nativeKey, modifierKeys);
170+
}
171+
resolve();
172+
} catch (e) {
173+
reject(e);
174+
}
175+
}));
155176
}
156177

157-
public pressKey(...keys: Key[]): void {
158-
keys.reverse();
159-
const [key, ...modifiers] = keys;
160-
KeyboardAction.key(key, "down", ...modifiers);
178+
public pressKey(...keys: Key[]): Promise<void> {
179+
return new Promise<void>(((resolve, reject) => {
180+
try {
181+
keys.reverse();
182+
const [key, ...modifiers] = keys;
183+
KeyboardAction.key(key, "down", ...modifiers);
184+
resolve();
185+
} catch (e) {
186+
reject(e);
187+
}
188+
}));
161189
}
162190

163-
public releaseKey(...keys: Key[]): void {
164-
keys.reverse();
165-
const [key, ...modifiers] = keys;
166-
KeyboardAction.key(key, "up", ...modifiers);
191+
public releaseKey(...keys: Key[]): Promise<void> {
192+
return new Promise<void>(((resolve, reject) => {
193+
try {
194+
keys.reverse();
195+
const [key, ...modifiers] = keys;
196+
KeyboardAction.key(key, "up", ...modifiers);
197+
resolve();
198+
} catch (e) {
199+
reject(e);
200+
}
201+
}));
167202
}
168203

169204
public setKeyboardDelay(delay: number): void {

0 commit comments

Comments
 (0)