Docs
CodeRabbit
Cloudflare
AG Grid
SerpAPI
Netlify
OpenRouter
Neon
WorkOS
Clerk
Electric
PowerSync
Sentry
Railway
Prisma
Strapi
Unkey
CodeRabbit
Cloudflare
AG Grid
SerpAPI
Netlify
OpenRouter
Neon
WorkOS
Clerk
Electric
PowerSync
Sentry
Railway
Prisma
Strapi
Unkey
Hotkeys API Reference
Hotkey Sequence API Reference
Key Hold API Reference
Held Keys API Reference
Hotkey Recorder API Reference
Hotkey Sequence Recorder API Reference
Format for Display API Reference
Hotkey Sequence API Reference

useHotkeySequence

Function: useHotkeySequence()

ts
function useHotkeySequence(
   sequence, 
   callback, 
   options): void;

Defined in: packages/vue-hotkeys/src/useHotkeySequence.ts:76

Vue composable for registering a keyboard shortcut sequence (Vim-style).

This composable allows you to register multi-key sequences like 'g g' or 'd d' that trigger when the full sequence is pressed within a timeout.

Each step may include modifiers. You can chain the same modifier across steps (e.g. Shift+R then Shift+T). Modifier-only keydown events (Shift, Control, Alt, or Meta pressed alone) are ignored while matching—they do not advance the sequence or reset progress.

Parameters

sequence

MaybeRefOrGetter<HotkeySequence>

Array of hotkey strings that form the sequence

callback

HotkeyCallback

Function to call when the sequence is completed

options

MaybeRefOrGetter<UseHotkeySequenceOptions> = {}

Options for the sequence behavior

Returns

void

Example

vue
<script setup>
import { useHotkeySequence } from '@tanstack/vue-hotkeys'

// 'g g' to go to top
useHotkeySequence(['G', 'G'], () => {
  scrollToTop()
})

// 'd d' to delete line
useHotkeySequence(['D', 'D'], () => {
  deleteLine()
})

// 'd i w' to delete inner word
useHotkeySequence(['D', 'I', 'W'], () => {
  deleteInnerWord()
}, { timeout: 500 })

// Same modifier on consecutive steps (bare Shift between chords is ignored)
useHotkeySequence(['Shift+R', 'Shift+T'], () => {
  nextAction()
})
</script>

<template>
  <div>...</div>
</template>