ecs-observable/examples/tetris/input.ts

26 lines
708 B
TypeScript

// ── Keyboard input via blessed ────────────────────────
import type blessed from "blessed";
export type Key = "left" | "right" | "up" | "down" | "space" | "p" | "r" | "q";
/** Wire blessed screen key events to a callback. */
export function startInput(
screen: blessed.Widgets.Screen,
onKey: (key: Key) => void,
): void {
screen.key(
["left", "right", "up", "down", "space", "p", "r", "q", "C-c"],
(_ch, key) => {
if (key.name === "q") {
screen.destroy();
process.exit(0);
}
if (key.name === "C-c") {
screen.destroy();
process.exit(0);
}
onKey(key.name as Key);
},
);
}