Skip to main content

Input — input

Something plugged into the house that Juno cannot talk to: a games console, a Blu-ray player, a laptop on the end of an HDMI lead, a camera feed.

It is a source with no control path, and that is the whole of it. There is nothing to send it and nothing to ask it — so this contract has no commands, deliberately. A room can be switched to one of these, because switching is the television's job and the pathfinder's, and neither needs the source to cooperate.

The alternative was media_player with its capabilities turned off, and it is the wrong shape: play, pause and stop are ungated there, so every console in the house would have offered a Play button that does nothing. A control that lies about what it reaches is worse than no control — see has_deep_link on media_player for the same argument about a different button.

What it does carry is kind: what is actually on the end of the cable. A screen draws a games console differently from a Blu-ray player, and nobody wants to read the word "Input" on a tile. It is a free string rather than an enumeration because the point of this contract is the long tail — the driver that declares it offers a list, and a house with something nobody thought of types it in.

Capabilities​

Declared in the driver manifest under [[proxy]] capabilities. Anything not declared takes the default below.

CapabilityTypeDefaultMeaning
is_audio_sourcebooltrueThe sound can start here.
is_video_sourcebooltrueThe picture can start here.

Notifications​

kind_changed​

What is plugged in changed — somebody swapped the console for a laptop.

ParameterTypeNotes
kindstring

online_changed​

ParameterTypeNotes
onlinebool

State​

Last-known values core keeps for a binding of this proxy.

KeyTypeMeaning
kindstringWhat is on the end of the cable: console, disc, computer.
onlinebool