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

Unverified Commit b3a142cb authored by Simon Chan's avatar Simon Chan
Browse files

refactor(scrcpy): improve tree-shaking

parent c1dc8023
Loading
Loading
Loading
Loading
+187 −173
Original line number Diff line number Diff line
import type { StructInit } from "@yume-chan/struct";
import { struct, u32, u8 } from "@yume-chan/struct";

export enum AndroidKeyEventAction {
    Down = 0,
    Up = 1,
}
export const AndroidKeyEventAction = {
    Down: 0,
    Up: 1,
} as const;

export type AndroidKeyEventAction =
    (typeof AndroidKeyEventAction)[keyof typeof AndroidKeyEventAction];

// https://cs.android.com/android/platform/superproject/+/master:frameworks/base/core/java/android/view/KeyEvent.java;l=993;drc=95c1165bb895dd844e1793460710f7163dd330a3
export enum AndroidKeyEventMeta {
    None = 0,
    Alt = 0x02,
    AltLeft = 0x10,
    AltRight = 0x20,
    Shift = 0x01,
    ShiftLeft = 0x40,
    ShiftRight = 0x80,
    Ctrl = 0x1000,
    CtrlLeft = 0x2000,
    CtrlRight = 0x4000,
    Meta = 0x10000,
    MetaLeft = 0x20000,
    MetaRight = 0x40000,
    CapsLock = 0x100000,
    NumLock = 0x200000,
    ScrollLock = 0x400000,
}
export const AndroidKeyEventMeta = {
    None: 0,
    Alt: 0x02,
    AltLeft: 0x10,
    AltRight: 0x20,
    Shift: 0x01,
    ShiftLeft: 0x40,
    ShiftRight: 0x80,
    Ctrl: 0x1000,
    CtrlLeft: 0x2000,
    CtrlRight: 0x4000,
    Meta: 0x10000,
    MetaLeft: 0x20000,
    MetaRight: 0x40000,
    CapsLock: 0x100000,
    NumLock: 0x200000,
    ScrollLock: 0x400000,
} as const;

export type AndroidKeyEventMeta =
    (typeof AndroidKeyEventMeta)[keyof typeof AndroidKeyEventMeta];

// https://cs.android.com/android/platform/superproject/+/master:frameworks/base/core/java/android/view/KeyEvent.java;l=97;drc=95c1165bb895dd844e1793460710f7163dd330a3
// Most names follow Web API `KeyboardEvent.code`,
// Android-only (not exist in HID keyboard standard) keys are prefixed by `Android`.
export enum AndroidKeyCode {
    AndroidHome = 3,
    AndroidBack = 4,
    AndroidCall,
    AndroidEndCall,

    Digit0,
    Digit1,
    Digit2,
    Digit3,
    Digit4,
    Digit5,
    Digit6,
    Digit7,
    Digit8,
    Digit9,
export const AndroidKeyCode = {
    AndroidHome: 3,
    AndroidBack: 4,
    AndroidCall: 5,
    AndroidEndCall: 6,

    Digit0: 7,
    Digit1: 8,
    Digit2: 9,
    Digit3: 10,
    Digit4: 11,
    Digit5: 12,
    Digit6: 13,
    Digit7: 14,
    Digit8: 15,
    Digit9: 16,
    /**
     * '*' key.
     */
    Star, // Name not verified
    Star: 17, // Name not verified
    /**
     * '#' key.
     */
    Pound, // Name not verified
    Pound: 18, // Name not verified

    /**
     * Directional Pad Up key.
     */
    ArrowUp,
    ArrowUp: 19,
    /**
     * Directional Pad Down key.
     */
    ArrowDown,
    ArrowDown: 20,
    /**
     * Directional Pad Left key.
     */
    ArrowLeft,
    ArrowLeft: 21,
    /**
     * Directional Pad Right key.
     */
    ArrowRight,
    ArrowRight: 22,
    /**
     * Directional Pad Center key.
     */
    AndroidDPadCenter,

    VolumeUp, // Name not verified
    VolumeDown, // Name not verified
    Power, // Name not verified
    AndroidCamera,
    Clear, // Name not verified

    KeyA,
    KeyB,
    KeyC,
    KeyD,
    KeyE,
    KeyF,
    KeyG,
    KeyH,
    KeyI,
    KeyJ,
    KeyK,
    KeyL,
    KeyM,
    KeyN,
    KeyO,
    KeyP,
    KeyQ,
    KeyR,
    KeyS,
    KeyT,
    KeyU,
    KeyV,
    KeyW,
    KeyX,
    KeyY,
    KeyZ,
    Comma,
    Period,
    AltLeft,
    AltRight,
    ShiftLeft,
    ShiftRight,
    Tab,
    Space,
    AndroidSymbol,
    AndroidExplorer,
    AndroidEnvelope,
    Enter,
    Backspace,
    Backquote,
    Minus,
    Equal,
    BracketLeft,
    BracketRight,
    Backslash,
    Semicolon,
    Quote,
    Slash,
    At, // Name not verified

    AndroidNum,
    AndroidHeadsetHook,
    AndroidDPadCenter: 23,

    VolumeUp: 24, // Name not verified
    VolumeDown: 25, // Name not verified
    Power: 26, // Name not verified
    AndroidCamera: 27,
    Clear: 28, // Name not verified

    KeyA: 29,
    KeyB: 30,
    KeyC: 31,
    KeyD: 32,
    KeyE: 33,
    KeyF: 34,
    KeyG: 35,
    KeyH: 36,
    KeyI: 37,
    KeyJ: 38,
    KeyK: 39,
    KeyL: 40,
    KeyM: 41,
    KeyN: 42,
    KeyO: 43,
    KeyP: 44,
    KeyQ: 45,
    KeyR: 46,
    KeyS: 47,
    KeyT: 48,
    KeyU: 49,
    KeyV: 50,
    KeyW: 51,
    KeyX: 52,
    KeyY: 53,
    KeyZ: 54,
    Comma: 55,
    Period: 56,
    AltLeft: 57,
    AltRight: 58,
    ShiftLeft: 59,
    ShiftRight: 60,
    Tab: 61,
    Space: 62,
    AndroidSymbol: 63,
    AndroidExplorer: 64,
    AndroidEnvelope: 65,
    Enter: 66,
    Backspace: 67,
    Backquote: 68,
    Minus: 69,
    Equal: 70,
    BracketLeft: 71,
    BracketRight: 72,
    Backslash: 73,
    Semicolon: 74,
    Quote: 75,
    Slash: 76,
    At: 77, // Name not verified

    AndroidNum: 78,
    AndroidHeadsetHook: 79,
    /**
     * Camera Focus key。
     */
    AndroidFocus,

    Plus, // Name not verified
    ContextMenu,
    AndroidNotification,
    AndroidSearch,

    PageUp = 92,
    PageDown,

    Escape = 111,
    Delete,
    ControlLeft,
    ControlRight,
    CapsLock,
    ScrollLock,
    MetaLeft,
    MetaRight,
    AndroidFunction,
    PrintScreen,
    Pause,

    Home,
    End,
    Insert,
    AndroidForward,

    F1 = 131,
    F2,
    F3,
    F4,
    F5,
    F6,
    F7,
    F8,
    F9,
    F10,
    F11,
    F12,

    NumLock,
    Numpad0,
    Numpad1,
    Numpad2,
    Numpad3,
    Numpad4,
    Numpad5,
    Numpad6,
    Numpad7,
    Numpad8,
    Numpad9,
    NumpadDivide,
    NumpadMultiply,
    NumpadSubtract,
    NumpadAdd,
    NumpadDecimal,
    NumpadComma, // Name not verified
    NumpadEnter,
    NumpadEquals, // Name not verified
    NumpadLeftParen, // Name not verified
    NumpadRightParen, // Name not verified

    VolumeMute = 164, // Name not verified
    AndroidAppSwitch = 187,

    AndroidCut = 277,
    AndroidCopy,
    AndroidPaste,
}
    AndroidFocus: 80,

