on(id: string, callback: () => void) if (!this.listeners.has(id)) this.listeners.set(id, new Set()); this.listeners.get(id)!.add(callback);
private normalizeKeyString(keys: string): string return keys.toLowerCase().replace(/\s/g, ""); keybinding
function Editor() useKeybinding("save", () => console.log("Saved via Ctrl+S"); ); return <textarea />; on(id: string, callback: () => void) if (
off(id: string, callback: () => void) this.listeners.get(id)?.delete(callback); callback: () =>
remap(id: string, newKeys: string[]) const binding = this.bindings.get(id); if (binding) binding.userKeys = newKeys;