kvm hid
The kvm hid command manages HID auto-connect, the background pairing that keeps every HID-capable receiver connected to the KVM server so its macros and Stream Deck buttons work the moment an operator sits down. Auto-connect ships enabled.
| Command Type | DisplayNet |
| Minimum Version | 5.0 |
policy sets the default for receivers without a per-device override; enable and disable set a per-device override that always wins over the policy; clear removes the override so the receiver follows the policy again. Changes apply immediately, and a background scan re-asserts the desired state. list reports each HID-capable receiver with its resolved enabled state, whether it has an override, whether it is currently paired, and its USB-HID stream state.
Usage
kvm hid list
kvm hid enable <device_id>
kvm hid disable <device_id>
kvm hid clear <device_id>
kvm hid policy [on|off]
kvm hid source set <source> <hid_tx>
kvm hid source clear <source>
kvm hid source list
Subcommands
| Subcommand | Description |
|---|---|
list | Reports each HID-capable receiver with its resolved auto-connect state, override flag, current pairing, and USB-HID stream state. |
enable / disable | Set a per-device override that always wins over the policy. |
clear | Removes the per-device override so the receiver follows the policy again. default is accepted as a synonym, matching the other per-seat settings. |
policy | Sets (or, with no argument, reports) the default auto-connect state for receivers without an override. |
source | Records which transmitter carries a source's keyboard and mouse, for split transmitters. See source. |
source
5.0
Used only by KVM follows video, and only where a deployment has split the video transmitter from the USB transmitter.
Normally a source is its own keyboard and mouse: a DNS transmitter carries the HDMI input and the USB host on one device, and DisplayNet resolves the pair automatically. An empty list is the normal state of a working system. A row here is an exception, not a registration, and a missing row does not mean a source cannot hand over control.
Where the two are separate hardware, nothing in the device model relates them, so the pairing has to be stated:
This source's video comes from one TX, its keyboard from anotherkvm hid source set render_node_video render_node_usb
set validates at the time you run it: the named hid_tx must be a local HID transmitter, and a source that already resolves to itself is rejected as an override that would do nothing. Both checks exist because the alternative is discovering the mistake later as a follow that silently never happens.
clear accepts a source that no longer resolves to a device, so an override left behind by swapped hardware can still be removed.
Examples
List every HID-capable receiver's auto-connect statekvm hid list
Override one receiver to disable auto-connectkvm hid disable 6cdffb00f099
Set the default auto-connect policykvm hid policy on
Pair a split transmitter's video and USB halveskvm hid source set render_node_video render_node_usb
Return value
kvm hid list
Each entry describes one HID-capable receiver: its resolved auto-connect enabled state, whether a per-device override is set (has_override), whether it is currently paired to the KVM server, and its USB-HID stream_state.
kvm hid list{
"status": "SUCCESS",
"request_id": null,
"result": {
"kvm_hid_list": [
{
"device_id": "6cdffb00f077",
"enabled": true,
"has_override": false,
"paired": true,
"stream_state": "STREAMING"
}
]
},
"error": null
}
kvm hid source list
set and clear return the updated list. Names are null for a device that is not currently present.
kvm hid source list{
"status": "SUCCESS",
"request_id": null,
"result": {
"kvm_hid_source_list": [
{
"SourceId": "6cdffb00f1b7",
"SourceName": "render_node_video",
"HidTxId": "6cdffb00f1cb",
"HidTxName": "render_node_usb"
}
]
},
"error": null
}
kvm hid policy
With no argument, policy reports the current default. default_is_set distinguishes a default someone chose from the shipped default.
kvm hid policy{
"status": "SUCCESS",
"request_id": null,
"result": {
"kvm_hid_policy": [
{ "default_enabled": true, "default_is_set": true }
]
},
"error": null
}
Configuration subcommands
enable, disable, clear, and policy with an argument all return the same envelope.
kvm hid disable 6cdffb00f099{
"status": "SUCCESS",
"request_id": null,
"result": null,
"error": null
}
Errors
Error response{
"status": "ERROR",
"request_id": null,
"result": null,
"error": {
"message": "<description>",
"reason": "KVM API ERROR"
}
}
REST API
| Endpoint type | DisplayNet API command |
|---|---|
| Address | POST /api/displaynet/<operation>, or name the operation in the body of a POST /api/displaynet. See Sending commands. |
| Role | User |
| Subcommand | Operation | Parameters |
|---|---|---|
hid | kvm_hid | action [args]* |
hid_clear | kvm_hid_clear | remote_id |
hid_disable | kvm_hid_disable | remote_id |
hid_enable | kvm_hid_enable | remote_id |
hid_list | kvm_hid_list | — |
hid_policy | kvm_hid_policy | [value] |
A parameter in brackets is optional. A parameter marked * takes the remainder of the command line as one string. Pass the text exactly as you would type it on the TCI interface.
Every action has a typed operation taking named fields, and a missing or unknown field is rejected before the command runs.
kvm_hid takes a raw grammar line instead: action and args, spelled as under Usage above.
See also
kvm: core KVM session commands