--- 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 ```