    Plus: 81, // Name not verified
    ContextMenu: 82,
    AndroidNotification: 83,
    AndroidSearch: 84,

    PageUp: 92,
    PageDown: 93,

    Escape: 111,
    Delete: 112,
    ControlLeft: 113,
    ControlRight: 114,
    CapsLock: 115,
    ScrollLock: 116,
    MetaLeft: 117,
    MetaRight: 118,
    AndroidFunction: 119,
    PrintScreen: 120,
    Pause: 121,

    Home: 122,
    End: 123,
    Insert: 124,
    AndroidForward: 125,

    F1: 131,
    F2: 132,
    F3: 133,
    F4: 134,
    F5: 135,
    F6: 136,
    F7: 137,
    F8: 138,
    F9: 139,
    F10: 140,
    F11: 141,
    F12: 142,

    NumLock: 143,
    Numpad0: 144,
    Numpad1: 145,
    Numpad2: 146,
    Numpad3: 147,
    Numpad4: 148,
    Numpad5: 149,
    Numpad6: 150,
    Numpad7: 151,
    Numpad8: 152,
    Numpad9: 153,
    NumpadDivide: 154,
    NumpadMultiply: 155,
    NumpadSubtract: 156,
    NumpadAdd: 157,
    NumpadDecimal: 158,
    NumpadComma: 159, // Name not verified
    NumpadEnter: 160,
    NumpadEquals: 161, // Name not verified
    NumpadLeftParen: 162, // Name not verified
    NumpadRightParen: 163, // Name not verified

    VolumeMute: 164, // Name not verified
    AndroidAppSwitch: 187, // Name not verified

    AndroidCut: 277,
    AndroidCopy: 278,
    AndroidPaste: 279,
} as const;

export type AndroidKeyCode =
    (typeof AndroidKeyCode)[keyof typeof AndroidKeyCode];

export const AndroidKeyNames = /* #__PURE__ */ (() =>
    Object.fromEntries(
        Object.entries(AndroidKeyCode).map(([k, v]) => [v, k]),
    ) as { [k in AndroidKeyCode]: string })();

export const ScrcpyInjectKeyCodeControlMessage = struct(
    {
+0 −1
Original line number Diff line number Diff line
@@ -5,7 +5,6 @@ import type { MaybePromiseLike } from "./utils.js";
export class ExactReadableEndedError extends Error {
    constructor() {
        super("ExactReadable ended");
        Object.setPrototypeOf(this, new.target.prototype);
    }
}

+0 −1
Original line number Diff line number Diff line
@@ -35,7 +35,6 @@ export type StructValue<
export class StructDeserializeError extends Error {
    constructor(message: string) {
        super(message);
        Object.setPrototypeOf(this, new.target.prototype);
    }
}