UNPKG

@threlte/extras

Version:

Utilities, abstractions and plugins for your Threlte apps

48 lines (47 loc) 1.6 kB
export declare class KeyState { /** Whether the key is currently held down */ pressed: boolean; /** Whether the key was first pressed this frame */ justPressed: boolean; /** Whether the key was released this frame */ justReleased: boolean; } export interface UseKeyboardOptions { /** * The target element to listen for keyboard events on. * @default window */ target?: EventTarget; /** * Listen during the capture phase instead of the bubble phase. Use this * when keyboard input must run before descendants can stop propagation. * @default false */ capture?: boolean; } type KeyboardEventType = 'keydown' | 'keyup'; type KeyboardEventHandler = (event: KeyboardEvent) => void; export declare const useKeyboard: (optionsFn?: () => UseKeyboardOptions) => { /** * The internal task, exposed for ordering other tasks relative to * keyboard processing via `useTask('myTask', fn, { after: keyboard.task })`. */ task: import("@threlte/core").Task; /** * Get the state of a key by its `KeyboardEvent.key` value * (e.g. `'w'`, `'Space'`, `'ArrowUp'`, `'Shift'`). * Matching is case-insensitive. */ key: (key: string) => KeyState; /** * Register an event listener. Returns a cleanup function. * * ```ts * const off = keyboard.on('keydown', (e) => console.log(e.key)) * // later: off() * ``` */ on: (event: KeyboardEventType, fn: KeyboardEventHandler) => () => void; }; export type UseKeyboardReturn = ReturnType<typeof useKeyboard>; export {};