-
Notifications
You must be signed in to change notification settings - Fork 0
/
KeyboardInput.js
66 lines (55 loc) · 1.09 KB
/
KeyboardInput.js
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
const Cylon = require('cylon')
module.exports = Keyboard
function Keyboard (name) {
'use strict'
/**
* whether or not activity is logged to the console
*/
let _echo = false
Cylon.robot({
name: name,
connections: {
keyboard: {adaptor: 'keyboard'}
},
devices: {
keyboard: {driver: 'keyboard', connection: 'keyboard'}
},
work: (my) => {
my.keyboard.on('keypress', (key) => {
switch (key.name) {
case 'escape':
console.log('halting keyboard')
Cylon.halt()//TODO when the escape key is pressed, program should exit
break
default:
console.log(key.name, 'pressed')
break
}
})
my.keyboard.on('keyup', (key) => {
switch (key.name) {
default:
console.log(key.name, 'released')
break
}
})
},
commands: {
echo: {
toggle: () => {
_echo = !_echo
}
}
}
})
}
Keyboard.prototype.connect = (ip,port) => {
(port) ? null : port = '3300';
(ip) ? null : ip = '0.0.0.0';
Cylon.api('socketio',
{
host: ip,
port: port
})
}
Keyboard.prototype.start= () => {Cylon.start()}