From 636b62aa6d0d77e19a4b7bb3c039924eeb217a71 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Sat, 3 Mar 2018 05:38:35 +0100 Subject: hall demo --- client/lib/keys.js | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 client/lib/keys.js (limited to 'client/lib/keys.js') diff --git a/client/lib/keys.js b/client/lib/keys.js new file mode 100644 index 0000000..5b98ace --- /dev/null +++ b/client/lib/keys.js @@ -0,0 +1,41 @@ +const keys = {} +const key_numbers = {} +const letters = "yxcvbnmasdfghjklqwertuiopz" +const numbers = "1234567890" + +let callback = function(){} + +letters.toUpperCase().split("").map(function(k,i){ + keys[k.charCodeAt(0)] = i +}) + +keys['Z'.charCodeAt(0)] = 0 + +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 } \ No newline at end of file -- cgit v1.2.3-70-g09d2