Skip to content

Instantly share code, notes, and snippets.

@mendes5
Created April 3, 2017 04:03
Show Gist options
  • Select an option

  • Save mendes5/8b80915d70a40e99c45fb74cf253b905 to your computer and use it in GitHub Desktop.

Select an option

Save mendes5/8b80915d70a40e99c45fb74cf253b905 to your computer and use it in GitHub Desktop.
Very simple and functional keyboard listener sinppet
class KeyListener {
constructor(obj ,element = window){
element.addEventListener('keyup', this.keyUp.bind(this), false);
element.addEventListener('keydown', this.keyDown.bind(this), false);
this.elememt = element
this.keys = {}
for(let key in obj){
this.keys[key] = {
isDown:false,
press:obj[key].press,
release:obj[key].release
}
}
}
keyUp(e){
if(this.keys[e.code] && this.keys[e.code].isDown){
e.preventDefault()
this.keys[e.code].isDown = false
this.keys[e.code].release && this.keys[e.code].release(e)
}
}
keyDown(e){
if(this.keys[e.code] && ! this.keys[e.code].isDown){
e.preventDefault()
this.keys[e.code].isDown = true
this.keys[e.code].press && this.keys[e.code].press(e)
}
}
detach(){
this.elememt.removeEventListener('keydown',this.keyDown,false)
this.elememt.removeEventListener('keyup',this.keyUp,false)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment