@yume-chan/scrcpy 0.0.18 → 0.0.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.json +33 -0
- package/CHANGELOG.md +18 -1
- package/README.md +157 -183
- package/bin/scrcpy-server +0 -0
- package/bin/version.d.ts +1 -1
- package/bin/version.js +1 -1
- package/esm/codec/av1.d.ts +33 -0
- package/esm/codec/av1.d.ts.map +1 -0
- package/esm/codec/av1.js +35 -0
- package/esm/codec/av1.js.map +1 -0
- package/esm/codec/h264.d.ts +78 -0
- package/esm/codec/h264.d.ts.map +1 -0
- package/esm/codec/h264.js +256 -0
- package/esm/codec/h264.js.map +1 -0
- package/esm/codec/h265.d.ts +490 -0
- package/esm/codec/h265.d.ts.map +1 -0
- package/esm/codec/h265.js +1098 -0
- package/esm/codec/h265.js.map +1 -0
- package/esm/codec/index.d.ts +5 -0
- package/esm/codec/index.d.ts.map +1 -0
- package/esm/codec/index.js +5 -0
- package/esm/codec/index.js.map +1 -0
- package/esm/codec/nalu.d.ts +44 -0
- package/esm/codec/nalu.d.ts.map +1 -0
- package/esm/codec/nalu.js +310 -0
- package/esm/codec/nalu.js.map +1 -0
- package/esm/control/back-or-screen-on.d.ts +2 -2
- package/esm/control/back-or-screen-on.d.ts.map +1 -1
- package/esm/control/back-or-screen-on.js +1 -1
- package/esm/control/basic.d.ts +5 -0
- package/esm/control/basic.d.ts.map +1 -0
- package/esm/control/basic.js +3 -0
- package/esm/control/basic.js.map +1 -0
- package/esm/control/hover-helper.d.ts +17 -17
- package/esm/control/hover-helper.d.ts.map +1 -1
- package/esm/control/hover-helper.js +43 -43
- package/esm/control/hover-helper.js.map +1 -1
- package/esm/control/index.d.ts +13 -11
- package/esm/control/index.d.ts.map +1 -1
- package/esm/control/index.js +13 -11
- package/esm/control/index.js.map +1 -1
- package/esm/control/inject-keycode.d.ts +193 -60
- package/esm/control/inject-keycode.d.ts.map +1 -1
- package/esm/control/inject-keycode.js +198 -61
- package/esm/control/inject-keycode.js.map +1 -1
- package/esm/control/inject-scroll.d.ts +2 -2
- package/esm/control/inject-scroll.d.ts.map +1 -1
- package/esm/control/inject-scroll.js +1 -1
- package/esm/control/inject-text.d.ts +7 -8
- package/esm/control/inject-text.d.ts.map +1 -1
- package/esm/control/inject-text.js +5 -6
- package/esm/control/inject-text.js.map +1 -1
- package/esm/control/inject-touch.d.ts +32 -37
- package/esm/control/inject-touch.d.ts.map +1 -1
- package/esm/control/inject-touch.js +35 -62
- package/esm/control/inject-touch.js.map +1 -1
- package/esm/control/rotate-device.d.ts +4 -6
- package/esm/control/rotate-device.d.ts.map +1 -1
- package/esm/control/rotate-device.js +2 -4
- package/esm/control/rotate-device.js.map +1 -1
- package/esm/control/serializer.d.ts +25 -33
- package/esm/control/serializer.d.ts.map +1 -1
- package/esm/control/serializer.js +53 -78
- package/esm/control/serializer.js.map +1 -1
- package/esm/control/set-clipboard.d.ts +2 -2
- package/esm/control/set-clipboard.d.ts.map +1 -1
- package/esm/control/set-clipboard.js +1 -1
- package/esm/control/set-screen-power-mode.d.ts +10 -11
- package/esm/control/set-screen-power-mode.d.ts.map +1 -1
- package/esm/control/set-screen-power-mode.js +10 -11
- package/esm/control/set-screen-power-mode.js.map +1 -1
- package/esm/control/type.d.ts +28 -14
- package/esm/control/type.d.ts.map +1 -1
- package/esm/control/type.js +40 -18
- package/esm/control/type.js.map +1 -1
- package/esm/control/writer.d.ts +28 -0
- package/esm/control/writer.d.ts.map +1 -0
- package/esm/control/writer.js +53 -0
- package/esm/control/writer.js.map +1 -0
- package/esm/device-message/ack-clipboard.d.ts +8 -8
- package/esm/device-message/ack-clipboard.d.ts.map +1 -1
- package/esm/device-message/ack-clipboard.js +5 -5
- package/esm/device-message/clipboard.d.ts +9 -9
- package/esm/device-message/clipboard.d.ts.map +1 -1
- package/esm/device-message/clipboard.js +6 -6
- package/esm/device-message/index.d.ts +4 -4
- package/esm/device-message/index.js +4 -4
- package/esm/device-message/stream.d.ts +7 -7
- package/esm/device-message/stream.d.ts.map +1 -1
- package/esm/device-message/stream.js +34 -19
- package/esm/device-message/stream.js.map +1 -1
- package/esm/device-message/type.d.ts +4 -4
- package/esm/device-message/type.js +6 -6
- package/esm/index.d.ts +4 -5
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +4 -5
- package/esm/index.js.map +1 -1
- package/esm/options/1_16/codec-options.d.ts +19 -19
- package/esm/options/1_16/codec-options.d.ts.map +1 -1
- package/esm/options/1_16/codec-options.js +25 -25
- package/esm/options/1_16/codec-options.js.map +1 -1
- package/esm/options/1_16/float-to-uint16.d.ts +5 -0
- package/esm/options/1_16/float-to-uint16.d.ts.map +1 -0
- package/esm/options/1_16/float-to-uint16.js +27 -0
- package/esm/options/1_16/float-to-uint16.js.map +1 -0
- package/esm/options/1_16/index.d.ts +6 -4
- package/esm/options/1_16/index.d.ts.map +1 -1
- package/esm/options/1_16/index.js +6 -4
- package/esm/options/1_16/index.js.map +1 -1
- package/esm/options/1_16/init.d.ts +66 -0
- package/esm/options/1_16/init.d.ts.map +1 -0
- package/esm/options/1_16/init.js +16 -0
- package/esm/options/1_16/init.js.map +1 -0
- package/esm/options/1_16/message.d.ts +32 -0
- package/esm/options/1_16/message.d.ts.map +1 -0
- package/esm/options/1_16/message.js +37 -0
- package/esm/options/1_16/message.js.map +1 -0
- package/esm/options/1_16/options.d.ts +48 -93
- package/esm/options/1_16/options.d.ts.map +1 -1
- package/esm/options/1_16/options.js +152 -189
- package/esm/options/1_16/options.js.map +1 -1
- package/esm/options/1_16/scroll.d.ts +26 -26
- package/esm/options/1_16/scroll.d.ts.map +1 -1
- package/esm/options/1_16/scroll.js +54 -55
- package/esm/options/1_16/scroll.js.map +1 -1
- package/esm/options/1_17.d.ts +33 -0
- package/esm/options/1_17.d.ts.map +1 -0
- package/esm/options/1_17.js +42 -0
- package/esm/options/1_17.js.map +1 -0
- package/esm/options/1_18.d.ts +59 -19
- package/esm/options/1_18.d.ts.map +1 -1
- package/esm/options/1_18.js +78 -45
- package/esm/options/1_18.js.map +1 -1
- package/esm/options/1_21.d.ts +41 -20
- package/esm/options/1_21.d.ts.map +1 -1
- package/esm/options/1_21.js +51 -36
- package/esm/options/1_21.js.map +1 -1
- package/esm/options/1_22/index.d.ts +3 -2
- package/esm/options/1_22/index.d.ts.map +1 -1
- package/esm/options/1_22/index.js +3 -2
- package/esm/options/1_22/index.js.map +1 -1
- package/esm/options/1_22/init.d.ts +17 -0
- package/esm/options/1_22/init.d.ts.map +1 -0
- package/esm/options/1_22/init.js +2 -0
- package/esm/options/1_22/init.js.map +1 -0
- package/esm/options/1_22/options.d.ts +35 -28
- package/esm/options/1_22/options.d.ts.map +1 -1
- package/esm/options/1_22/options.js +36 -25
- package/esm/options/1_22/options.js.map +1 -1
- package/esm/options/1_22/scroll.d.ts +16 -16
- package/esm/options/1_22/scroll.d.ts.map +1 -1
- package/esm/options/1_22/scroll.js +14 -14
- package/esm/options/1_23.d.ts +36 -11
- package/esm/options/1_23.d.ts.map +1 -1
- package/esm/options/1_23.js +44 -34
- package/esm/options/1_23.js.map +1 -1
- package/esm/options/1_24.d.ts +34 -8
- package/esm/options/1_24.d.ts.map +1 -1
- package/esm/options/1_24.js +22 -12
- package/esm/options/1_24.js.map +1 -1
- package/esm/options/1_25/index.d.ts +2 -2
- package/esm/options/1_25/index.js +2 -2
- package/esm/options/1_25/options.d.ts +10 -5
- package/esm/options/1_25/options.d.ts.map +1 -1
- package/esm/options/1_25/options.js +21 -7
- package/esm/options/1_25/options.js.map +1 -1
- package/esm/options/1_25/scroll.d.ts +19 -18
- package/esm/options/1_25/scroll.d.ts.map +1 -1
- package/esm/options/1_25/scroll.js +33 -32
- package/esm/options/1_25/scroll.js.map +1 -1
- package/esm/options/2_0.d.ts +91 -0
- package/esm/options/2_0.d.ts.map +1 -0
- package/esm/options/2_0.js +244 -0
- package/esm/options/2_0.js.map +1 -0
- package/esm/options/codec.d.ts +52 -0
- package/esm/options/codec.d.ts.map +1 -0
- package/esm/options/codec.js +26 -0
- package/esm/options/codec.js.map +1 -0
- package/esm/options/index.d.ts +12 -8
- package/esm/options/index.d.ts.map +1 -1
- package/esm/options/index.js +12 -8
- package/esm/options/index.js.map +1 -1
- package/esm/options/latest.d.ts +12 -0
- package/esm/options/latest.d.ts.map +1 -0
- package/esm/options/latest.js +8 -0
- package/esm/options/latest.js.map +1 -0
- package/esm/options/types.d.ts +86 -46
- package/esm/options/types.d.ts.map +1 -1
- package/esm/options/types.js +69 -17
- package/esm/options/types.js.map +1 -1
- package/package.json +10 -16
- package/src/codec/av1.ts +33 -0
- package/src/codec/h264.ts +317 -0
- package/src/codec/h265.ts +1375 -0
- package/src/codec/index.ts +4 -0
- package/src/codec/nalu.ts +373 -0
- package/src/control/back-or-screen-on.ts +1 -1
- package/src/control/basic.ts +3 -0
- package/src/control/hover-helper.ts +2 -4
- package/src/control/index.ts +2 -0
- package/src/control/inject-keycode.ts +194 -51
- package/src/control/inject-scroll.ts +1 -1
- package/src/control/inject-text.ts +6 -9
- package/src/control/inject-touch.ts +16 -55
- package/src/control/rotate-device.ts +3 -7
- package/src/control/serializer.ts +49 -105
- package/src/control/set-clipboard.ts +1 -1
- package/src/control/set-screen-power-mode.ts +6 -9
- package/src/control/type.ts +32 -0
- package/src/control/writer.ts +87 -0
- package/src/device-message/ack-clipboard.ts +1 -1
- package/src/device-message/clipboard.ts +1 -1
- package/src/device-message/stream.ts +32 -12
- package/src/index.ts +4 -5
- package/src/options/1_16/codec-options.ts +5 -8
- package/src/options/1_16/float-to-uint16.ts +33 -0
- package/src/options/1_16/index.ts +3 -1
- package/src/options/1_16/init.ts +80 -0
- package/src/options/1_16/message.ts +55 -0
- package/src/options/1_16/options.ts +152 -256
- package/src/options/1_16/scroll.ts +2 -5
- package/src/options/1_17.ts +66 -0
- package/src/options/1_18.ts +106 -42
- package/src/options/1_21.ts +51 -30
- package/src/options/1_22/index.ts +1 -0
- package/src/options/1_22/init.ts +19 -0
- package/src/options/1_22/options.ts +40 -46
- package/src/options/1_22/scroll.ts +2 -2
- package/src/options/1_23.ts +33 -23
- package/src/options/1_24.ts +25 -11
- package/src/options/1_25/options.ts +25 -6
- package/src/options/1_25/scroll.ts +5 -7
- package/src/options/2_0.ts +342 -0
- package/src/options/codec.ts +98 -0
- package/src/options/index.ts +7 -3
- package/src/options/latest.ts +14 -0
- package/src/options/types.ts +158 -48
- package/tsconfig.build.json +9 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/esm/adb/client.d.ts +0 -41
- package/esm/adb/client.d.ts.map +0 -1
- package/esm/adb/client.js +0 -243
- package/esm/adb/client.js.map +0 -1
- package/esm/adb/connection.d.ts +0 -47
- package/esm/adb/connection.d.ts.map +0 -1
- package/esm/adb/connection.js +0 -110
- package/esm/adb/connection.js.map +0 -1
- package/esm/adb/index.d.ts +0 -4
- package/esm/adb/index.d.ts.map +0 -1
- package/esm/adb/index.js +0 -4
- package/esm/adb/index.js.map +0 -1
- package/esm/adb/options/1_16.d.ts +0 -8
- package/esm/adb/options/1_16.d.ts.map +0 -1
- package/esm/adb/options/1_16.js +0 -20
- package/esm/adb/options/1_16.js.map +0 -1
- package/esm/adb/options/1_22.d.ts +0 -8
- package/esm/adb/options/1_22.d.ts.map +0 -1
- package/esm/adb/options/1_22.js +0 -17
- package/esm/adb/options/1_22.js.map +0 -1
- package/esm/adb/options/index.d.ts +0 -4
- package/esm/adb/options/index.d.ts.map +0 -1
- package/esm/adb/options/index.js +0 -4
- package/esm/adb/options/index.js.map +0 -1
- package/esm/adb/options/types.d.ts +0 -24
- package/esm/adb/options/types.d.ts.map +0 -1
- package/esm/adb/options/types.js +0 -37
- package/esm/adb/options/types.js.map +0 -1
- package/esm/codec.d.ts +0 -34
- package/esm/codec.d.ts.map +0 -1
- package/esm/codec.js +0 -37
- package/esm/codec.js.map +0 -1
- package/esm/options/1_16/h264-configuration.d.ts +0 -49
- package/esm/options/1_16/h264-configuration.d.ts.map +0 -1
- package/esm/options/1_16/h264-configuration.js +0 -414
- package/esm/options/1_16/h264-configuration.js.map +0 -1
- package/esm/options/1_16/sps.d.ts +0 -22
- package/esm/options/1_16/sps.d.ts.map +0 -1
- package/esm/options/1_16/sps.js +0 -263
- package/esm/options/1_16/sps.js.map +0 -1
- package/src/adb/client.ts +0 -345
- package/src/adb/connection.ts +0 -192
- package/src/adb/index.ts +0 -3
- package/src/adb/options/1_16.ts +0 -30
- package/src/adb/options/1_22.ts +0 -26
- package/src/adb/options/index.ts +0 -3
- package/src/adb/options/types.ts +0 -75
- package/src/codec.ts +0 -35
- package/src/options/1_16/h264-configuration.ts +0 -485
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { ScrcpyOptionsInit1_16 } from "./1_16/index.js";
|
|
2
|
+
import { ScrcpyOptions1_16 } from "./1_16/index.js";
|
|
3
|
+
import type { ScrcpyEncoder } from "./types.js";
|
|
4
|
+
import { ScrcpyOptionsBase } from "./types.js";
|
|
5
|
+
|
|
6
|
+
export interface ScrcpyOptionsInit1_17 extends ScrcpyOptionsInit1_16 {
|
|
7
|
+
encoderName?: string | undefined;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export class ScrcpyOptions1_17 extends ScrcpyOptionsBase<
|
|
11
|
+
ScrcpyOptionsInit1_17,
|
|
12
|
+
ScrcpyOptions1_16
|
|
13
|
+
> {
|
|
14
|
+
public static readonly DEFAULTS = {
|
|
15
|
+
...ScrcpyOptions1_16.DEFAULTS,
|
|
16
|
+
encoderName: undefined,
|
|
17
|
+
} as const satisfies Required<ScrcpyOptionsInit1_17>;
|
|
18
|
+
|
|
19
|
+
public static readonly SERIALIZE_ORDER = [
|
|
20
|
+
...ScrcpyOptions1_16.SERIALIZE_ORDER,
|
|
21
|
+
"encoderName",
|
|
22
|
+
] as const satisfies readonly (keyof ScrcpyOptionsInit1_17)[];
|
|
23
|
+
|
|
24
|
+
public static parseEncoder(
|
|
25
|
+
line: string,
|
|
26
|
+
encoderNameRegex: RegExp
|
|
27
|
+
): ScrcpyEncoder | undefined {
|
|
28
|
+
const match = line.match(encoderNameRegex);
|
|
29
|
+
if (match) {
|
|
30
|
+
return { type: "video", name: match[1]! };
|
|
31
|
+
}
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
public override get defaults(): Required<ScrcpyOptionsInit1_17> {
|
|
36
|
+
return ScrcpyOptions1_17.DEFAULTS;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
public constructor(init: ScrcpyOptionsInit1_17) {
|
|
40
|
+
super(new ScrcpyOptions1_16(init), {
|
|
41
|
+
...ScrcpyOptions1_17.DEFAULTS,
|
|
42
|
+
...init,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
public override serialize(): string[] {
|
|
47
|
+
return ScrcpyOptions1_16.serialize(
|
|
48
|
+
this.value,
|
|
49
|
+
ScrcpyOptions1_17.SERIALIZE_ORDER
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
public override setListEncoders() {
|
|
54
|
+
// Set to an invalid value
|
|
55
|
+
// Server will print valid values before crashing
|
|
56
|
+
// (server will crash after opening video and control sockets)
|
|
57
|
+
this.value.encoderName = "_";
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
public override parseEncoder(line: string): ScrcpyEncoder | undefined {
|
|
61
|
+
return ScrcpyOptions1_17.parseEncoder(
|
|
62
|
+
line,
|
|
63
|
+
/\s+scrcpy --encoder-name '(.*?)'/
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
}
|
package/src/options/1_18.ts
CHANGED
|
@@ -1,68 +1,132 @@
|
|
|
1
1
|
import Struct, { placeholder } from "@yume-chan/struct";
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
type ScrcpyBackOrScreenOnControlMessage,
|
|
3
|
+
import type {
|
|
4
|
+
AndroidKeyEventAction,
|
|
5
|
+
ScrcpyBackOrScreenOnControlMessage,
|
|
7
6
|
} from "../control/index.js";
|
|
7
|
+
import { ScrcpyControlMessageType } from "../control/index.js";
|
|
8
8
|
|
|
9
9
|
import {
|
|
10
|
+
SCRCPY_CONTROL_MESSAGE_TYPES_1_16,
|
|
10
11
|
ScrcpyBackOrScreenOnControlMessage1_16,
|
|
12
|
+
ScrcpyLogLevel1_16,
|
|
11
13
|
ScrcpyOptions1_16,
|
|
12
|
-
|
|
13
|
-
} from "./1_16/
|
|
14
|
+
ScrcpyVideoOrientation1_16,
|
|
15
|
+
} from "./1_16/index.js";
|
|
16
|
+
import type { ScrcpyOptionsInit1_17 } from "./1_17.js";
|
|
17
|
+
import { ScrcpyOptions1_17 } from "./1_17.js";
|
|
18
|
+
import type { ScrcpyEncoder } from "./types.js";
|
|
19
|
+
import { ScrcpyOptionsBase } from "./types.js";
|
|
20
|
+
|
|
21
|
+
export enum ScrcpyLogLevel1_18 {
|
|
22
|
+
Verbose = "verbose",
|
|
23
|
+
Debug = "debug",
|
|
24
|
+
Info = "info",
|
|
25
|
+
Warn = "warn",
|
|
26
|
+
Error = "error",
|
|
27
|
+
}
|
|
14
28
|
|
|
15
|
-
export
|
|
16
|
-
|
|
29
|
+
export enum ScrcpyVideoOrientation1_18 {
|
|
30
|
+
Initial = -2,
|
|
31
|
+
Unlocked = -1,
|
|
32
|
+
Portrait = 0,
|
|
33
|
+
Landscape = 1,
|
|
34
|
+
PortraitFlipped = 2,
|
|
35
|
+
LandscapeFlipped = 3,
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export interface ScrcpyOptionsInit1_18
|
|
39
|
+
extends Omit<ScrcpyOptionsInit1_17, "logLevel" | "lockVideoOrientation"> {
|
|
40
|
+
logLevel?: ScrcpyLogLevel1_18;
|
|
41
|
+
|
|
42
|
+
lockVideoOrientation?: ScrcpyVideoOrientation1_18;
|
|
43
|
+
|
|
44
|
+
powerOffOnClose?: boolean;
|
|
17
45
|
}
|
|
18
46
|
|
|
19
47
|
export const ScrcpyBackOrScreenOnControlMessage1_18 = new Struct()
|
|
20
|
-
.
|
|
48
|
+
.concat(ScrcpyBackOrScreenOnControlMessage1_16)
|
|
21
49
|
.uint8("action", placeholder<AndroidKeyEventAction>());
|
|
22
50
|
|
|
23
51
|
export type ScrcpyBackOrScreenOnControlMessage1_18 =
|
|
24
|
-
typeof ScrcpyBackOrScreenOnControlMessage1_18["TInit"];
|
|
52
|
+
(typeof ScrcpyBackOrScreenOnControlMessage1_18)["TInit"];
|
|
53
|
+
|
|
54
|
+
export const SCRCPY_CONTROL_MESSAGE_TYPES_1_18 =
|
|
55
|
+
SCRCPY_CONTROL_MESSAGE_TYPES_1_16.slice();
|
|
56
|
+
SCRCPY_CONTROL_MESSAGE_TYPES_1_18.splice(
|
|
57
|
+
6,
|
|
58
|
+
0,
|
|
59
|
+
ScrcpyControlMessageType.ExpandSettingPanel
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
const LOG_LEVEL_MAP = {
|
|
63
|
+
[ScrcpyLogLevel1_18.Verbose]: ScrcpyLogLevel1_16.Debug,
|
|
64
|
+
[ScrcpyLogLevel1_18.Debug]: ScrcpyLogLevel1_16.Debug,
|
|
65
|
+
[ScrcpyLogLevel1_18.Info]: ScrcpyLogLevel1_16.Info,
|
|
66
|
+
[ScrcpyLogLevel1_18.Warn]: ScrcpyLogLevel1_16.Warn,
|
|
67
|
+
[ScrcpyLogLevel1_18.Error]: ScrcpyLogLevel1_16.Error,
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
const VIDEO_ORIENTATION_MAP = {
|
|
71
|
+
[ScrcpyVideoOrientation1_18.Initial]: ScrcpyVideoOrientation1_16.Unlocked,
|
|
72
|
+
[ScrcpyVideoOrientation1_18.Unlocked]: ScrcpyVideoOrientation1_16.Unlocked,
|
|
73
|
+
[ScrcpyVideoOrientation1_18.Portrait]: ScrcpyVideoOrientation1_16.Portrait,
|
|
74
|
+
[ScrcpyVideoOrientation1_18.Landscape]:
|
|
75
|
+
ScrcpyVideoOrientation1_16.Landscape,
|
|
76
|
+
[ScrcpyVideoOrientation1_18.PortraitFlipped]:
|
|
77
|
+
ScrcpyVideoOrientation1_16.PortraitFlipped,
|
|
78
|
+
[ScrcpyVideoOrientation1_18.LandscapeFlipped]:
|
|
79
|
+
ScrcpyVideoOrientation1_16.LandscapeFlipped,
|
|
80
|
+
};
|
|
81
|
+
export class ScrcpyOptions1_18 extends ScrcpyOptionsBase<
|
|
82
|
+
ScrcpyOptionsInit1_18,
|
|
83
|
+
ScrcpyOptions1_17
|
|
84
|
+
> {
|
|
85
|
+
public static readonly DEFAULTS = {
|
|
86
|
+
...ScrcpyOptions1_17.DEFAULTS,
|
|
87
|
+
logLevel: ScrcpyLogLevel1_18.Debug,
|
|
88
|
+
lockVideoOrientation: ScrcpyVideoOrientation1_18.Unlocked,
|
|
89
|
+
powerOffOnClose: false,
|
|
90
|
+
} as const satisfies Required<ScrcpyOptionsInit1_18>;
|
|
91
|
+
|
|
92
|
+
public static readonly SERIALIZE_ORDER = [
|
|
93
|
+
...ScrcpyOptions1_17.SERIALIZE_ORDER,
|
|
94
|
+
"powerOffOnClose",
|
|
95
|
+
] as const satisfies readonly (keyof ScrcpyOptionsInit1_18)[];
|
|
25
96
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
> extends ScrcpyOptions1_16<T> {
|
|
29
|
-
constructor(value: Partial<ScrcpyOptionsInit1_18>) {
|
|
30
|
-
super(value);
|
|
97
|
+
public override get defaults(): Required<ScrcpyOptionsInit1_18> {
|
|
98
|
+
return ScrcpyOptions1_18.DEFAULTS;
|
|
31
99
|
}
|
|
32
100
|
|
|
33
|
-
|
|
34
|
-
return
|
|
101
|
+
public override get controlMessageTypes() {
|
|
102
|
+
return SCRCPY_CONTROL_MESSAGE_TYPES_1_18;
|
|
35
103
|
}
|
|
36
104
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
105
|
+
constructor(init: ScrcpyOptionsInit1_18) {
|
|
106
|
+
const value = { ...ScrcpyOptions1_18.DEFAULTS, ...init };
|
|
107
|
+
super(
|
|
108
|
+
new ScrcpyOptions1_17({
|
|
109
|
+
...init,
|
|
110
|
+
logLevel: LOG_LEVEL_MAP[value.logLevel],
|
|
111
|
+
lockVideoOrientation:
|
|
112
|
+
VIDEO_ORIENTATION_MAP[value.lockVideoOrientation],
|
|
113
|
+
}),
|
|
114
|
+
value
|
|
115
|
+
);
|
|
42
116
|
}
|
|
43
117
|
|
|
44
|
-
public
|
|
45
|
-
return
|
|
118
|
+
public serialize(): string[] {
|
|
119
|
+
return ScrcpyOptions1_16.serialize(
|
|
120
|
+
this.value,
|
|
121
|
+
ScrcpyOptions1_18.SERIALIZE_ORDER
|
|
122
|
+
);
|
|
46
123
|
}
|
|
47
124
|
|
|
48
|
-
public override
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
* 3 InjectScroll
|
|
54
|
-
* 4 BackOrScreenOn
|
|
55
|
-
* 5 ExpandNotificationPanel
|
|
56
|
-
* 6 ExpandSettingsPanel
|
|
57
|
-
* 7 CollapseNotificationPanel
|
|
58
|
-
* 8 GetClipboard
|
|
59
|
-
* 9 SetClipboard
|
|
60
|
-
* 10 SetScreenPowerMode
|
|
61
|
-
* 11 RotateDevice
|
|
62
|
-
*/
|
|
63
|
-
const types = super.getControlMessageTypes();
|
|
64
|
-
types.splice(6, 0, ScrcpyControlMessageType.ExpandSettingPanel);
|
|
65
|
-
return types;
|
|
125
|
+
public override parseEncoder(line: string): ScrcpyEncoder | undefined {
|
|
126
|
+
return ScrcpyOptions1_17.parseEncoder(
|
|
127
|
+
line,
|
|
128
|
+
/\s+scrcpy --encoder '(.*?)'/
|
|
129
|
+
);
|
|
66
130
|
}
|
|
67
131
|
|
|
68
132
|
public override serializeBackOrScreenOnControlMessage(
|
package/src/options/1_21.ts
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
// cspell: ignore autosync
|
|
2
2
|
|
|
3
|
-
import Struct from "@yume-chan/struct";
|
|
3
|
+
import Struct, { placeholder } from "@yume-chan/struct";
|
|
4
4
|
|
|
5
|
-
import {
|
|
6
|
-
ScrcpyControlMessageType,
|
|
7
|
-
type ScrcpySetClipboardControlMessage,
|
|
8
|
-
} from "../control/index.js";
|
|
5
|
+
import type { ScrcpySetClipboardControlMessage } from "../control/index.js";
|
|
9
6
|
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
7
|
+
import type { ScrcpyOptionsInit1_18 } from "./1_18.js";
|
|
8
|
+
import { ScrcpyOptions1_18 } from "./1_18.js";
|
|
9
|
+
import { ScrcpyOptionsBase, toScrcpyOptionValue } from "./types.js";
|
|
12
10
|
|
|
13
11
|
export interface ScrcpyOptionsInit1_21 extends ScrcpyOptionsInit1_18 {
|
|
14
12
|
clipboardAutosync?: boolean;
|
|
@@ -19,39 +17,62 @@ function toSnakeCase(input: string): string {
|
|
|
19
17
|
}
|
|
20
18
|
|
|
21
19
|
export const ScrcpySetClipboardControlMessage1_21 = new Struct()
|
|
22
|
-
.uint8("type"
|
|
20
|
+
.uint8("type")
|
|
23
21
|
.uint64("sequence")
|
|
24
|
-
.int8("paste")
|
|
22
|
+
.int8("paste", placeholder<boolean>())
|
|
25
23
|
.uint32("length")
|
|
26
24
|
.string("content", { lengthField: "length" });
|
|
27
25
|
|
|
28
26
|
export type ScrcpySetClipboardControlMessage1_21 =
|
|
29
|
-
typeof ScrcpySetClipboardControlMessage1_21["TInit"];
|
|
27
|
+
(typeof ScrcpySetClipboardControlMessage1_21)["TInit"];
|
|
30
28
|
|
|
31
|
-
export class ScrcpyOptions1_21<
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
29
|
+
export class ScrcpyOptions1_21 extends ScrcpyOptionsBase<
|
|
30
|
+
ScrcpyOptionsInit1_21,
|
|
31
|
+
ScrcpyOptions1_18
|
|
32
|
+
> {
|
|
33
|
+
public static readonly DEFAULTS = {
|
|
34
|
+
...ScrcpyOptions1_18.DEFAULTS,
|
|
35
|
+
clipboardAutosync: true,
|
|
36
|
+
} as const satisfies Required<ScrcpyOptionsInit1_21>;
|
|
37
|
+
|
|
38
|
+
public static serialize<T extends object>(
|
|
39
|
+
options: T,
|
|
40
|
+
defaults: Required<T>
|
|
41
|
+
): string[] {
|
|
42
|
+
// 1.21 changed the format of arguments
|
|
43
|
+
const result: string[] = [];
|
|
44
|
+
for (const [key, value] of Object.entries(options)) {
|
|
45
|
+
const serializedValue = toScrcpyOptionValue(value, undefined);
|
|
46
|
+
if (!serializedValue) {
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const defaultValue = toScrcpyOptionValue(
|
|
51
|
+
defaults[key as keyof T],
|
|
52
|
+
undefined
|
|
53
|
+
);
|
|
54
|
+
if (serializedValue == defaultValue) {
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
result.push(`${toSnakeCase(key)}=${serializedValue}`);
|
|
59
|
+
}
|
|
60
|
+
return result;
|
|
36
61
|
}
|
|
37
62
|
|
|
38
|
-
public override
|
|
39
|
-
return
|
|
40
|
-
...super.getDefaultValue(),
|
|
41
|
-
clipboardAutosync: true,
|
|
42
|
-
};
|
|
63
|
+
public override get defaults(): Required<ScrcpyOptionsInit1_21> {
|
|
64
|
+
return ScrcpyOptions1_21.DEFAULTS;
|
|
43
65
|
}
|
|
44
66
|
|
|
45
|
-
public
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
.map(([key, value]) => `${toSnakeCase(key)}=${value}`);
|
|
67
|
+
public constructor(init: ScrcpyOptionsInit1_21) {
|
|
68
|
+
super(new ScrcpyOptions1_18(init), {
|
|
69
|
+
...ScrcpyOptions1_21.DEFAULTS,
|
|
70
|
+
...init,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
public override serialize(): string[] {
|
|
75
|
+
return ScrcpyOptions1_21.serialize(this.value, this.defaults);
|
|
55
76
|
}
|
|
56
77
|
|
|
57
78
|
public override serializeSetClipboardControlMessage(
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ScrcpyOptionsInit1_21 } from "../1_21.js";
|
|
2
|
+
|
|
3
|
+
export interface ScrcpyOptionsInit1_22 extends ScrcpyOptionsInit1_21 {
|
|
4
|
+
downsizeOnError?: boolean;
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Send device name and size at start of video stream.
|
|
8
|
+
*
|
|
9
|
+
* @default true
|
|
10
|
+
*/
|
|
11
|
+
sendDeviceMeta?: boolean;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Send a `0` byte on start of video stream to detect connection issues
|
|
15
|
+
*
|
|
16
|
+
* @default true
|
|
17
|
+
*/
|
|
18
|
+
sendDummyByte?: boolean;
|
|
19
|
+
}
|
|
@@ -1,58 +1,52 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import type { ReadableStream } from "@yume-chan/stream-extra";
|
|
2
|
+
import type { ValueOrPromise } from "@yume-chan/struct";
|
|
3
3
|
|
|
4
|
+
import type { ScrcpyScrollController } from "../1_16/index.js";
|
|
5
|
+
import { ScrcpyOptions1_21 } from "../1_21.js";
|
|
6
|
+
import type { ScrcpyVideoStream } from "../codec.js";
|
|
7
|
+
import { ScrcpyVideoCodecId } from "../codec.js";
|
|
8
|
+
import { ScrcpyOptionsBase } from "../types.js";
|
|
9
|
+
|
|
10
|
+
import type { ScrcpyOptionsInit1_22 } from "./init.js";
|
|
4
11
|
import { ScrcpyScrollController1_22 } from "./scroll.js";
|
|
5
12
|
|
|
6
|
-
export
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
*/
|
|
21
|
-
sendDummyByte: boolean;
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Implies `sendDeviceMeta: false`, `sendFrameMeta: false` and `sendDummyByte: false`
|
|
25
|
-
*
|
|
26
|
-
* @default false
|
|
27
|
-
*/
|
|
28
|
-
rawVideoStream: boolean;
|
|
29
|
-
}
|
|
13
|
+
export class ScrcpyOptions1_22 extends ScrcpyOptionsBase<
|
|
14
|
+
ScrcpyOptionsInit1_22,
|
|
15
|
+
ScrcpyOptions1_21
|
|
16
|
+
> {
|
|
17
|
+
public static readonly DEFAULTS = {
|
|
18
|
+
...ScrcpyOptions1_21.DEFAULTS,
|
|
19
|
+
downsizeOnError: true,
|
|
20
|
+
sendDeviceMeta: true,
|
|
21
|
+
sendDummyByte: true,
|
|
22
|
+
} as const satisfies Required<ScrcpyOptionsInit1_22>;
|
|
23
|
+
|
|
24
|
+
public override get defaults(): Required<ScrcpyOptionsInit1_22> {
|
|
25
|
+
return ScrcpyOptions1_22.DEFAULTS;
|
|
26
|
+
}
|
|
30
27
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
init.sendDeviceMeta = false;
|
|
38
|
-
init.sendFrameMeta = false;
|
|
39
|
-
init.sendDummyByte = false;
|
|
40
|
-
}
|
|
28
|
+
public constructor(init: ScrcpyOptionsInit1_22) {
|
|
29
|
+
super(new ScrcpyOptions1_21(init), {
|
|
30
|
+
...ScrcpyOptions1_22.DEFAULTS,
|
|
31
|
+
...init,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
41
34
|
|
|
42
|
-
|
|
35
|
+
public override parseVideoStreamMetadata(
|
|
36
|
+
stream: ReadableStream<Uint8Array>
|
|
37
|
+
): ValueOrPromise<ScrcpyVideoStream> {
|
|
38
|
+
if (!this.value.sendDeviceMeta) {
|
|
39
|
+
return { stream, metadata: { codec: ScrcpyVideoCodecId.H264 } };
|
|
40
|
+
} else {
|
|
41
|
+
return this._base.parseVideoStreamMetadata(stream);
|
|
42
|
+
}
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
public override
|
|
46
|
-
return
|
|
47
|
-
...super.getDefaultValue(),
|
|
48
|
-
downsizeOnError: true,
|
|
49
|
-
sendDeviceMeta: true,
|
|
50
|
-
sendDummyByte: true,
|
|
51
|
-
rawVideoStream: false,
|
|
52
|
-
};
|
|
45
|
+
public override serialize(): string[] {
|
|
46
|
+
return ScrcpyOptions1_21.serialize(this.value, this.defaults);
|
|
53
47
|
}
|
|
54
48
|
|
|
55
|
-
public override
|
|
49
|
+
public override createScrollController(): ScrcpyScrollController {
|
|
56
50
|
return new ScrcpyScrollController1_22();
|
|
57
51
|
}
|
|
58
52
|
}
|
|
@@ -6,11 +6,11 @@ import {
|
|
|
6
6
|
} from "../1_16/index.js";
|
|
7
7
|
|
|
8
8
|
export const ScrcpyInjectScrollControlMessage1_22 = new Struct()
|
|
9
|
-
.
|
|
9
|
+
.concat(ScrcpyInjectScrollControlMessage1_16)
|
|
10
10
|
.int32("buttons");
|
|
11
11
|
|
|
12
12
|
export type ScrcpyInjectScrollControlMessage1_22 =
|
|
13
|
-
typeof ScrcpyInjectScrollControlMessage1_22["TInit"];
|
|
13
|
+
(typeof ScrcpyInjectScrollControlMessage1_22)["TInit"];
|
|
14
14
|
|
|
15
15
|
export class ScrcpyScrollController1_22 extends ScrcpyScrollController1_16 {
|
|
16
16
|
public override serializeScrollMessage(
|
package/src/options/1_23.ts
CHANGED
|
@@ -1,42 +1,52 @@
|
|
|
1
1
|
import { TransformStream } from "@yume-chan/stream-extra";
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
} from "./
|
|
7
|
-
import {
|
|
3
|
+
import { ScrcpyOptions1_21 } from "./1_21.js";
|
|
4
|
+
import type { ScrcpyOptionsInit1_22 } from "./1_22/index.js";
|
|
5
|
+
import { ScrcpyOptions1_22 } from "./1_22/index.js";
|
|
6
|
+
import type { ScrcpyMediaStreamPacket } from "./codec.js";
|
|
7
|
+
import { ScrcpyOptionsBase } from "./types.js";
|
|
8
8
|
|
|
9
9
|
export interface ScrcpyOptionsInit1_23 extends ScrcpyOptionsInit1_22 {
|
|
10
|
-
cleanup
|
|
10
|
+
cleanup?: boolean;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
const KEYFRAME_PTS =
|
|
13
|
+
const KEYFRAME_PTS = 1n << 62n;
|
|
14
14
|
|
|
15
|
-
export class ScrcpyOptions1_23<
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
export class ScrcpyOptions1_23 extends ScrcpyOptionsBase<
|
|
16
|
+
ScrcpyOptionsInit1_23,
|
|
17
|
+
ScrcpyOptions1_22
|
|
18
|
+
> {
|
|
19
|
+
public static readonly DEFAULTS = {
|
|
20
|
+
...ScrcpyOptions1_22.DEFAULTS,
|
|
21
|
+
cleanup: true,
|
|
22
|
+
} as const satisfies Required<ScrcpyOptionsInit1_23>;
|
|
23
|
+
|
|
24
|
+
public override get defaults(): Required<ScrcpyOptionsInit1_23> {
|
|
25
|
+
return ScrcpyOptions1_23.DEFAULTS;
|
|
20
26
|
}
|
|
21
27
|
|
|
22
|
-
public
|
|
23
|
-
|
|
24
|
-
...
|
|
25
|
-
|
|
26
|
-
};
|
|
28
|
+
public constructor(init: ScrcpyOptionsInit1_22) {
|
|
29
|
+
super(new ScrcpyOptions1_22(init), {
|
|
30
|
+
...ScrcpyOptions1_23.DEFAULTS,
|
|
31
|
+
...init,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
public override serialize(): string[] {
|
|
36
|
+
return ScrcpyOptions1_21.serialize(this.value, this.defaults);
|
|
27
37
|
}
|
|
28
38
|
|
|
29
|
-
public override
|
|
39
|
+
public override createMediaStreamTransformer(): TransformStream<
|
|
30
40
|
Uint8Array,
|
|
31
|
-
|
|
41
|
+
ScrcpyMediaStreamPacket
|
|
32
42
|
> {
|
|
33
|
-
const
|
|
43
|
+
const stream = this._base.createMediaStreamTransformer();
|
|
34
44
|
return {
|
|
35
|
-
writable:
|
|
36
|
-
readable:
|
|
45
|
+
writable: stream.writable,
|
|
46
|
+
readable: stream.readable.pipeThrough(
|
|
37
47
|
new TransformStream({
|
|
38
48
|
transform(packet, controller): void {
|
|
39
|
-
if (packet.type !== "
|
|
49
|
+
if (packet.type !== "data") {
|
|
40
50
|
controller.enqueue(packet);
|
|
41
51
|
return;
|
|
42
52
|
}
|
package/src/options/1_24.ts
CHANGED
|
@@ -1,19 +1,33 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ScrcpyOptions1_21 } from "./1_21.js";
|
|
2
|
+
import type { ScrcpyOptionsInit1_23 } from "./1_23.js";
|
|
3
|
+
import { ScrcpyOptions1_23 } from "./1_23.js";
|
|
4
|
+
import { ScrcpyOptionsBase } from "./types.js";
|
|
2
5
|
|
|
3
6
|
export interface ScrcpyOptionsInit1_24 extends ScrcpyOptionsInit1_23 {
|
|
4
|
-
powerOn
|
|
7
|
+
powerOn?: boolean;
|
|
5
8
|
}
|
|
6
9
|
|
|
7
|
-
export class ScrcpyOptions1_24
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
export class ScrcpyOptions1_24 extends ScrcpyOptionsBase<
|
|
11
|
+
ScrcpyOptionsInit1_24,
|
|
12
|
+
ScrcpyOptions1_23
|
|
13
|
+
> {
|
|
14
|
+
public static readonly DEFAULTS = {
|
|
15
|
+
...ScrcpyOptions1_23.DEFAULTS,
|
|
16
|
+
powerOn: true,
|
|
17
|
+
} as const satisfies Required<ScrcpyOptionsInit1_24>;
|
|
18
|
+
|
|
19
|
+
public override get defaults(): Required<ScrcpyOptionsInit1_24> {
|
|
20
|
+
return ScrcpyOptions1_24.DEFAULTS;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
public constructor(init: ScrcpyOptionsInit1_24) {
|
|
24
|
+
super(new ScrcpyOptions1_23(init), {
|
|
25
|
+
...ScrcpyOptions1_24.DEFAULTS,
|
|
26
|
+
...init,
|
|
27
|
+
});
|
|
11
28
|
}
|
|
12
29
|
|
|
13
|
-
public override
|
|
14
|
-
return
|
|
15
|
-
...super.getDefaultValue(),
|
|
16
|
-
powerOn: true,
|
|
17
|
-
};
|
|
30
|
+
public override serialize(): string[] {
|
|
31
|
+
return ScrcpyOptions1_21.serialize(this.value, this.defaults);
|
|
18
32
|
}
|
|
19
33
|
}
|
|
@@ -1,12 +1,31 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import type { ScrcpyScrollController } from "../1_16/index.js";
|
|
2
|
+
import { ScrcpyOptions1_21 } from "../1_21.js";
|
|
3
|
+
import type { ScrcpyOptionsInit1_24 } from "../1_24.js";
|
|
4
|
+
import { ScrcpyOptions1_24 } from "../1_24.js";
|
|
5
|
+
import { ScrcpyOptionsBase } from "../types.js";
|
|
3
6
|
|
|
4
7
|
import { ScrcpyScrollController1_25 } from "./scroll.js";
|
|
5
8
|
|
|
6
|
-
export class ScrcpyOptions1_25<
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
export class ScrcpyOptions1_25 extends ScrcpyOptionsBase<
|
|
10
|
+
ScrcpyOptionsInit1_24,
|
|
11
|
+
ScrcpyOptions1_24
|
|
12
|
+
> {
|
|
13
|
+
public override get defaults(): Required<ScrcpyOptionsInit1_24> {
|
|
14
|
+
return ScrcpyOptions1_24.DEFAULTS;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
public constructor(init: ScrcpyOptionsInit1_24) {
|
|
18
|
+
super(new ScrcpyOptions1_24(init), {
|
|
19
|
+
...ScrcpyOptions1_24.DEFAULTS,
|
|
20
|
+
...init,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
public override serialize(): string[] {
|
|
25
|
+
return ScrcpyOptions1_21.serialize(this.value, this.defaults);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
public override createScrollController(): ScrcpyScrollController {
|
|
10
29
|
return new ScrcpyScrollController1_25();
|
|
11
30
|
}
|
|
12
31
|
}
|
|
@@ -3,12 +3,10 @@ import Struct, {
|
|
|
3
3
|
NumberFieldType,
|
|
4
4
|
} from "@yume-chan/struct";
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
} from "../../control/index.js";
|
|
11
|
-
import { type ScrcpyScrollController } from "../1_16/index.js";
|
|
6
|
+
import type { ScrcpyInjectScrollControlMessage } from "../../control/index.js";
|
|
7
|
+
import { ScrcpyControlMessageType } from "../../control/index.js";
|
|
8
|
+
import type { ScrcpyScrollController } from "../1_16/index.js";
|
|
9
|
+
import { clamp } from "../1_16/index.js";
|
|
12
10
|
|
|
13
11
|
export const ScrcpyFloatToInt16NumberType: NumberFieldType = {
|
|
14
12
|
size: 2,
|
|
@@ -41,7 +39,7 @@ export const ScrcpyInjectScrollControlMessage1_25 = new Struct()
|
|
|
41
39
|
.int32("buttons");
|
|
42
40
|
|
|
43
41
|
export type ScrcpyInjectScrollControlMessage1_25 =
|
|
44
|
-
typeof ScrcpyInjectScrollControlMessage1_25["TInit"];
|
|
42
|
+
(typeof ScrcpyInjectScrollControlMessage1_25)["TInit"];
|
|
45
43
|
|
|
46
44
|
export class ScrcpyScrollController1_25 implements ScrcpyScrollController {
|
|
47
45
|
serializeScrollMessage(
|