@yume-chan/scrcpy
Version:
TypeScript implementation of Scrcpy.
60 lines (48 loc) • 2.19 kB
text/typescript
import Struct, { placeholder } from "@yume-chan/struct";
import type { AndroidMotionEventAction } from "../../control/index.js";
import {
EmptyControlMessage,
ScrcpyControlMessageType,
} from "../../control/index.js";
import { ScrcpyUnsignedFloatFieldDefinition } from "./float.js";
export const SCRCPY_CONTROL_MESSAGE_TYPES_1_16: readonly ScrcpyControlMessageType[] =
[
/* 0 */ ScrcpyControlMessageType.InjectKeyCode,
/* 1 */ ScrcpyControlMessageType.InjectText,
/* 2 */ ScrcpyControlMessageType.InjectTouch,
/* 3 */ ScrcpyControlMessageType.InjectScroll,
/* 4 */ ScrcpyControlMessageType.BackOrScreenOn,
/* 5 */ ScrcpyControlMessageType.ExpandNotificationPanel,
/* 6 */ ScrcpyControlMessageType.CollapseNotificationPanel,
/* 7 */ ScrcpyControlMessageType.GetClipboard,
/* 8 */ ScrcpyControlMessageType.SetClipboard,
/* 9 */ ScrcpyControlMessageType.SetScreenPowerMode,
/* 10 */ ScrcpyControlMessageType.RotateDevice,
];
export const ScrcpyMediaStreamRawPacket = new Struct()
.uint64("pts")
.uint32("size")
.uint8Array("data", { lengthField: "size" });
export const SCRCPY_MEDIA_PACKET_FLAG_CONFIG = 1n << 63n;
export const ScrcpyInjectTouchControlMessage1_16 = new Struct()
.uint8("type")
.uint8("action", placeholder<AndroidMotionEventAction>())
.uint64("pointerId")
.uint32("pointerX")
.uint32("pointerY")
.uint16("screenWidth")
.uint16("screenHeight")
.field("pressure", ScrcpyUnsignedFloatFieldDefinition)
.uint32("buttons");
export type ScrcpyInjectTouchControlMessage1_16 =
(typeof ScrcpyInjectTouchControlMessage1_16)["TInit"];
export const ScrcpyBackOrScreenOnControlMessage1_16 = EmptyControlMessage;
export const ScrcpySetClipboardControlMessage1_15 = new Struct()
.uint8("type")
.uint32("length")
.string("content", { lengthField: "length" });
export type ScrcpySetClipboardControlMessage1_15 =
(typeof ScrcpySetClipboardControlMessage1_15)["TInit"];
export const ScrcpyClipboardDeviceMessage = new Struct()
.uint32("length")
.string("content", { lengthField: "length" });