--- title: defineShortcuts description: 'A composable to define keyboard shortcuts in your app.' --- ## Usage Use the auto-imported `defineShortcuts` composable to define keyboard shortcuts. ```vue ``` - Shortcuts are automatically adjusted for non-macOS platforms, converting `meta` to `ctrl`. - The composable uses VueUse's [`useEventListener`](https://vueuse.org/core/useEventListener/) to handle keydown events. - For a complete list of available shortcut keys, refer to the [`KeyboardEvent.key`](https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values) API documentation. Note that the key should be written in lowercase. ::tip{to="/components/kbd"} Learn how to display shortcuts in components in the **Kbd** component documentation. :: ## API ### `defineShortcuts(config: ShortcutsConfig, options?: ShortcutsOptions)` Define keyboard shortcuts for your application. - `config`: An object where keys are shortcut definitions and values are either handler functions or shortcut configuration objects. - `options`: Optional configuration for the shortcuts behavior. - `chainDelay`: The delay between key presses to consider the shortcut as chained. Default is `250`. #### Shortcut Definition Shortcuts are defined using the following format: - Single key: `'a'`, `'b'`, `'1'`, `'?'`, etc. - Key combinations: Use `_` to separate keys, e.g., `'meta_k'`, `'ctrl_shift_f'` - Key sequences: Use `-` to define a sequence, e.g., `'g-d'` #### Modifiers - `meta`: Represents `⌘ Command` on macOS and `Ctrl` on other platforms - `ctrl`: Represents `Ctrl` on all platforms - `shift`: Used for alphabetic keys when Shift is required #### Special Keys - `escape`: Triggers on Esc key - `enter`: Triggers on Enter key - `arrowleft`, `arrowright`, `arrowup`, `arrowdown`: Trigger on respective arrow keys #### Shortcut Configuration Each shortcut can be defined as a function or an object with the following properties: ```ts interface ShortcutConfig { handler: () => void usingInput?: boolean | string } ``` - `handler`: Function to be executed when the shortcut is triggered - `usingInput`: - `false` (default): Shortcut only triggers when no input is focused - `true`: Shortcut triggers even when any input is focused - `string`: Shortcut only triggers when the specified input (by name) is focused ## Examples ### Basic usage ```vue ``` ### With input focus handling The `usingInput` option allows you to specify that a shortcut should only trigger when a specific input is focused. ```vue ``` ### Extracting shortcuts from menu items The `extractShortcuts` utility can be used to automatically define shortcuts from menu items: ```vue ```