19 lines
917 B
TypeScript
19 lines
917 B
TypeScript
import { KeyboardModifier } from './KeyboardModifier'
|
|
|
|
export function modifiersForEvent(event: KeyboardEvent): KeyboardModifier[] {
|
|
const allModifiers = Object.values(KeyboardModifier)
|
|
const eventModifiers = allModifiers.filter((modifier) => {
|
|
// For a modifier like ctrlKey, must check both event.ctrlKey and event.key.
|
|
// That's because on keyup, event.ctrlKey would be false, but event.key == Control would be true.
|
|
const matches =
|
|
((event.ctrlKey || event.key === KeyboardModifier.Ctrl) && modifier === KeyboardModifier.Ctrl) ||
|
|
((event.metaKey || event.key === KeyboardModifier.Meta) && modifier === KeyboardModifier.Meta) ||
|
|
((event.altKey || event.key === KeyboardModifier.Alt) && modifier === KeyboardModifier.Alt) ||
|
|
((event.shiftKey || event.key === KeyboardModifier.Shift) && modifier === KeyboardModifier.Shift)
|
|
|
|
return matches
|
|
})
|
|
|
|
return eventModifiers
|
|
}
|