ADR-0003: LG webOS command routing
Status |
Accepted |
|---|---|
Area |
Device backends |
Context
webOS has no ssap:// URIs for cursor navigation, so the D-pad, OK, Home/Back/Menu/Info/Exit and digits cannot be issued the same way as the other commands. The pointer input socket is the only way to send those, which forces command routing to split across two sockets.
Decision
D-pad, OK, Home/Back/Menu/Info/Exit and digits go over the pointer input socket (type:button\nname:…), because webOS has no ssap:// URIs for cursor navigation — the pointer socket is the only way.
Volume, channel, mute, media transport and power-off go over ssap:// requests on the main socket (more reliable, and what LG’s own apps use).
Mute is tracked locally (ssap://audio/setMute needs an explicit boolean, and webOS exposes no toggle), flipping a muted flag on each press.
KeyCommand::Source is Unsupported on LG for v1 — input switching needs an input-list round-trip; the trait hook is left, no silent stub.
Consequences
-
Command routing is split across two sockets: the pointer input socket for cursor navigation and the main socket for
ssap://requests. -
Using
ssap://on the main socket for volume, channel, mute, media transport and power-off is more reliable and matches what LG’s own apps use. -
Because
ssap://audio/setMuteneeds an explicit boolean and webOS exposes no toggle, mute state must be tracked locally via amutedflag flipped on each press. -
KeyCommand::SourceremainsUnsupportedon LG for v1; input switching needs an input-list round-trip, and the trait hook is left in place rather than providing a silent stub.