@yume-chan/scrcpy 1.0.0 → 2.0.0
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.md +32 -0
- package/LICENSE +1 -1
- package/esm/1_15/impl/back-or-screen-on.d.ts +1 -1
- package/esm/1_15/impl/clipboard-stream.d.ts +3 -3
- package/esm/1_15/impl/defaults.d.ts +1 -2
- package/esm/1_15/impl/defaults.d.ts.map +1 -1
- package/esm/1_15/impl/defaults.js +2 -2
- package/esm/1_15/impl/defaults.js.map +1 -1
- package/esm/1_15/impl/init.d.ts +10 -2
- package/esm/1_15/impl/init.d.ts.map +1 -1
- package/esm/1_15/impl/init.js +15 -0
- package/esm/1_15/impl/init.js.map +1 -1
- package/esm/1_15/impl/inject-touch.d.ts +9 -9
- package/esm/1_15/impl/inject-touch.d.ts.map +1 -1
- package/esm/1_15/impl/inject-touch.js +14 -18
- package/esm/1_15/impl/inject-touch.js.map +1 -1
- package/esm/1_15/impl/media-stream-transformer.d.ts +3 -3
- package/esm/1_15/impl/scroll-controller.d.ts +5 -5
- package/esm/1_15/impl/scroll-controller.js +2 -2
- package/esm/1_15/impl/scroll-controller.js.map +1 -1
- package/esm/1_15/impl/set-clipboard.d.ts +3 -3
- package/esm/1_15/index.d.ts +0 -1
- package/esm/1_15/index.d.ts.map +1 -1
- package/esm/1_15/index.js +0 -1
- package/esm/1_15/index.js.map +1 -1
- package/esm/1_15/options.d.ts +3 -3
- package/esm/1_15/options.d.ts.map +1 -1
- package/esm/1_15/options.js.map +1 -1
- package/esm/1_15_1.d.ts +8 -0
- package/esm/1_15_1.d.ts.map +1 -0
- package/esm/1_15_1.js +7 -0
- package/esm/1_15_1.js.map +1 -0
- package/esm/1_16.d.ts +7 -1
- package/esm/1_16.d.ts.map +1 -1
- package/esm/1_16.js +6 -1
- package/esm/1_16.js.map +1 -1
- package/esm/1_17/impl/defaults.d.ts +1 -2
- package/esm/1_17/impl/defaults.d.ts.map +1 -1
- package/esm/1_17/index.d.ts +0 -1
- package/esm/1_17/index.d.ts.map +1 -1
- package/esm/1_17/index.js +0 -1
- package/esm/1_17/index.js.map +1 -1
- package/esm/1_17/options.d.ts +5 -5
- package/esm/1_17/options.d.ts.map +1 -1
- package/esm/1_17/options.js.map +1 -1
- package/esm/1_18/impl/back-or-screen-on.d.ts +5 -3
- package/esm/1_18/impl/back-or-screen-on.d.ts.map +1 -1
- package/esm/1_18/impl/back-or-screen-on.js +2 -5
- package/esm/1_18/impl/back-or-screen-on.js.map +1 -1
- package/esm/1_18/impl/defaults.d.ts +1 -2
- package/esm/1_18/impl/defaults.d.ts.map +1 -1
- package/esm/1_18/index.d.ts +0 -1
- package/esm/1_18/index.d.ts.map +1 -1
- package/esm/1_18/index.js +0 -1
- package/esm/1_18/index.js.map +1 -1
- package/esm/1_18/options.d.ts +5 -5
- package/esm/1_18/options.d.ts.map +1 -1
- package/esm/1_18/options.js.map +1 -1
- package/esm/1_19.d.ts +7 -1
- package/esm/1_19.d.ts.map +1 -1
- package/esm/1_19.js +6 -1
- package/esm/1_19.js.map +1 -1
- package/esm/1_20.d.ts +7 -1
- package/esm/1_20.d.ts.map +1 -1
- package/esm/1_20.js +6 -1
- package/esm/1_20.js.map +1 -1
- package/esm/1_21/impl/defaults.d.ts +1 -2
- package/esm/1_21/impl/defaults.d.ts.map +1 -1
- package/esm/1_21/impl/set-clipboard.d.ts +6 -6
- package/esm/1_21/index.d.ts +0 -1
- package/esm/1_21/index.d.ts.map +1 -1
- package/esm/1_21/index.js +0 -1
- package/esm/1_21/index.js.map +1 -1
- package/esm/1_21/options.d.ts +5 -5
- package/esm/1_21/options.d.ts.map +1 -1
- package/esm/1_21/options.js.map +1 -1
- package/esm/1_22/impl/defaults.d.ts +1 -2
- package/esm/1_22/impl/defaults.d.ts.map +1 -1
- package/esm/1_22/impl/index.d.ts +1 -1
- package/esm/1_22/impl/index.d.ts.map +1 -1
- package/esm/1_22/impl/index.js +1 -1
- package/esm/1_22/impl/index.js.map +1 -1
- package/esm/1_22/impl/scroll-controller.d.ts +10 -6
- package/esm/1_22/impl/scroll-controller.d.ts.map +1 -1
- package/esm/1_22/impl/scroll-controller.js +5 -5
- package/esm/1_22/impl/scroll-controller.js.map +1 -1
- package/esm/1_22/index.d.ts +0 -1
- package/esm/1_22/index.d.ts.map +1 -1
- package/esm/1_22/index.js +0 -1
- package/esm/1_22/index.js.map +1 -1
- package/esm/1_22/options.d.ts +5 -5
- package/esm/1_22/options.d.ts.map +1 -1
- package/esm/1_22/options.js.map +1 -1
- package/esm/1_23/impl/defaults.d.ts +1 -2
- package/esm/1_23/impl/defaults.d.ts.map +1 -1
- package/esm/1_23/index.d.ts +0 -1
- package/esm/1_23/index.d.ts.map +1 -1
- package/esm/1_23/index.js +0 -1
- package/esm/1_23/index.js.map +1 -1
- package/esm/1_23/options.d.ts +5 -5
- package/esm/1_23/options.d.ts.map +1 -1
- package/esm/1_23/options.js.map +1 -1
- package/esm/1_24/impl/defaults.d.ts +1 -2
- package/esm/1_24/impl/defaults.d.ts.map +1 -1
- package/esm/1_24/index.d.ts +0 -1
- package/esm/1_24/index.d.ts.map +1 -1
- package/esm/1_24/index.js +0 -1
- package/esm/1_24/index.js.map +1 -1
- package/esm/1_24/options.d.ts +5 -5
- package/esm/1_24/options.d.ts.map +1 -1
- package/esm/1_24/options.js.map +1 -1
- package/esm/1_25/impl/index.d.ts +1 -1
- package/esm/1_25/impl/index.d.ts.map +1 -1
- package/esm/1_25/impl/index.js +1 -1
- package/esm/1_25/impl/index.js.map +1 -1
- package/esm/1_25/impl/scroll-controller.d.ts +12 -11
- package/esm/1_25/impl/scroll-controller.d.ts.map +1 -1
- package/esm/1_25/impl/scroll-controller.js +17 -18
- package/esm/1_25/impl/scroll-controller.js.map +1 -1
- package/esm/1_25/index.d.ts +0 -1
- package/esm/1_25/index.d.ts.map +1 -1
- package/esm/1_25/index.js +0 -1
- package/esm/1_25/index.js.map +1 -1
- package/esm/1_25/options.d.ts +5 -5
- package/esm/1_25/options.d.ts.map +1 -1
- package/esm/1_25/options.js.map +1 -1
- package/esm/2_0/impl/defaults.d.ts +4 -6
- package/esm/2_0/impl/defaults.d.ts.map +1 -1
- package/esm/2_0/impl/defaults.js +3 -4
- package/esm/2_0/impl/defaults.js.map +1 -1
- package/esm/2_0/impl/init.d.ts +3 -3
- package/esm/2_0/impl/init.d.ts.map +1 -1
- package/esm/2_0/impl/inject-touch.d.ts +11 -11
- package/esm/2_0/impl/inject-touch.js +2 -2
- package/esm/2_0/impl/inject-touch.js.map +1 -1
- package/esm/2_0/impl/parse-audio-stream-metadata.d.ts +1 -1
- package/esm/2_0/impl/parse-audio-stream-metadata.d.ts.map +1 -1
- package/esm/2_0/impl/parse-audio-stream-metadata.js.map +1 -1
- package/esm/2_0/index.d.ts +0 -1
- package/esm/2_0/index.d.ts.map +1 -1
- package/esm/2_0/index.js +0 -1
- package/esm/2_0/index.js.map +1 -1
- package/esm/2_0/options.d.ts +8 -8
- package/esm/2_0/options.d.ts.map +1 -1
- package/esm/2_0/options.js.map +1 -1
- package/esm/2_1/impl/defaults.d.ts +4 -5
- package/esm/2_1/impl/defaults.d.ts.map +1 -1
- package/esm/2_1/impl/defaults.js.map +1 -1
- package/esm/2_1/impl/init.d.ts +2 -2
- package/esm/2_1/impl/init.d.ts.map +1 -1
- package/esm/2_1/index.d.ts +0 -1
- package/esm/2_1/index.d.ts.map +1 -1
- package/esm/2_1/index.js +0 -1
- package/esm/2_1/index.js.map +1 -1
- package/esm/2_1/options.d.ts +12 -12
- package/esm/2_1/options.d.ts.map +1 -1
- package/esm/2_1/options.js.map +1 -1
- package/esm/2_1_1.d.ts +8 -0
- package/esm/2_1_1.d.ts.map +1 -0
- package/esm/2_1_1.js +7 -0
- package/esm/2_1_1.js.map +1 -0
- package/esm/2_2/impl/defaults.d.ts +4 -5
- package/esm/2_2/impl/defaults.d.ts.map +1 -1
- package/esm/2_2/impl/defaults.js.map +1 -1
- package/esm/2_2/impl/init.d.ts +1 -1
- package/esm/2_2/impl/init.d.ts.map +1 -1
- package/esm/2_2/index.d.ts +0 -1
- package/esm/2_2/index.d.ts.map +1 -1
- package/esm/2_2/index.js +0 -1
- package/esm/2_2/index.js.map +1 -1
- package/esm/2_2/options.d.ts +12 -12
- package/esm/2_2/options.d.ts.map +1 -1
- package/esm/2_2/options.js.map +1 -1
- package/esm/2_3/impl/init.d.ts +2 -2
- package/esm/2_3/impl/init.d.ts.map +1 -1
- package/esm/2_3/index.d.ts +0 -1
- package/esm/2_3/index.d.ts.map +1 -1
- package/esm/2_3/index.js +0 -1
- package/esm/2_3/index.js.map +1 -1
- package/esm/2_3/options.d.ts +12 -12
- package/esm/2_3/options.d.ts.map +1 -1
- package/esm/2_3/options.js.map +1 -1
- package/esm/2_3_1.d.ts +8 -0
- package/esm/2_3_1.d.ts.map +1 -0
- package/esm/2_3_1.js +7 -0
- package/esm/2_3_1.js.map +1 -0
- package/esm/2_4/impl/serialize-uhid-create.d.ts +3 -3
- package/esm/2_4/impl/uhid-output-stream.d.ts +3 -3
- package/esm/2_4/index.d.ts +0 -1
- package/esm/2_4/index.d.ts.map +1 -1
- package/esm/2_4/index.js +0 -1
- package/esm/2_4/index.js.map +1 -1
- package/esm/2_4/options.d.ts +12 -12
- package/esm/2_4/options.d.ts.map +1 -1
- package/esm/2_4/options.js.map +1 -1
- package/esm/2_5.d.ts +7 -1
- package/esm/2_5.d.ts.map +1 -1
- package/esm/2_5.js +6 -1
- package/esm/2_5.js.map +1 -1
- package/esm/2_6/impl/defaults.d.ts +4 -5
- package/esm/2_6/impl/defaults.d.ts.map +1 -1
- package/esm/2_6/impl/defaults.js.map +1 -1
- package/esm/2_6/impl/init.d.ts +2 -2
- package/esm/2_6/impl/init.d.ts.map +1 -1
- package/esm/2_6/index.d.ts +0 -1
- package/esm/2_6/index.d.ts.map +1 -1
- package/esm/2_6/index.js +0 -1
- package/esm/2_6/index.js.map +1 -1
- package/esm/2_6/options.d.ts +12 -12
- package/esm/2_6/options.d.ts.map +1 -1
- package/esm/2_6/options.js.map +1 -1
- package/esm/2_6_1.d.ts +8 -0
- package/esm/2_6_1.d.ts.map +1 -0
- package/esm/2_6_1.js +7 -0
- package/esm/2_6_1.js.map +1 -0
- package/esm/2_7/impl/serialize-uhid-create.d.ts +7 -7
- package/esm/2_7/index.d.ts +0 -1
- package/esm/2_7/index.d.ts.map +1 -1
- package/esm/2_7/index.js +0 -1
- package/esm/2_7/index.js.map +1 -1
- package/esm/2_7/options.d.ts +12 -12
- package/esm/2_7/options.d.ts.map +1 -1
- package/esm/2_7/options.js.map +1 -1
- package/esm/3_0/impl/defaults.d.ts +5 -7
- package/esm/3_0/impl/defaults.d.ts.map +1 -1
- package/esm/3_0/impl/defaults.js +1 -2
- package/esm/3_0/impl/defaults.js.map +1 -1
- package/esm/3_0/impl/init.d.ts +3 -3
- package/esm/3_0/impl/init.d.ts.map +1 -1
- package/esm/3_0/index.d.ts +0 -1
- package/esm/3_0/index.d.ts.map +1 -1
- package/esm/3_0/index.js +0 -1
- package/esm/3_0/index.js.map +1 -1
- package/esm/3_0/options.d.ts +13 -13
- package/esm/3_0/options.d.ts.map +1 -1
- package/esm/3_0/options.js.map +1 -1
- package/esm/3_0_1.d.ts +8 -0
- package/esm/3_0_1.d.ts.map +1 -0
- package/esm/3_0_1.js +7 -0
- package/esm/3_0_1.js.map +1 -0
- package/esm/3_0_2.d.ts +8 -0
- package/esm/3_0_2.d.ts.map +1 -0
- package/esm/3_0_2.js +7 -0
- package/esm/3_0_2.js.map +1 -0
- package/esm/3_1/impl/defaults.d.ts +56 -0
- package/esm/3_1/impl/defaults.d.ts.map +1 -0
- package/esm/3_1/impl/defaults.js +6 -0
- package/esm/3_1/impl/defaults.js.map +1 -0
- package/esm/3_1/impl/index.d.ts +5 -0
- package/esm/3_1/impl/index.d.ts.map +1 -0
- package/esm/3_1/impl/index.js +4 -0
- package/esm/3_1/impl/index.js.map +1 -0
- package/esm/3_1/impl/init.d.ts +5 -0
- package/esm/3_1/impl/init.d.ts.map +1 -0
- package/esm/3_1/impl/init.js +2 -0
- package/esm/3_1/impl/init.js.map +1 -0
- package/esm/3_1/impl/prev.d.ts +2 -0
- package/esm/3_1/impl/prev.d.ts.map +1 -0
- package/esm/3_1/impl/prev.js +2 -0
- package/esm/3_1/impl/prev.js.map +1 -0
- package/esm/3_1/impl/serialize-uhid-create.d.ts +20 -0
- package/esm/3_1/impl/serialize-uhid-create.d.ts.map +1 -0
- package/esm/3_1/impl/serialize-uhid-create.js +14 -0
- package/esm/3_1/impl/serialize-uhid-create.js.map +1 -0
- package/esm/3_1/index.d.ts +2 -0
- package/esm/3_1/index.d.ts.map +1 -0
- package/esm/3_1/index.js +2 -0
- package/esm/3_1/index.js.map +1 -0
- package/esm/3_1/options.d.ts +90 -0
- package/esm/3_1/options.d.ts.map +1 -0
- package/esm/3_1/options.js +92 -0
- package/esm/3_1/options.js.map +1 -0
- package/esm/android/key-event.d.ts.map +1 -1
- package/esm/android/key-event.js +3 -2
- package/esm/android/key-event.js.map +1 -1
- package/esm/base/option-value.js +2 -2
- package/esm/base/option-value.js.map +1 -1
- package/esm/base/options.d.ts +6 -4
- package/esm/base/options.d.ts.map +1 -1
- package/esm/codec/h265.d.ts +23 -2
- package/esm/codec/h265.d.ts.map +1 -1
- package/esm/codec/h265.js +25 -3
- package/esm/codec/h265.js.map +1 -1
- package/esm/control/empty.d.ts +1 -1
- package/esm/control/inject-key-code.d.ts +9 -9
- package/esm/control/inject-text.d.ts +3 -3
- package/esm/control/set-screen-power-mode.d.ts +3 -3
- package/esm/control/start-app.d.ts +3 -3
- package/esm/control/uhid.d.ts +6 -6
- package/esm/index.d.ts +7 -0
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +7 -0
- package/esm/index.js.map +1 -1
- package/esm/latest.d.ts +8 -1
- package/esm/latest.d.ts.map +1 -1
- package/esm/latest.js +7 -1
- package/esm/latest.js.map +1 -1
- package/esm/utils/index.d.ts +0 -1
- package/esm/utils/index.d.ts.map +1 -1
- package/esm/utils/index.js +0 -1
- package/esm/utils/index.js.map +1 -1
- package/package.json +8 -8
- package/src/1_15/impl/defaults.ts +2 -2
- package/src/1_15/impl/init.ts +20 -2
- package/src/1_15/impl/inject-touch.ts +13 -12
- package/src/1_15/impl/scroll-controller.ts +2 -2
- package/src/1_15/index.ts +0 -1
- package/src/1_15/options.ts +2 -2
- package/src/1_15_1.ts +11 -0
- package/src/1_16.ts +11 -4
- package/src/1_17/index.ts +0 -1
- package/src/1_17/options.ts +6 -3
- package/src/1_18/impl/back-or-screen-on.ts +5 -9
- package/src/1_18/index.ts +0 -1
- package/src/1_18/options.ts +6 -3
- package/src/1_19.ts +11 -4
- package/src/1_20.ts +11 -4
- package/src/1_21/index.ts +0 -1
- package/src/1_21/options.ts +6 -3
- package/src/1_22/impl/index.ts +1 -0
- package/src/1_22/impl/scroll-controller.ts +10 -9
- package/src/1_22/index.ts +0 -1
- package/src/1_22/options.ts +6 -3
- package/src/1_23/index.ts +0 -1
- package/src/1_23/options.ts +6 -3
- package/src/1_24/index.ts +0 -1
- package/src/1_24/options.ts +6 -3
- package/src/1_25/impl/index.ts +1 -0
- package/src/1_25/impl/scroll-controller.ts +15 -10
- package/src/1_25/index.ts +0 -1
- package/src/1_25/options.ts +6 -3
- package/src/2_0/impl/defaults.ts +3 -4
- package/src/2_0/impl/init.ts +3 -3
- package/src/2_0/impl/inject-touch.ts +2 -2
- package/src/2_0/impl/parse-audio-stream-metadata.ts +1 -1
- package/src/2_0/index.ts +0 -1
- package/src/2_0/options.ts +6 -3
- package/src/2_1/impl/defaults.ts +1 -1
- package/src/2_1/impl/init.ts +2 -2
- package/src/2_1/index.ts +0 -1
- package/src/2_1/options.ts +12 -9
- package/src/2_1_1.ts +14 -0
- package/src/2_2/impl/defaults.ts +1 -1
- package/src/2_2/impl/init.ts +1 -1
- package/src/2_2/index.ts +0 -1
- package/src/2_2/options.ts +12 -9
- package/src/2_3/impl/init.ts +3 -2
- package/src/2_3/index.ts +0 -1
- package/src/2_3/options.ts +12 -9
- package/src/2_3_1.ts +14 -0
- package/src/2_4/index.ts +0 -1
- package/src/2_4/options.ts +12 -9
- package/src/2_5.ts +14 -4
- package/src/2_6/impl/defaults.ts +1 -1
- package/src/2_6/impl/init.ts +3 -2
- package/src/2_6/index.ts +0 -1
- package/src/2_6/options.ts +13 -10
- package/src/2_6_1.ts +14 -0
- package/src/2_7/index.ts +0 -1
- package/src/2_7/options.ts +12 -9
- package/src/3_0/impl/defaults.ts +2 -3
- package/src/3_0/impl/init.ts +4 -3
- package/src/3_0/index.ts +0 -1
- package/src/3_0/options.ts +12 -9
- package/src/3_0_1.ts +14 -0
- package/src/3_0_2.ts +14 -0
- package/src/3_1/impl/defaults.ts +8 -0
- package/src/3_1/impl/index.ts +7 -0
- package/src/3_1/impl/init.ts +5 -0
- package/src/3_1/impl/prev.ts +1 -0
- package/src/3_1/impl/serialize-uhid-create.ts +28 -0
- package/src/3_1/index.ts +1 -0
- package/src/3_1/options.ts +190 -0
- package/src/android/key-event.ts +3 -2
- package/src/base/option-value.ts +2 -2
- package/src/base/options.ts +11 -6
- package/src/codec/h265.ts +31 -5
- package/src/index.ts +7 -0
- package/src/latest.ts +17 -1
- package/src/utils/index.ts +0 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/esm/utils/wrapper.d.ts +0 -37
- package/esm/utils/wrapper.d.ts.map +0 -1
- package/esm/utils/wrapper.js +0 -76
- package/esm/utils/wrapper.js.map +0 -1
- package/src/utils/wrapper.ts +0 -131
package/src/1_15/impl/init.ts
CHANGED
|
@@ -89,6 +89,24 @@ export namespace CodecOptions {
|
|
|
89
89
|
export type Init = CodecOptionsInit;
|
|
90
90
|
}
|
|
91
91
|
|
|
92
|
+
export class Crop implements ScrcpyOptionValue {
|
|
93
|
+
width: number;
|
|
94
|
+
height: number;
|
|
95
|
+
x: number;
|
|
96
|
+
y: number;
|
|
97
|
+
|
|
98
|
+
constructor(width: number, height: number, x: number, y: number) {
|
|
99
|
+
this.width = width;
|
|
100
|
+
this.height = height;
|
|
101
|
+
this.x = x;
|
|
102
|
+
this.y = y;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
toOptionValue(): string | undefined {
|
|
106
|
+
return `${this.width}:${this.height}:${this.x}:${this.y}`;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
92
110
|
export interface Init {
|
|
93
111
|
logLevel?: LogLevel;
|
|
94
112
|
|
|
@@ -124,7 +142,7 @@ export interface Init {
|
|
|
124
142
|
*/
|
|
125
143
|
tunnelForward?: boolean;
|
|
126
144
|
|
|
127
|
-
crop?: string | undefined;
|
|
145
|
+
crop?: Crop | string | undefined;
|
|
128
146
|
|
|
129
147
|
/**
|
|
130
148
|
* Send PTS so that the client may record properly
|
|
@@ -150,5 +168,5 @@ export interface Init {
|
|
|
150
168
|
|
|
151
169
|
stayAwake?: boolean;
|
|
152
170
|
|
|
153
|
-
codecOptions?: CodecOptions;
|
|
171
|
+
codecOptions?: CodecOptions | string | undefined;
|
|
154
172
|
}
|
|
@@ -1,26 +1,27 @@
|
|
|
1
1
|
import { getUint16, setUint16 } from "@yume-chan/no-data-view";
|
|
2
2
|
import type { Field, StructInit } from "@yume-chan/struct";
|
|
3
|
-
import {
|
|
3
|
+
import { field, struct, u16, u32, u64, u8 } from "@yume-chan/struct";
|
|
4
4
|
|
|
5
5
|
import type { AndroidMotionEventAction } from "../../android/index.js";
|
|
6
6
|
import type { ScrcpyInjectTouchControlMessage } from "../../latest.js";
|
|
7
7
|
import { clamp } from "../../utils/index.js";
|
|
8
8
|
|
|
9
|
-
export const UnsignedFloat: Field<number, never, never> =
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
export const UnsignedFloat: Field<number, never, never> = field(
|
|
10
|
+
2,
|
|
11
|
+
"byob",
|
|
12
|
+
(source, { buffer, index, littleEndian }) => {
|
|
12
13
|
// https://github.com/Genymobile/scrcpy/blob/1f138aef41de651668043b32c4effc2d4adbfc44/app/src/util/binary.h#L51
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
setUint16(buffer, index,
|
|
14
|
+
source = clamp(source, -1, 1);
|
|
15
|
+
source = source === 1 ? 0xffff : source * 0x10000;
|
|
16
|
+
setUint16(buffer, index, source, littleEndian);
|
|
16
17
|
},
|
|
17
|
-
|
|
18
|
+
function* (then, reader, { littleEndian }) {
|
|
18
19
|
const data = yield* then(reader.readExactly(2));
|
|
19
20
|
const value = getUint16(data, 0, littleEndian);
|
|
20
21
|
// https://github.com/Genymobile/scrcpy/blob/1f138aef41de651668043b32c4effc2d4adbfc44/server/src/main/java/com/genymobile/scrcpy/Binary.java#L22
|
|
21
22
|
return value === 0xffff ? 1 : value / 0x10000;
|
|
22
|
-
}
|
|
23
|
-
|
|
23
|
+
},
|
|
24
|
+
);
|
|
24
25
|
|
|
25
26
|
export const PointerId = {
|
|
26
27
|
Mouse: -1n,
|
|
@@ -36,8 +37,8 @@ export const InjectTouchControlMessage = struct(
|
|
|
36
37
|
pointerId: u64,
|
|
37
38
|
pointerX: u32,
|
|
38
39
|
pointerY: u32,
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
videoWidth: u16,
|
|
41
|
+
videoHeight: u16,
|
|
41
42
|
pressure: UnsignedFloat,
|
|
42
43
|
buttons: u32,
|
|
43
44
|
},
|
package/src/1_15/index.ts
CHANGED
package/src/1_15/options.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { MaybePromiseLike } from "@yume-chan/async";
|
|
2
2
|
import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
|
|
3
|
-
import type { AsyncExactReadable } from "@yume-chan/struct";
|
|
3
|
+
import type { AsyncExactReadable, ExactReadable } from "@yume-chan/struct";
|
|
4
4
|
|
|
5
5
|
import type {
|
|
6
6
|
ScrcpyControlMessageType,
|
|
@@ -75,7 +75,7 @@ export class ScrcpyOptions1_15 implements ScrcpyOptions<Init> {
|
|
|
75
75
|
|
|
76
76
|
async parseDeviceMessage(
|
|
77
77
|
id: number,
|
|
78
|
-
stream: AsyncExactReadable,
|
|
78
|
+
stream: ExactReadable | AsyncExactReadable,
|
|
79
79
|
): Promise<void> {
|
|
80
80
|
if (await this.#clipboard!.parse(id, stream)) {
|
|
81
81
|
return;
|
package/src/1_15_1.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ScrcpyOptions1_15 } from "./1_15/index.js";
|
|
2
|
+
|
|
3
|
+
export class ScrcpyOptions1_15_1 extends ScrcpyOptions1_15 {
|
|
4
|
+
constructor(init: ScrcpyOptions1_15.Init) {
|
|
5
|
+
super(init);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export namespace ScrcpyOptions1_15_1 {
|
|
10
|
+
export type Init = ScrcpyOptions1_15.Init;
|
|
11
|
+
}
|
package/src/1_16.ts
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { ScrcpyOptions1_15 } from "./1_15/index.js";
|
|
2
|
+
|
|
3
|
+
export class ScrcpyOptions1_16 extends ScrcpyOptions1_15 {
|
|
4
|
+
constructor(init: ScrcpyOptions1_15.Init) {
|
|
5
|
+
super(init);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export namespace ScrcpyOptions1_16 {
|
|
10
|
+
export type Init = ScrcpyOptions1_15.Init;
|
|
11
|
+
}
|
package/src/1_17/index.ts
CHANGED
package/src/1_17/options.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { MaybePromiseLike } from "@yume-chan/async";
|
|
2
2
|
import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
|
|
3
|
-
import type { AsyncExactReadable } from "@yume-chan/struct";
|
|
3
|
+
import type { AsyncExactReadable, ExactReadable } from "@yume-chan/struct";
|
|
4
4
|
|
|
5
5
|
import type {
|
|
6
6
|
ScrcpyControlMessageType,
|
|
@@ -8,6 +8,7 @@ import type {
|
|
|
8
8
|
ScrcpyEncoder,
|
|
9
9
|
ScrcpyMediaStreamPacket,
|
|
10
10
|
ScrcpyOptions,
|
|
11
|
+
ScrcpyOptionsListEncoders,
|
|
11
12
|
ScrcpyScrollController,
|
|
12
13
|
ScrcpyVideoStream,
|
|
13
14
|
} from "../base/index.js";
|
|
@@ -37,7 +38,9 @@ import {
|
|
|
37
38
|
setListEncoders,
|
|
38
39
|
} from "./impl/index.js";
|
|
39
40
|
|
|
40
|
-
export class ScrcpyOptions1_17
|
|
41
|
+
export class ScrcpyOptions1_17
|
|
42
|
+
implements ScrcpyOptions<Init>, ScrcpyOptionsListEncoders
|
|
43
|
+
{
|
|
41
44
|
static readonly Defaults = Defaults;
|
|
42
45
|
|
|
43
46
|
readonly value: Required<Init>;
|
|
@@ -87,7 +90,7 @@ export class ScrcpyOptions1_17 implements ScrcpyOptions<Init> {
|
|
|
87
90
|
|
|
88
91
|
async parseDeviceMessage(
|
|
89
92
|
id: number,
|
|
90
|
-
stream: AsyncExactReadable,
|
|
93
|
+
stream: ExactReadable | AsyncExactReadable,
|
|
91
94
|
): Promise<void> {
|
|
92
95
|
if (await this.#clipboard!.parse(id, stream)) {
|
|
93
96
|
return;
|
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
import type { StructInit } from "@yume-chan/struct";
|
|
2
|
-
import {
|
|
2
|
+
import { extend, u8 } from "@yume-chan/struct";
|
|
3
3
|
|
|
4
4
|
import type { AndroidKeyEventAction } from "../../android/index.js";
|
|
5
5
|
import type { ScrcpyBackOrScreenOnControlMessage } from "../../latest.js";
|
|
6
6
|
|
|
7
7
|
import { PrevImpl } from "./prev.js";
|
|
8
8
|
|
|
9
|
-
export const BackOrScreenOnControlMessage =
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
action: u8<AndroidKeyEventAction>(),
|
|
14
|
-
},
|
|
15
|
-
{ littleEndian: false },
|
|
16
|
-
))();
|
|
9
|
+
export const BackOrScreenOnControlMessage = extend(
|
|
10
|
+
PrevImpl.BackOrScreenOnControlMessage,
|
|
11
|
+
{ action: u8<AndroidKeyEventAction>() },
|
|
12
|
+
);
|
|
17
13
|
|
|
18
14
|
export type BackOrScreenOnControlMessage = StructInit<
|
|
19
15
|
typeof BackOrScreenOnControlMessage
|
package/src/1_18/index.ts
CHANGED
package/src/1_18/options.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { MaybePromiseLike } from "@yume-chan/async";
|
|
2
2
|
import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
|
|
3
|
-
import type { AsyncExactReadable } from "@yume-chan/struct";
|
|
3
|
+
import type { AsyncExactReadable, ExactReadable } from "@yume-chan/struct";
|
|
4
4
|
|
|
5
5
|
import type {
|
|
6
6
|
ScrcpyControlMessageType,
|
|
@@ -8,6 +8,7 @@ import type {
|
|
|
8
8
|
ScrcpyEncoder,
|
|
9
9
|
ScrcpyMediaStreamPacket,
|
|
10
10
|
ScrcpyOptions,
|
|
11
|
+
ScrcpyOptionsListEncoders,
|
|
11
12
|
ScrcpyScrollController,
|
|
12
13
|
ScrcpyVideoStream,
|
|
13
14
|
} from "../base/index.js";
|
|
@@ -37,7 +38,9 @@ import {
|
|
|
37
38
|
setListEncoders,
|
|
38
39
|
} from "./impl/index.js";
|
|
39
40
|
|
|
40
|
-
export class ScrcpyOptions1_18
|
|
41
|
+
export class ScrcpyOptions1_18
|
|
42
|
+
implements ScrcpyOptions<Init>, ScrcpyOptionsListEncoders
|
|
43
|
+
{
|
|
41
44
|
static readonly Defaults = Defaults;
|
|
42
45
|
|
|
43
46
|
readonly value: Required<Init>;
|
|
@@ -87,7 +90,7 @@ export class ScrcpyOptions1_18 implements ScrcpyOptions<Init> {
|
|
|
87
90
|
|
|
88
91
|
async parseDeviceMessage(
|
|
89
92
|
id: number,
|
|
90
|
-
stream: AsyncExactReadable,
|
|
93
|
+
stream: ExactReadable | AsyncExactReadable,
|
|
91
94
|
): Promise<void> {
|
|
92
95
|
if (await this.#clipboard!.parse(id, stream)) {
|
|
93
96
|
return;
|
package/src/1_19.ts
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { ScrcpyOptions1_18 } from "./1_18/index.js";
|
|
2
|
+
|
|
3
|
+
export class ScrcpyOptions1_19 extends ScrcpyOptions1_18 {
|
|
4
|
+
constructor(init: ScrcpyOptions1_18.Init) {
|
|
5
|
+
super(init);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export namespace ScrcpyOptions1_19 {
|
|
10
|
+
export type Init = ScrcpyOptions1_18.Init;
|
|
11
|
+
}
|
package/src/1_20.ts
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { ScrcpyOptions1_18 } from "./1_18/index.js";
|
|
2
|
+
|
|
3
|
+
export class ScrcpyOptions1_20 extends ScrcpyOptions1_18 {
|
|
4
|
+
constructor(init: ScrcpyOptions1_18.Init) {
|
|
5
|
+
super(init);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export namespace ScrcpyOptions1_20 {
|
|
10
|
+
export type Init = ScrcpyOptions1_18.Init;
|
|
11
|
+
}
|
package/src/1_21/index.ts
CHANGED
package/src/1_21/options.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { MaybePromiseLike } from "@yume-chan/async";
|
|
2
2
|
import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
|
|
3
|
-
import type { AsyncExactReadable } from "@yume-chan/struct";
|
|
3
|
+
import type { AsyncExactReadable, ExactReadable } from "@yume-chan/struct";
|
|
4
4
|
|
|
5
5
|
import type {
|
|
6
6
|
ScrcpyControlMessageType,
|
|
@@ -8,6 +8,7 @@ import type {
|
|
|
8
8
|
ScrcpyEncoder,
|
|
9
9
|
ScrcpyMediaStreamPacket,
|
|
10
10
|
ScrcpyOptions,
|
|
11
|
+
ScrcpyOptionsListEncoders,
|
|
11
12
|
ScrcpyScrollController,
|
|
12
13
|
ScrcpyVideoStream,
|
|
13
14
|
} from "../base/index.js";
|
|
@@ -36,7 +37,9 @@ import {
|
|
|
36
37
|
setListEncoders,
|
|
37
38
|
} from "./impl/index.js";
|
|
38
39
|
|
|
39
|
-
export class ScrcpyOptions1_21
|
|
40
|
+
export class ScrcpyOptions1_21
|
|
41
|
+
implements ScrcpyOptions<Init>, ScrcpyOptionsListEncoders
|
|
42
|
+
{
|
|
40
43
|
static readonly Defaults = Defaults;
|
|
41
44
|
|
|
42
45
|
readonly value: Required<Init>;
|
|
@@ -89,7 +92,7 @@ export class ScrcpyOptions1_21 implements ScrcpyOptions<Init> {
|
|
|
89
92
|
|
|
90
93
|
async parseDeviceMessage(
|
|
91
94
|
id: number,
|
|
92
|
-
stream: AsyncExactReadable,
|
|
95
|
+
stream: ExactReadable | AsyncExactReadable,
|
|
93
96
|
): Promise<void> {
|
|
94
97
|
if (await this.#clipboard?.parse(id, stream)) {
|
|
95
98
|
return;
|
package/src/1_22/impl/index.ts
CHANGED
|
@@ -3,6 +3,7 @@ export { Defaults } from "./defaults.js";
|
|
|
3
3
|
export type { Init } from "./init.js";
|
|
4
4
|
export { parseVideoStreamMetadata } from "./parse-video-stream-metadata.js";
|
|
5
5
|
export {
|
|
6
|
+
createScrollController,
|
|
6
7
|
InjectScrollControlMessage,
|
|
7
8
|
ScrollController,
|
|
8
9
|
} from "./scroll-controller.js";
|
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
import type { StructInit } from "@yume-chan/struct";
|
|
2
|
-
import {
|
|
2
|
+
import { extend, s32 } from "@yume-chan/struct";
|
|
3
3
|
|
|
4
|
+
import type { ScrcpyScrollController } from "../../base/index.js";
|
|
4
5
|
import type { ScrcpyInjectScrollControlMessage } from "../../latest.js";
|
|
5
6
|
|
|
6
7
|
import { PrevImpl } from "./prev.js";
|
|
7
8
|
|
|
8
|
-
export const InjectScrollControlMessage =
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
buttons: s32,
|
|
13
|
-
},
|
|
14
|
-
{ littleEndian: false },
|
|
15
|
-
))();
|
|
9
|
+
export const InjectScrollControlMessage = extend(
|
|
10
|
+
PrevImpl.InjectScrollControlMessage,
|
|
11
|
+
{ buttons: s32 },
|
|
12
|
+
);
|
|
16
13
|
|
|
17
14
|
export type InjectScrollControlMessage = StructInit<
|
|
18
15
|
typeof InjectScrollControlMessage
|
|
@@ -30,3 +27,7 @@ export class ScrollController extends PrevImpl.ScrollController {
|
|
|
30
27
|
return InjectScrollControlMessage.serialize(processed);
|
|
31
28
|
}
|
|
32
29
|
}
|
|
30
|
+
|
|
31
|
+
export function createScrollController(): ScrcpyScrollController {
|
|
32
|
+
return new ScrollController();
|
|
33
|
+
}
|
package/src/1_22/index.ts
CHANGED
package/src/1_22/options.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { MaybePromiseLike } from "@yume-chan/async";
|
|
2
2
|
import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
|
|
3
|
-
import type { AsyncExactReadable } from "@yume-chan/struct";
|
|
3
|
+
import type { AsyncExactReadable, ExactReadable } from "@yume-chan/struct";
|
|
4
4
|
|
|
5
5
|
import type {
|
|
6
6
|
ScrcpyControlMessageType,
|
|
@@ -8,6 +8,7 @@ import type {
|
|
|
8
8
|
ScrcpyEncoder,
|
|
9
9
|
ScrcpyMediaStreamPacket,
|
|
10
10
|
ScrcpyOptions,
|
|
11
|
+
ScrcpyOptionsListEncoders,
|
|
11
12
|
ScrcpyScrollController,
|
|
12
13
|
ScrcpyVideoStream,
|
|
13
14
|
} from "../base/index.js";
|
|
@@ -36,7 +37,9 @@ import {
|
|
|
36
37
|
setListEncoders,
|
|
37
38
|
} from "./impl/index.js";
|
|
38
39
|
|
|
39
|
-
export class ScrcpyOptions1_22
|
|
40
|
+
export class ScrcpyOptions1_22
|
|
41
|
+
implements ScrcpyOptions<Init>, ScrcpyOptionsListEncoders
|
|
42
|
+
{
|
|
40
43
|
static readonly Defaults = Defaults;
|
|
41
44
|
|
|
42
45
|
readonly value: Required<Init>;
|
|
@@ -89,7 +92,7 @@ export class ScrcpyOptions1_22 implements ScrcpyOptions<Init> {
|
|
|
89
92
|
|
|
90
93
|
async parseDeviceMessage(
|
|
91
94
|
id: number,
|
|
92
|
-
stream: AsyncExactReadable,
|
|
95
|
+
stream: ExactReadable | AsyncExactReadable,
|
|
93
96
|
): Promise<void> {
|
|
94
97
|
if (await this.#clipboard?.parse(id, stream)) {
|
|
95
98
|
return;
|
package/src/1_23/index.ts
CHANGED
package/src/1_23/options.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { MaybePromiseLike } from "@yume-chan/async";
|
|
2
2
|
import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
|
|
3
|
-
import type { AsyncExactReadable } from "@yume-chan/struct";
|
|
3
|
+
import type { AsyncExactReadable, ExactReadable } from "@yume-chan/struct";
|
|
4
4
|
|
|
5
5
|
import type {
|
|
6
6
|
ScrcpyControlMessageType,
|
|
@@ -8,6 +8,7 @@ import type {
|
|
|
8
8
|
ScrcpyEncoder,
|
|
9
9
|
ScrcpyMediaStreamPacket,
|
|
10
10
|
ScrcpyOptions,
|
|
11
|
+
ScrcpyOptionsListEncoders,
|
|
11
12
|
ScrcpyScrollController,
|
|
12
13
|
ScrcpyVideoStream,
|
|
13
14
|
} from "../base/index.js";
|
|
@@ -36,7 +37,9 @@ import {
|
|
|
36
37
|
setListEncoders,
|
|
37
38
|
} from "./impl/index.js";
|
|
38
39
|
|
|
39
|
-
export class ScrcpyOptions1_23
|
|
40
|
+
export class ScrcpyOptions1_23
|
|
41
|
+
implements ScrcpyOptions<Init>, ScrcpyOptionsListEncoders
|
|
42
|
+
{
|
|
40
43
|
static readonly Defaults = Defaults;
|
|
41
44
|
|
|
42
45
|
readonly value: Required<Init>;
|
|
@@ -89,7 +92,7 @@ export class ScrcpyOptions1_23 implements ScrcpyOptions<Init> {
|
|
|
89
92
|
|
|
90
93
|
async parseDeviceMessage(
|
|
91
94
|
id: number,
|
|
92
|
-
stream: AsyncExactReadable,
|
|
95
|
+
stream: ExactReadable | AsyncExactReadable,
|
|
93
96
|
): Promise<void> {
|
|
94
97
|
if (await this.#clipboard?.parse(id, stream)) {
|
|
95
98
|
return;
|
package/src/1_24/index.ts
CHANGED
package/src/1_24/options.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { MaybePromiseLike } from "@yume-chan/async";
|
|
2
2
|
import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
|
|
3
|
-
import type { AsyncExactReadable } from "@yume-chan/struct";
|
|
3
|
+
import type { AsyncExactReadable, ExactReadable } from "@yume-chan/struct";
|
|
4
4
|
|
|
5
5
|
import type {
|
|
6
6
|
ScrcpyControlMessageType,
|
|
@@ -8,6 +8,7 @@ import type {
|
|
|
8
8
|
ScrcpyEncoder,
|
|
9
9
|
ScrcpyMediaStreamPacket,
|
|
10
10
|
ScrcpyOptions,
|
|
11
|
+
ScrcpyOptionsListEncoders,
|
|
11
12
|
ScrcpyScrollController,
|
|
12
13
|
ScrcpyVideoStream,
|
|
13
14
|
} from "../base/index.js";
|
|
@@ -36,7 +37,9 @@ import {
|
|
|
36
37
|
setListEncoders,
|
|
37
38
|
} from "./impl/index.js";
|
|
38
39
|
|
|
39
|
-
export class ScrcpyOptions1_24
|
|
40
|
+
export class ScrcpyOptions1_24
|
|
41
|
+
implements ScrcpyOptions<Init>, ScrcpyOptionsListEncoders
|
|
42
|
+
{
|
|
40
43
|
static readonly Defaults = Defaults;
|
|
41
44
|
|
|
42
45
|
readonly value: Required<Init>;
|
|
@@ -89,7 +92,7 @@ export class ScrcpyOptions1_24 implements ScrcpyOptions<Init> {
|
|
|
89
92
|
|
|
90
93
|
async parseDeviceMessage(
|
|
91
94
|
id: number,
|
|
92
|
-
stream: AsyncExactReadable,
|
|
95
|
+
stream: ExactReadable | AsyncExactReadable,
|
|
93
96
|
): Promise<void> {
|
|
94
97
|
if (await this.#clipboard?.parse(id, stream)) {
|
|
95
98
|
return;
|
package/src/1_25/impl/index.ts
CHANGED
|
@@ -1,27 +1,28 @@
|
|
|
1
1
|
import { getInt16, setInt16 } from "@yume-chan/no-data-view";
|
|
2
2
|
import type { Field, StructInit } from "@yume-chan/struct";
|
|
3
|
-
import {
|
|
3
|
+
import { field, struct, u16, u32, u8 } from "@yume-chan/struct";
|
|
4
4
|
|
|
5
|
-
import { ScrcpyControlMessageType } from "../../base/index.js";
|
|
6
5
|
import type { ScrcpyScrollController } from "../../base/index.js";
|
|
6
|
+
import { ScrcpyControlMessageType } from "../../base/index.js";
|
|
7
7
|
import type { ScrcpyInjectScrollControlMessage } from "../../latest.js";
|
|
8
8
|
import { clamp } from "../../utils/index.js";
|
|
9
9
|
|
|
10
|
-
export const SignedFloat: Field<number, never, never> =
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
export const SignedFloat: Field<number, never, never> = field(
|
|
11
|
+
2,
|
|
12
|
+
"byob",
|
|
13
|
+
(value, { buffer, index, littleEndian }) => {
|
|
13
14
|
// https://github.com/Genymobile/scrcpy/blob/1f138aef41de651668043b32c4effc2d4adbfc44/app/src/util/binary.h#L51
|
|
14
15
|
value = clamp(value, -1, 1);
|
|
15
16
|
value = value === 1 ? 0x7fff : value * 0x8000;
|
|
16
17
|
setInt16(buffer, index, value, littleEndian);
|
|
17
18
|
},
|
|
18
|
-
|
|
19
|
+
function* (then, reader, { littleEndian }) {
|
|
19
20
|
const data = yield* then(reader.readExactly(2));
|
|
20
21
|
const value = getInt16(data, 0, littleEndian);
|
|
21
22
|
// https://github.com/Genymobile/scrcpy/blob/1f138aef41de651668043b32c4effc2d4adbfc44/server/src/main/java/com/genymobile/scrcpy/Binary.java#L34
|
|
22
23
|
return value === 0x7fff ? 1 : value / 0x8000;
|
|
23
|
-
}
|
|
24
|
-
|
|
24
|
+
},
|
|
25
|
+
);
|
|
25
26
|
|
|
26
27
|
export const InjectScrollControlMessage = /* #__PURE__ */ (() =>
|
|
27
28
|
struct(
|
|
@@ -29,8 +30,8 @@ export const InjectScrollControlMessage = /* #__PURE__ */ (() =>
|
|
|
29
30
|
type: u8(ScrcpyControlMessageType.InjectScroll),
|
|
30
31
|
pointerX: u32,
|
|
31
32
|
pointerY: u32,
|
|
32
|
-
|
|
33
|
-
|
|
33
|
+
videoWidth: u16,
|
|
34
|
+
videoHeight: u16,
|
|
34
35
|
scrollX: SignedFloat,
|
|
35
36
|
scrollY: SignedFloat,
|
|
36
37
|
buttons: u32,
|
|
@@ -49,3 +50,7 @@ export class ScrollController implements ScrcpyScrollController {
|
|
|
49
50
|
return InjectScrollControlMessage.serialize(message);
|
|
50
51
|
}
|
|
51
52
|
}
|
|
53
|
+
|
|
54
|
+
export function createScrollController(): ScrcpyScrollController {
|
|
55
|
+
return new ScrollController();
|
|
56
|
+
}
|
package/src/1_25/index.ts
CHANGED
package/src/1_25/options.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { MaybePromiseLike } from "@yume-chan/async";
|
|
2
2
|
import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
|
|
3
|
-
import type { AsyncExactReadable } from "@yume-chan/struct";
|
|
3
|
+
import type { AsyncExactReadable, ExactReadable } from "@yume-chan/struct";
|
|
4
4
|
|
|
5
5
|
import type {
|
|
6
6
|
ScrcpyControlMessageType,
|
|
@@ -8,6 +8,7 @@ import type {
|
|
|
8
8
|
ScrcpyEncoder,
|
|
9
9
|
ScrcpyMediaStreamPacket,
|
|
10
10
|
ScrcpyOptions,
|
|
11
|
+
ScrcpyOptionsListEncoders,
|
|
11
12
|
ScrcpyScrollController,
|
|
12
13
|
ScrcpyVideoStream,
|
|
13
14
|
} from "../base/index.js";
|
|
@@ -36,7 +37,9 @@ import {
|
|
|
36
37
|
setListEncoders,
|
|
37
38
|
} from "./impl/index.js";
|
|
38
39
|
|
|
39
|
-
export class ScrcpyOptions1_25
|
|
40
|
+
export class ScrcpyOptions1_25
|
|
41
|
+
implements ScrcpyOptions<Init>, ScrcpyOptionsListEncoders
|
|
42
|
+
{
|
|
40
43
|
static readonly Defaults = Defaults;
|
|
41
44
|
|
|
42
45
|
readonly value: Required<Init>;
|
|
@@ -89,7 +92,7 @@ export class ScrcpyOptions1_25 implements ScrcpyOptions<Init> {
|
|
|
89
92
|
|
|
90
93
|
async parseDeviceMessage(
|
|
91
94
|
id: number,
|
|
92
|
-
stream: AsyncExactReadable,
|
|
95
|
+
stream: ExactReadable | AsyncExactReadable,
|
|
93
96
|
): Promise<void> {
|
|
94
97
|
if (await this.#clipboard?.parse(id, stream)) {
|
|
95
98
|
return;
|
package/src/2_0/impl/defaults.ts
CHANGED
|
@@ -1,23 +1,22 @@
|
|
|
1
1
|
import { omit } from "../../utils/index.js";
|
|
2
2
|
|
|
3
3
|
import type { Init } from "./init.js";
|
|
4
|
-
import { InstanceId } from "./init.js";
|
|
5
4
|
import { PrevImpl } from "./prev.js";
|
|
6
5
|
|
|
7
6
|
export const Defaults = /* #__PURE__ */ (() =>
|
|
8
7
|
({
|
|
9
8
|
...omit(PrevImpl.Defaults, "bitRate", "codecOptions", "encoderName"),
|
|
10
|
-
scid:
|
|
9
|
+
scid: undefined,
|
|
11
10
|
|
|
12
11
|
videoCodec: "h264",
|
|
13
12
|
videoBitRate: 8000000,
|
|
14
|
-
videoCodecOptions:
|
|
13
|
+
videoCodecOptions: undefined,
|
|
15
14
|
videoEncoder: undefined,
|
|
16
15
|
|
|
17
16
|
audio: true,
|
|
18
17
|
audioCodec: "opus",
|
|
19
18
|
audioBitRate: 128000,
|
|
20
|
-
audioCodecOptions:
|
|
19
|
+
audioCodecOptions: undefined,
|
|
21
20
|
audioEncoder: undefined,
|
|
22
21
|
|
|
23
22
|
listEncoders: false,
|
package/src/2_0/impl/init.ts
CHANGED
|
@@ -26,17 +26,17 @@ export class InstanceId implements ScrcpyOptionValue {
|
|
|
26
26
|
|
|
27
27
|
export interface Init
|
|
28
28
|
extends Omit<PrevImpl.Init, "bitRate" | "codecOptions" | "encoderName"> {
|
|
29
|
-
scid?: InstanceId;
|
|
29
|
+
scid?: InstanceId | string | undefined;
|
|
30
30
|
|
|
31
31
|
videoCodec?: "h264" | "h265" | "av1";
|
|
32
32
|
videoBitRate?: number;
|
|
33
|
-
videoCodecOptions?: PrevImpl.CodecOptions;
|
|
33
|
+
videoCodecOptions?: PrevImpl.CodecOptions | string | undefined;
|
|
34
34
|
videoEncoder?: string | undefined;
|
|
35
35
|
|
|
36
36
|
audio?: boolean;
|
|
37
37
|
audioCodec?: "raw" | "opus" | "aac";
|
|
38
38
|
audioBitRate?: number;
|
|
39
|
-
audioCodecOptions?: PrevImpl.CodecOptions;
|
|
39
|
+
audioCodecOptions?: PrevImpl.CodecOptions | string | undefined;
|
|
40
40
|
audioEncoder?: string | undefined;
|
|
41
41
|
|
|
42
42
|
listEncoders?: boolean;
|
|
@@ -15,8 +15,8 @@ export const InjectTouchControlMessage = /* #__PURE__ */ (() =>
|
|
|
15
15
|
pointerId: u64,
|
|
16
16
|
pointerX: u32,
|
|
17
17
|
pointerY: u32,
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
videoWidth: u16,
|
|
19
|
+
videoHeight: u16,
|
|
20
20
|
pressure: PrevImpl.UnsignedFloat,
|
|
21
21
|
actionButton: u32,
|
|
22
22
|
buttons: u32,
|