Appearance
useKeyModifier
Reactive Modifier State. Tracks state of any of the supported modifiers
Demo
Usage
tsx
import { useKeyModifier } from '@reause/core'
const capsLockState = useKeyModifier('CapsLock') // boolean | null
console.log(capsLockState)Events
You can customize which events will prompt the state to update. By default, these are mouseup, mousedown, keyup, keydown. To customize these events:
tsx
import { useKeyModifier } from '@reause/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) // trueInitial State
By default, the returned controllable state will be null until the first event is received. You can explicitly pass the initial state to it via:
tsx
import { useKeyModifier } from '@reause/core'
const capsLockState1 = useKeyModifier('CapsLock') // boolean | null
const capsLockState2 = useKeyModifier('CapsLock', { initial: false }) // booleanType Declarations
ts
export type KeyModifier = 'Alt' | 'AltGraph' | 'CapsLock' | 'Control' | 'Fn' | 'FnLock' | 'Meta' | 'NumLock' | 'ScrollLock' | 'Shift' | 'Symbol' | 'SymbolLock'
export interface UseModifierOptions<Initial> {
events?: (keyof WindowEventMap)[];
initial?: Initial;
document?: Document;
}
export type UseKeyModifierReturn<Initial> = Initial extends boolean ? boolean : boolean | null
export function useKeyModifier<Initial extends boolean | null>(modifier: KeyModifier, options?: UseModifierOptions<Initial>): UseKeyModifierReturn<Initial>