Skip to content

mimshwright/pressed.js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pressed.js

npm version Standard - JavaScript Style Guide

Tracks which keys on the keyboard are currently being pressed. This is very useful in game development when you may want to respond to multiple key presses in your update loop.

Example

It works best to see a live example.

Usage

import pressed from "pressed"
// Initialize the system
pressed.start()

// Later...

// Check for a key code.
if (pressed(65)) {
  console.log('"A" key is currently pressed.')
}
// Works with strings too.
if (pressed("A")) {
  console.log('"A" key is currently pressed.')
}
// Even works with unicode symbols for modifier keys!
if (pressed("⌘")) {
  console.log('"Command" key (or windows key) is currently pressed.')
}

// Mouse buttons (0-4) are tracked too.
if (pressed.mouseButton(0)) { // pressed("mouse 0") also works
  console.log('Left mouse button is currently pressed.')
}

String to keycode mappings use the keycode module. Here's a list of all the supported strings to keycode mappings.


// Check multiple keys at once
if (pressed.every("shift", "L")) {
  console.log('Both "Shift" and "L" are currently pressed.')
}
if (pressed.some("a", "e", "i", "o", "u")) {
  console.log('At least one vowel key is currently pressed.')
}

// List all keys currently pressed.
console.log(pressed.listAllKeys()) // E.g. ['L', 'shift']
console.log(pressed.listAllKeyCodes()) // E.g. [76, 16]

// When you're all done using it...
pressed.stop()

Overriding window

Normally, this module will not work outside of a browser environment¹. However, if for some reason you want to force it to work, or if you just want to listen to events somewhere besides the window object, you can pass a custom object to the start() function with addEventListener and removeEventListener defined.

const myCustomEventEmitter = {
  addEventListener: (eventType, listenerFunction) => {
    // Code to add listener.
  },
  removeEventListener: (eventType, listenerFunction) => {
    // Code to remove listener.
  }
}

pressed.start(myCustomEmitter)

// Later...
pressed.stop(myCustomEmitter)

¹: Node users may want to check out keypress.

Weirdness

  • Caps Lock (key code 20) will appear pressed as long as it's on. If you call pressed.start() when the caps lock key is on, it won't appear pressed until after you turn it off and on again.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published