Skip to main content

Keyboard & Mouse

Live Demo​

Try this Breakout game - use arrow keys or mouse to control the paddle:

🎮Breakout - Keyboard & Mouse Demo
Loading demo...

Keyboard​

Event-Based​

const keyboard = game.make('input').keyboard;

// Key down/up
keyboard.on('KeyW', (pressed) => {
if (pressed) console.log('W pressed');
else console.log('W released');
});

// Specific events
keyboard.onKeyDown('Space', () => jump());
keyboard.onKeyUp('Space', () => stopJump());

// Multiple keys
['KeyW', 'ArrowUp'].forEach(key => {
keyboard.on(key, (pressed) => {
if (pressed) moveUp();
});
});

Polling​

function update(deltaTime: number) {
if (keyboard.isPressed('KeyA') || keyboard.isPressed('ArrowLeft')) {
player.moveLeft(deltaTime);
}
if (keyboard.isPressed('KeyD') || keyboard.isPressed('ArrowRight')) {
player.moveRight(deltaTime);
}
}

Key Codes​

Common key codes (use KeyboardEvent.code):

KeyCode
W, A, S, DKeyW, KeyA, KeyS, KeyD
Arrow keysArrowUp, ArrowDown, ArrowLeft, ArrowRight
SpaceSpace
EnterEnter
EscapeEscape
ShiftShiftLeft, ShiftRight

Mouse​

Click Events​

const mouse = game.make('input').mouse;

mouse.on('click', (event) => {
console.log('Clicked at:', event.x, event.y);
console.log('Button:', event.button); // 0=left, 1=middle, 2=right
});

mouse.on('rightclick', (event) => {
showContextMenu(event.x, event.y);
});

Movement​

mouse.on('move', (event) => {
cursor.position.set(event.x, event.y);
});

// Delta movement (for first-person camera)
mouse.on('move', (event) => {
camera.rotateY(-event.deltaX * sensitivity);
camera.rotateX(-event.deltaY * sensitivity);
});

Pointer Lock (FPS games)​

// Request pointer lock
mouse.requestPointerLock();

mouse.on('move', (event) => {
if (mouse.isLocked()) {
// Use delta for camera control
rotateCamera(event.deltaX, event.deltaY);
}
});

// Release on Escape
keyboard.on('Escape', () => {
mouse.exitPointerLock();
});

Scroll Wheel​

mouse.on('wheel', (event) => {
zoom(event.deltaY);
});