43 lines
1.2 KiB
TypeScript
43 lines
1.2 KiB
TypeScript
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,
|
|
};
|
|
}
|