Loading libraries/scrcpy/src/control/index.ts +1 −0 Original line number Diff line number Diff line Loading @@ -6,5 +6,6 @@ export * from "./inject-text.js"; export * from "./inject-touch.js"; export * from "./rotate-device.js"; export * from "./serializer.js"; export * from "./set-clipboard.js"; export * from "./set-screen-power-mode.js"; export * from "./type.js"; libraries/scrcpy/src/control/inject-touch.ts +6 −5 Original line number Diff line number Diff line Loading @@ -43,17 +43,18 @@ export function clamp(value: number, min: number, max: number): number { return value; } const Uint16Max = (1 << 16) - 1; const ScrcpyFloatToUint16NumberType: NumberFieldType = { export const ScrcpyFloatToUint16NumberType: NumberFieldType = { size: 2, signed: false, deserialize(array, littleEndian) { const value = NumberFieldType.Uint16.deserialize(array, littleEndian); return value / Uint16Max; // https://github.com/Genymobile/scrcpy/blob/1f138aef41de651668043b32c4effc2d4adbfc44/server/src/main/java/com/genymobile/scrcpy/Binary.java#L22 return value === 0xffff ? 1 : value / 0x10000; }, serialize(dataView, offset, value, littleEndian) { value = clamp(value, 0, 1) * Uint16Max; // https://github.com/Genymobile/scrcpy/blob/1f138aef41de651668043b32c4effc2d4adbfc44/app/src/util/binary.h#L51 value = clamp(value, -1, 1); value = value === 1 ? 0xffff : value * 0x10000; NumberFieldType.Uint16.serialize(dataView, offset, value, littleEndian); }, }; Loading libraries/scrcpy/src/control/set-clipboard.ts 0 → 100644 +4 −0 Original line number Diff line number Diff line import { type ScrcpySetClipboardControlMessage1_21 } from "../options/index.js"; export type ScrcpySetClipboardControlMessage = ScrcpySetClipboardControlMessage1_21; libraries/scrcpy/src/device-message/ack-clipboard.ts 0 → 100644 +10 −0 Original line number Diff line number Diff line import Struct from "@yume-chan/struct"; import { ScrcpyDeviceMessageType } from "./type.js"; export const ScrcpyAckClipboardDeviceMessage = new Struct() .uint64("sequence") .extra({ type: ScrcpyDeviceMessageType.Clipboard as const }); export type ScrcpyAckClipboardDeviceMessage = typeof ScrcpyAckClipboardDeviceMessage["TDeserializeResult"]; libraries/scrcpy/src/device-message/index.ts +4 −3 Original line number Diff line number Diff line export * from './clipboard.js'; export * from './stream.js'; export * from './type.js'; export * from "./ack-clipboard.js"; export * from "./clipboard.js"; export * from "./stream.js"; export * from "./type.js"; Loading
libraries/scrcpy/src/control/index.ts +1 −0 Original line number Diff line number Diff line Loading @@ -6,5 +6,6 @@ export * from "./inject-text.js"; export * from "./inject-touch.js"; export * from "./rotate-device.js"; export * from "./serializer.js"; export * from "./set-clipboard.js"; export * from "./set-screen-power-mode.js"; export * from "./type.js";
libraries/scrcpy/src/control/inject-touch.ts +6 −5 Original line number Diff line number Diff line Loading @@ -43,17 +43,18 @@ export function clamp(value: number, min: number, max: number): number { return value; } const Uint16Max = (1 << 16) - 1; const ScrcpyFloatToUint16NumberType: NumberFieldType = { export const ScrcpyFloatToUint16NumberType: NumberFieldType = { size: 2, signed: false, deserialize(array, littleEndian) { const value = NumberFieldType.Uint16.deserialize(array, littleEndian); return value / Uint16Max; // https://github.com/Genymobile/scrcpy/blob/1f138aef41de651668043b32c4effc2d4adbfc44/server/src/main/java/com/genymobile/scrcpy/Binary.java#L22 return value === 0xffff ? 1 : value / 0x10000; }, serialize(dataView, offset, value, littleEndian) { value = clamp(value, 0, 1) * Uint16Max; // https://github.com/Genymobile/scrcpy/blob/1f138aef41de651668043b32c4effc2d4adbfc44/app/src/util/binary.h#L51 value = clamp(value, -1, 1); value = value === 1 ? 0xffff : value * 0x10000; NumberFieldType.Uint16.serialize(dataView, offset, value, littleEndian); }, }; Loading
libraries/scrcpy/src/control/set-clipboard.ts 0 → 100644 +4 −0 Original line number Diff line number Diff line import { type ScrcpySetClipboardControlMessage1_21 } from "../options/index.js"; export type ScrcpySetClipboardControlMessage = ScrcpySetClipboardControlMessage1_21;
libraries/scrcpy/src/device-message/ack-clipboard.ts 0 → 100644 +10 −0 Original line number Diff line number Diff line import Struct from "@yume-chan/struct"; import { ScrcpyDeviceMessageType } from "./type.js"; export const ScrcpyAckClipboardDeviceMessage = new Struct() .uint64("sequence") .extra({ type: ScrcpyDeviceMessageType.Clipboard as const }); export type ScrcpyAckClipboardDeviceMessage = typeof ScrcpyAckClipboardDeviceMessage["TDeserializeResult"];
libraries/scrcpy/src/device-message/index.ts +4 −3 Original line number Diff line number Diff line export * from './clipboard.js'; export * from './stream.js'; export * from './type.js'; export * from "./ack-clipboard.js"; export * from "./clipboard.js"; export * from "./stream.js"; export * from "./type.js";