summaryrefslogtreecommitdiff
path: root/client/lib/keys.js
blob: c9e51aca370091f3f65eb21b45e98fe6a6b81e47 (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
30
31
32
33
34
35
36
37
38
39
const keys = {}
const key_numbers = {}
const letters = "zxcvbnmasdfghjklqwertyuiop"
const numbers = "1234567890"

let callback = function(){}

letters.toUpperCase().split("").map(function(k,i){
  keys[k.charCodeAt(0)] = i
})

numbers.split("").map(function(k,i){
  keys[k.charCodeAt(0)] = i+letters.length
  key_numbers[k.charCodeAt(0)] = true
})

window.addEventListener("keydown", keydown, true)
function keydown (e) {
  if (e.altKey || e.ctrlKey || e.metaKey) {
    e.stopPropagation()
    return
  }
  if (document.activeElement instanceof HTMLInputElement &&
      (e.keyCode in key_numbers)) {
    e.stopPropagation()
    return
  }
  if (! (e.keyCode in keys)) return
  var index = keys[e.keyCode]
  if (e.shiftKey) index += letters.length
  index -= 7
  callback(index)
}

function listen (fn) {
  callback = fn
}

export default { listen }