Skip to content

useKeyboardShortcut

Registers a global keyboard shortcut listener.

Signature

ts
function useKeyboardShortcut(
  shortcut: KeyboardShortcut,
  handler: (event: KeyboardEvent) => void,
  options?: KeyboardShortcutOptions
): void

Parameters

KeyboardShortcut

PropertyTypeDefaultDescription
keystringRequiredKey to listen for (case-insensitive)
ctrlbooleanfalseRequire Ctrl key
cmdbooleanfalseRequire Cmd key (treated same as ctrl)
shiftbooleanfalseRequire Shift key
altbooleanfalseRequire Alt key

handler

Callback function invoked when the shortcut is triggered.

KeyboardShortcutOptions

PropertyTypeDefaultDescription
enabledbooleantrueWhether shortcut is active
preventDefaultbooleantruePrevent default browser behavior
ignoreInputsbooleantrueIgnore when focused on input elements

Example

tsx
useKeyboardShortcut(
  { key: 'k', ctrl: true },
  () => setIsOpen(true),
  { enabled: !isOpen }
)

useKeyboardShortcuts

Registers multiple keyboard shortcuts at once.

Signature

ts
function useKeyboardShortcuts(
  shortcuts: ShortcutConfig[],
  globalOptions?: KeyboardShortcutOptions
): void

ShortcutConfig

ts
interface ShortcutConfig {
  shortcut: KeyboardShortcut
  handler: (event: KeyboardEvent) => void
  options?: KeyboardShortcutOptions
}

Example

tsx
useKeyboardShortcuts([
  { shortcut: { key: 'k', ctrl: true }, handler: () => openSearch() },
  { shortcut: { key: 'n', ctrl: true }, handler: () => createNew() },
  { shortcut: { key: 'Escape' }, handler: () => closeModal() },
])

See also