Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/crutchcorn/hearthspace-ui-experiments. crutchcorn.github.io/hearthspace-ui-experiments
Something went wrong. Try again.
783 B · 23 lines
TypeScript
at main
123456789101112131415161718192021222324import { useEffect, useState } from 'react'
/** Keep script-driven focus from carrying keyboard rings into pointer gestures. */export default function useInputModality() { const [modality, setModality] = useState<'keyboard' | 'pointer'>('keyboard')
useEffect(() => { const pointerDown = () => setModality('pointer') const keyDown = (event: KeyboardEvent) => { if (['Shift', 'Control', 'Alt', 'Meta'].includes(event.key)) return setModality('keyboard') }
window.addEventListener('pointerdown', pointerDown, true) window.addEventListener('keydown', keyDown, true) return () => { window.removeEventListener('pointerdown', pointerDown, true) window.removeEventListener('keydown', keyDown, true) } }, [])
return modality}