blob: 7e303feca46cb756651a8492ae59110a2a4a0f63 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
import key_codes, { KeyCode } from './key_codes';
export default function(
el: HTMLDocument | HTMLElement,
command: KeyCode[],
action: () => void
): void {
var key_buffer: number[] = [];
el.addEventListener('keydown', function(e: KeyboardEvent) {
command.forEach((key_code) => {
if (e.keyCode === key_code) {
key_buffer.push(key_code);
}
});
});
el.addEventListener('keyup', function(e: KeyboardEvent) {
if (key_buffer.length >= 2) {
var command_executed = key_buffer.length === command.length
&& key_buffer.every((value, index) => value === command[index]);
if (command_executed) {
action();
key_buffer = [];
}
}
});
};
|