{"schema_version": 1, "session_id": "c42786db88aa44cabb4f57312d8b010e", "running": false, "error": null, "display": ":97", "resolution": {"width": 1280, "height": 720}, "seq": 10, "oldest_seq": 1, "truncated": false, "last_receipt_at_ms": 1793583589427.516, "clients": [], "state": {"keys": [], "mouse": {"x": 0, "y": 0, "dx": 0, "dy": 0, "buttons": [], "wheel_x": 0, "wheel_y": 0}, "pad": {"buttons": [], "axes": {"left_x": 0, "left_y": 0, "right_x": 0, "right_y": 0}, "axis_bytes": {"left_x": 128, "left_y": 128, "right_x": 128, "right_y": 128}, "triggers": {"L2": 0, "R2": 0}, "unmapped_keys": [], "emulator_shortcuts": []}, "event_count": 0, "focused": false}, "events": [{"kind": "receiver_ready", "seq": 1, "session_id": "c42786db88aa44cabb4f57312d8b010e", "source": "orbit", "server_time_ms": 1793583468938.3997}, {"kind": "mouse_move", "host_seq": 1, "host_time_ms": 1793583468938.3213, "x": 640, "y": 360, "dx": 0, "dy": 0, "seq": 2, "session_id": "c42786db88aa44cabb4f57312d8b010e", "source": "linux-sdl-receiver", "server_time_ms": 1793583468939.0894}, {"kind": "focus", "host_seq": 2, "host_time_ms": 1793583468938.3628, "focused": true, "seq": 3, "session_id": "c42786db88aa44cabb4f57312d8b010e", "source": "linux-sdl-receiver", "server_time_ms": 1793583468939.105}, {"kind": "key_down", "host_seq": 3, "host_time_ms": 1793583513066.174, "key": "j", "keycode": 106, "scancode": 13, "repeat": false, "unicode": "j", "seq": 4, "session_id": "c42786db88aa44cabb4f57312d8b010e", "source": "linux-sdl-receiver", "server_time_ms": 1793583513066.4856}, {"kind": "key_up", "host_seq": 4, "host_time_ms": 1793583513129.8909, "key": "j", "keycode": 106, "scancode": 13, "repeat": false, "unicode": "j", "seq": 5, "session_id": "c42786db88aa44cabb4f57312d8b010e", "source": "linux-sdl-receiver", "server_time_ms": 1793583513130.2207}, {"kind": "key_down", "host_seq": 5, "host_time_ms": 1793583538150.159, "key": "j", "keycode": 106, "scancode": 13, "repeat": false, "unicode": "j", "seq": 6, "session_id": "c42786db88aa44cabb4f57312d8b010e", "source": "linux-sdl-receiver", "server_time_ms": 1793583538150.3967}, {"kind": "key_up", "host_seq": 6, "host_time_ms": 1793583538405.7192, "key": "j", "keycode": 106, "scancode": 13, "repeat": false, "unicode": "j", "seq": 7, "session_id": "c42786db88aa44cabb4f57312d8b010e", "source": "linux-sdl-receiver", "server_time_ms": 1793583538406.006}, {"kind": "key_down", "host_seq": 7, "host_time_ms": 1793583551563.0825, "key": "j", "keycode": 106, "scancode": 13, "repeat": false, "unicode": "j", "seq": 8, "session_id": "c42786db88aa44cabb4f57312d8b010e", "source": "linux-sdl-receiver", "server_time_ms": 1793583551563.2922}, {"kind": "key_up", "host_seq": 8, "host_time_ms": 1793583551578.7039, "key": "j", "keycode": 106, "scancode": 13, "repeat": false, "unicode": "j", "seq": 9, "session_id": "c42786db88aa44cabb4f57312d8b010e", "source": "linux-sdl-receiver", "server_time_ms": 1793583551578.974}, {"kind": "session_stopped", "seq": 10, "session_id": "c42786db88aa44cabb4f57312d8b010e", "source": "orbit", "server_time_ms": 1793583590029.6355}], "scope": "Host SDL keyboard/mouse receipt on the isolated lab display. Pad values are inferred from default KytyPS5 mappings; not guest acknowledgement.", "exported_at": "2026-11-02T02:51:57.829229+00:00", "mapping": {"schema_version": 1, "start": {"method": "POST", "path": "/api/controller/start"}, "bootstrap": "/api/bootstrap", "token_header": "X-Orbit-Token", "stream": "/api/controller/stream?token=TOKEN&client=Mac-client", "transport": "Binary RFB over WebSocket; same noVNC/VNC transport as /api/stream.", "telemetry": "/api/controller?since=SEQUENCE&limit=80", "capture": "/api/controller/capture", "release": {"method": "POST", "path": "/api/controller/release"}, "stop": {"method": "POST", "path": "/api/controller/stop"}, "guide": "/api/controller/guide", "button_keys": {"j": "Cross", "l": "Circle", "k": "Square", "i": "Triangle", "q": "L1", "e": "R1", "z": "L2", "c": "R2", "left shift": "L3", "right shift": "L3", "left ctrl": "R3", "right ctrl": "R3", "return": "Options", "keypad enter": "Options", "up": "Up", "down": "Down", "left": "Left", "right": "Right", "tab": "TouchPad", "backspace": "TouchPad"}, "axis_keys": {"left_x": ["a", "d"], "left_y": ["w", "s"], "right_x": ["f", "h"], "right_y": ["t", "g"]}, "analog_support": "Basic RFB carries keyboard and absolute pointer events, not native gamepad axes. Stick values here are digital mappings (-1, 0, +1).", "example": {"client_input": "Space", "transmitted_key": "j", "keysym": 106, "code": "KeyJ", "expected_button": "Cross", "expected_release": "j key_up"}, "notes": ["WebRTC also supports the isolated lab; evidence still comes from the Linux SDL receiver.", "Mouse buttons and Space are unmapped by the KytyPS5 default keyboard map.", "Raw mouse coordinates/deltas are observed, not interpreted as analog camera movement.", "All lab clients share one test display. Native clients may omit Origin; browser clients use the server origin.", "A running game is not required and the lab does not inject input into it."]}, "emulator_build": "KytyPS5-2026-11-01-893b035"}