--- category: Sensors --- # useKeyModifier Reactive [Modifier State](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/getModifierState). Tracks state of any of the [supported modifiers](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/getModifierState#browser_compatibility) - see Browser Compatibility notes. Learn useKeyModifier with this FREE video lesson from Vue School! ## Usage ```ts import { useKeyModifier } from '@vueuse/core'; const capsLockState = useKeyModifier('CapsLock'); console.log(capsLockState.value); ``` ## Events You can customize which events will prompt the state to update. By default, these are `mouseup`, `mousedown`, `keyup`, `keydown`. To customize these events: ```ts import { useKeyModifier } from '@vueuse/core'; const capsLockState = useKeyModifier('CapsLock', { events: ['mouseup', 'mousedown'] }); console.log(capsLockState); // null // Caps Lock turned on with key press console.log(capsLockState); // null // Mouse button clicked console.log(capsLockState); // true ``` ## Initial State By default, the returned ref will be `Ref` until the first event is received. You can explicitly pass the initial state to it via: ```ts import { useKeyModifier } from '@vueuse/core'; // ---cut--- const capsLockState1 = useKeyModifier('CapsLock'); // Ref const capsLockState2 = useKeyModifier('CapsLock', { initial: false }); // Ref ``` ## Type Declarations ```ts export type KeyModifier = | 'Alt' | 'AltGraph' | 'CapsLock' | 'Control' | 'Fn' | 'FnLock' | 'Meta' | 'NumLock' | 'ScrollLock' | 'Shift' | 'Symbol' | 'SymbolLock'; export interface UseModifierOptions extends ConfigurableDocument { /** * Event names that will prompt update to modifier states * * @default ['mousedown', 'mouseup', 'keydown', 'keyup'] */ events?: WindowEventName[]; /** * Initial value of the returned ref * * @default null */ initial?: Initial; } export type UseKeyModifierReturn = ShallowRef< Initial extends boolean ? boolean : boolean | null >; export declare function useKeyModifier( modifier: KeyModifier, options?: UseModifierOptions, ): UseKeyModifierReturn; ```