Shopping Cart

Keybinding [verified] (PREMIUM ›)

setContext(context: string) this.activeContext = context;

function KeybindingSettings( bindings, onRemap ) null>(null); const capture = (id: string) => setRecording(id); const handler = (e: KeyboardEvent) => e.preventDefault(); const keys = normalizeEvent(e); onRemap(id, [keys]); setRecording(null); window.removeEventListener("keydown", handler); ; window.addEventListener("keydown", handler); ; keybinding

handleKeydown(event: KeyboardEvent) const pressed = this.normalizeEvent(event); for (const binding of this.bindings.values()) binding.context === this.activeContext) ) if (binding.preventDefault) event.preventDefault(); this.trigger(binding.id); break; setContext(context: string) this

function useKeybinding(id: string, callback: () => void, deps: any[] = []) const manager = useKeybindingManager(); // from context useEffect(() => manager.on(id, callback); return () => manager.off(id, callback); , [id, callback, ...deps]); setContext(context: string) this.activeContext = context

private normalizeKeyString(keys: string): string return keys.toLowerCase().replace(/\s/g, "");

function Editor() useKeybinding("save", () => console.log("Saved via Ctrl+S"); ); return <textarea />;

remap(id: string, newKeys: string[]) const binding = this.bindings.get(id); if (binding) binding.userKeys = newKeys;