pressed

1.3.1 • Public • Published

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.

Package Sidebar

Install

npm i pressed

Weekly Downloads

3

Version

1.3.1

License

MIT

Last publish

Collaborators

  • mimshwright