Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit 2c32d4dc authored by Simon Chan's avatar Simon Chan
Browse files

feat(scrcpy): add set clipboard and ack clipboard

parent b5f58227
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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";
+6 −5
Original line number Diff line number Diff line
@@ -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);
    },
};
+4 −0
Original line number Diff line number Diff line
import { type ScrcpySetClipboardControlMessage1_21 } from "../options/index.js";

export type ScrcpySetClipboardControlMessage =
    ScrcpySetClipboardControlMessage1_21;
+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"];
+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