Skip to content
This repository was archived by the owner on Feb 1, 2026. It is now read-only.
XADE edited this page Jan 30, 2026 · 2 revisions

1. Scope

  • This is a cross-platform remote control application, implemented using TypeScript.

  • Preferably, a single server is responsible for:

    • Serving the frontend.
    • Receiving and injecting remote input events.
  • Intended for LAN usage only.

  • No system-level dependencies may be assumed to exist.


2. Core Input Functionality (Priority)

These must be implemented and verified before UI polish or configuration UX.

  • Remote cursor movement.

  • Remote mouse clicks:

    • Left click
    • Right click
  • Remote scrolling.

  • Remote keyboard input using the client device’s system keyboard.


3. Settings Interface (/settings)

3.1 Settings Page

  • Browser-accessible /settings route.

  • Displays:

    • Editable IP address.
    • Editable port.
  • Default values shown on first launch.

  • User can modify and save values.


3.2 Connection Access Information

  • Displays:

    • Clickable link: <LAN_IP>:<PORT>/trackpad
    • QR code encoding the same URL.
  • On save:

    • The link is regenerated and redirected.
    • The QR code is regenerated.

4. Trackpad Page Layout (/trackpad)

Layout order (top → bottom):

  1. Navigation bar (Trackpad / Settings)
  2. Trackpad area
  3. Control keys + extra keys
  4. Keyboard

5. Trackpad Area

  • Cursor Mode:

    • Acts as a standard trackpad.
  • Scroll Mode:

    • One-finger scrolling in any direction.

6. Control Keys Section

6.1 Controls

  • Modifier control with states:

    • Hold
    • Lock
    • Release

    Intended for key combinations (e.g. Ctrl, Shift, Ctrl+Shift+V).

  • Copy

  • Paste

    Optimized for one-finger usage.

  • Mode toggle (Cursor / Scroll)

  • Right click


7. Extra Keys Section

  • Keys commonly missing from mobile keyboards.

  • Includes (but is not limited to):

    • Backspace
    • Delete
    • Windows / Meta
    • Ctrl
    • Shift
    • Alt
    • Tab
    • Fn
    • Media keys
    • Arrow keys

8. Keyboard Input

  • Uses the client device’s system keyboard.
  • No custom keyboard UI is implemented.
  • Keyboard input is sent directly to the server.

Visibility (If Possible)

  • If supported by the platform:

    • The keyboard should remain visible.
    • Input should be sent directly to the server without extra steps.
  • This behavior is conditional and not guaranteed.


9. PWA Support (Optional)

Applicable only if a stable local address can be provided for the server.

  • The web application is installable as a PWA.

  • Once installed, the user should not need to:

    • Re-scan a QR code.
    • Manually revisit the URL for regular use.

10. Packaging & Distribution

10.1 Desktop Packaging (Optional Paths)

  • The application may be packaged using:

    • Tauri, if achievable without deep Rust knowledge.
    • Otherwise, Electron.

10.2 Platform Distribution

  • Linux:

    • Distributed only as Flatpak.
  • Other desktop platforms:

    • Distributed as standalone executables.

11. Future Expansion

11.1 Gamepad

  • Remote gamepad support.
  • Multiple simultaneous connections.

11.2 OCR

  • Handwritten input recognition.