Skip to main content

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 TypeDisplayNet
Minimum Version5.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

SubcommandDescription
listReports each HID-capable receiver with its resolved auto-connect state, override flag, current pairing, and USB-HID stream state.
enable / disableSet a per-device override that always wins over the policy.
clearRemoves the per-device override so the receiver follows the policy again. default is accepted as a synonym, matching the other per-seat settings.
policySets (or, with no argument, reports) the default auto-connect state for receivers without an override.
sourceRecords 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 another
kvm 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 state
kvm hid list
Override one receiver to disable auto-connect
kvm hid disable 6cdffb00f099
Set the default auto-connect policy
kvm hid policy on
Pair a split transmitter's video and USB halves
kvm 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 typeDisplayNet API command
AddressPOST /api/displaynet/<operation>, or name the operation in the body of a POST /api/displaynet. See Sending commands.
RoleUser
SubcommandOperationParameters
hidkvm_hidaction [args]*
hid_clearkvm_hid_clearremote_id
hid_disablekvm_hid_disableremote_id
hid_enablekvm_hid_enableremote_id
hid_listkvm_hid_list
hid_policykvm_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