--- title: defineShortcuts description: 'Learn how to display and define keyboard shortcuts in your app.' navigation: badge: label: Todo --- Some components like [Dropdown](/components/dropdown), [Command Palette](/components/command-palette) and [Tooltip](/components/tooltip) support the display of keyboard shortcuts. ```vue ``` Shortcuts are displayed and styled through the [Kbd](/components/kbd) component. ```vue ``` ::tip You will have a preview of how shortcuts are rendered in each component page. :: ## `defineShortcuts` This module provides a `defineShortcuts` composable that allows you to define keyboard shortcuts in your app really easily. ```vue ``` Shortcuts keys are written as the literal keyboard key value. Combinations are made with `_` separator. Chained shortcuts are made with `-` separator. Modifiers are also available: - `meta`: acts as `Command` for MacOS and `Control` for others - `ctrl`: acts as `Control` - `shift`: acts as `Shift` and is only necessary for alphabetic keys Examples of keys: - `escape`: will trigger by hitting `Esc` - `meta_k`: will trigger by hitting `⌘` and `K` at the same time on MacOS, and `Ctrl` and `K` on Windows and Linux - `ctrl_k`: will trigger by hitting `Ctrl` and `K` at the same time on MacOS, Windows and Linux - `shift_e`: will trigger by hitting `Shift` and `E` at the same time on MacOS, Windows and Linux - `?`: will trigger by hitting `?` on some keyboard layouts, or for example `Shift` and `/`, which results in `?` on US Mac keyboards - `g-d`: will trigger by hitting `g` then `d` with a maximum delay of 800ms by default - `arrowleft`: will trigger by hitting `←` (also: `arrowright`, `arrowup`, `arrowdown`) ::tip For a complete list of available shortcut keys, refer to the [`KeyboardEvent`](https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values) API docs. Note the `KeyboardEvent.key` has to be written in lowercase. :: ### `usingInput` Prop: `usingInput?: string | boolean` By default, `usingInput` is `false`, meaning it will only trigger when no input is focused. When set to `true`, the shortcut will also trigger when any input is focused. For a more advanced behavior, `usingInput` can be set to the name of an input, so it only triggers when focusing this specific input. ```vue ``` _`enter` shortcut will only trigger when `queryInput` is focused._ ### Simple shortcut In case the shortcut does not need any config, it can be written as a function. ```ts defineShortcuts({ '?': () => openHelpModal() }) ```