@winput/keyboard
v1.0.11
Published
Windows keyboard automation for Bun - simulate keystrokes, hotkeys, and listen to key events
Downloads
987
Maintainers
Readme
@winput/keyboard ⌨️
Keyboard automation for Windows - simulate keystrokes, hotkeys, and monitor key states.
Requirements
- OS: Windows 64-bit
- Runtime: Bun (npm not supported)
Installation
bun add @winput/keyboardUsage
import { keyboard, VK_CODES, KEYBOARD_MAPPING } from "@winput/keyboard";
keyboard.write("Hello World!");
keyboard.hotkey(["ctrl", "s"]);
keyboard.listener.on.down((e) => {
console.log(`Key: ${e.key}, VK: ${e.vk_code}`);
});
keyboard.listener.start();API
keyboard
| Method | Params | Returns | Description |
|--------|--------|---------|-------------|
| press(key) | KeyName | Keyboard | Press and hold a key |
| release(key) | KeyName | Keyboard | Release a held key |
| tap(key) | KeyName | Keyboard | Press and release a key |
| repeatTap(key, count?, delay?) | KeyName, number, number | Keyboard | Tap multiple times |
| write(text, delay?) | string, number | Keyboard | Type characters |
| hotkey(keys) | KeyName[] | Keyboard | Keyboard shortcut |
| hold(key, duration) | KeyName, number | Keyboard | Hold for duration |
| isPressed(key) | KeyName | boolean | Check if pressed |
| isAnyPressed(keys) | KeyName[] | boolean | Any key pressed |
| areAllPressed(keys) | KeyName[] | boolean | All keys pressed |
| waitForPress(key, timeout?) | KeyName, number | Promise<boolean> | Wait for press |
| waitForRelease(key, timeout?) | KeyName, number | Promise<boolean> | Wait for release |
| toggleKey(key) | KeyName | Keyboard | Toggle lock keys |
| getKeyState(key) | KeyName | KeyState | Get key state |
| releaseAll() | - | Keyboard | Release all keys |
| listener | - | Listener | Event listener |
Listener
| Method | Params | Returns | Description |
|--------|--------|---------|-------------|
| on.down(handler) | KeyHandler | void | Key pressed |
| on.up(handler) | KeyHandler | void | Key released |
| once.down(handler) | KeyHandler | void | One-time press |
| off.down(handler) | KeyHandler | void | Remove handler |
| start() | - | void | Start listening |
| stop() | - | void | Stop listening |
Types
KeyName
type KeyName = "a" | "b" | ... | "ctrl" | "shift" | "alt" | "enter" | "space" | ...KeyState
{
isPressed: boolean; // Key is held down
isToggled: boolean; // Lock key is on
}KeyboardEvent
{
event: string; // "keydown" | "keyup"
key: string; // Key name
vk_code: number; // Virtual key code
scan_code: number; // Scan code
}KeyHandler
type KeyHandler = (event: KeyboardEvent) => voidExports
| Export | Type | Description |
|--------|------|-------------|
| keyboard | Keyboard | Main keyboard operations |
| VK_CODES | object | Virtual key code constants |
| KEYBOARD_MAPPING | object | Key definitions |
| KeyName | KeyName | Valid key names |
