feat(input): add DOM event command adapters
This commit is contained in:
42
input/dom.ts
Normal file
42
input/dom.ts
Normal file
@@ -0,0 +1,42 @@
|
||||
import type { KeybindEvent } from "./keyboard";
|
||||
import type { PointerInputEvent, WheelInputEvent } from "./pointer";
|
||||
|
||||
export function keybindEventFromKeyboardEvent(event: KeyboardEvent): KeybindEvent {
|
||||
return {
|
||||
key: event.key,
|
||||
code: event.code,
|
||||
altKey: event.altKey,
|
||||
ctrlKey: event.ctrlKey,
|
||||
metaKey: event.metaKey,
|
||||
shiftKey: event.shiftKey,
|
||||
};
|
||||
}
|
||||
|
||||
function normalizePointerType(pointerType: string): PointerInputEvent["pointerType"] {
|
||||
if (pointerType === "pen" || pointerType === "touch") return pointerType;
|
||||
return "mouse";
|
||||
}
|
||||
|
||||
export function pointerInputEventFromPointerEvent(event: PointerEvent): PointerInputEvent {
|
||||
return {
|
||||
pointerId: event.pointerId,
|
||||
pointerType: normalizePointerType(event.pointerType),
|
||||
position: { x: event.offsetX, y: event.offsetY },
|
||||
buttons: event.buttons,
|
||||
altKey: event.altKey,
|
||||
ctrlKey: event.ctrlKey,
|
||||
metaKey: event.metaKey,
|
||||
shiftKey: event.shiftKey,
|
||||
};
|
||||
}
|
||||
|
||||
export function wheelInputEventFromWheelEvent(event: WheelEvent): WheelInputEvent {
|
||||
return {
|
||||
position: { x: event.offsetX, y: event.offsetY },
|
||||
delta: { x: event.deltaX, y: event.deltaY },
|
||||
altKey: event.altKey,
|
||||
ctrlKey: event.ctrlKey,
|
||||
metaKey: event.metaKey,
|
||||
shiftKey: event.shiftKey,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user