Key Hold API Reference

KeyStateTracker

Class: KeyStateTracker

Defined in: key-state-tracker.ts:63

Singleton tracker for currently held keyboard keys.

This class maintains a list of all keys currently being pressed, which is useful for:

  • Displaying currently held keys to users
  • Custom shortcut recording for rebinding
  • Complex chord detection

State Management:

  • Uses TanStack Store for reactive state management
  • State can be accessed via tracker.store.state when using the class directly
  • When using framework adapters (React), use useHeldKeys and useHeldKeyCodes hooks for reactive state

Example

ts
const tracker = KeyStateTracker.getInstance()

// Access state directly
console.log(tracker.store.state.heldKeys) // ['Control', 'Shift']

// Subscribe to changes with TanStack Store
const unsubscribe = tracker.store.subscribe(() => {
  console.log('Currently held:', tracker.store.state.heldKeys)
})

// Check current state
console.log(tracker.getHeldKeys()) // ['Control', 'Shift']
console.log(tracker.isKeyHeld('Control')) // true

// Cleanup
unsubscribe()

Properties

store

ts
readonly store: Store<KeyStateTrackerState>;

Defined in: key-state-tracker.ts:70

The TanStack Store instance containing the tracker state. Use this to subscribe to state changes or access current state.

Methods

areAllKeysHeld()

ts
areAllKeysHeld(keys): boolean;

Defined in: key-state-tracker.ts:228

Checks if all of the given keys are currently held.

Parameters

keys

string[]

Array of key names to check

Returns

boolean

True if all of the keys are currently held


destroy()

ts
destroy(): void;

Defined in: key-state-tracker.ts:235

Destroys the tracker and removes all listeners.

Returns

void


getHeldKeys()

ts
getHeldKeys(): string[];

Defined in: key-state-tracker.ts:197

Gets an array of currently held key names.

Returns

string[]

Array of key names currently being pressed


isAnyKeyHeld()

ts
isAnyKeyHeld(keys): boolean;

Defined in: key-state-tracker.ts:218

Checks if any of the given keys are currently held.

Parameters

keys

string[]

Array of key names to check

Returns

boolean

True if any of the keys are currently held


isKeyHeld()

ts
isKeyHeld(key): boolean;

Defined in: key-state-tracker.ts:207

Checks if a specific key is currently being held.

Parameters

key

string

The key name to check (case-insensitive)

Returns

boolean

True if the key is currently held


getInstance()

ts
static getInstance(): KeyStateTracker;

Defined in: key-state-tracker.ts:87

Gets the singleton instance of KeyStateTracker.

Returns

KeyStateTracker


resetInstance()

ts
static resetInstance(): void;

Defined in: key-state-tracker.ts:97

Resets the singleton instance. Useful for testing.

Returns

void