Files
lan-mouse/DOC.md
Ferdinand Schober 5c60e2eb58 some documentation
2023-01-03 22:48:50 +01:00

1.5 KiB

General Software Architecture

Events

Each instance of lan-mouse can emit and receive events, where an event is either a mouse or keyboard event for now.

The general Architecture is shown in the following flow chart:

graph TD
    A[Wayland Backend] -->|WaylandEvent| D{Input}
    B[X11 Backend] -->|X11Event| D{Input}
    C[Windows Backend] -->|WindowsEvent| D{Input}
    D -->|Abstract Event| E[Emitter]
    E -->|Udp Event| F[Receiver]
    F -->|Abstract Event| G{Dispatcher}
    G -->|Wayland Event| H[Wayland Backend]
    G -->|X11 Event| I[X11 Backend]
    G -->|Windows Event| J[Windows Backend]

Input

The input component is responsible for translating inputs from a given backend to a standardized format and passing them to the event emitter.

Emitter

The event emitter serializes events and sends them over the network to the correct client.

Receiver

The receiver receives events over the network and deserializes them into the standardized event format.

Dispatcher

The dispatcher component takes events from the event receiver and passes them to the correct backend corresponding to the type of client.

Requests

// TODO this currently works differently

Aside from events, requests can be sent via a simple protocol. For this, a simple tcp server is listening on the same port as the udp event receiver and accepts requests for connecting to a device or to request the keymap of a device.

sequenceDiagram
    Alice->>+Bob: Request Connection (secret)
    Bob-->>-Alice: Ack (Keyboard Layout)