[client/idd] input: synchronize keyboard LEDs

Report guest HID keyboard LED state from LGInput to LGIdd and
publish it with the LGMP input endpoint status.

Forward SPICE modifier updates through the same provider state so evdev
can synchronize physical keyboard LEDs across transport changes and
reconnects.

Bump the versioned pipe and KVMFR input status contracts for the new
feedback state.

Accept earlier LGMP input status versions without LED feedback so the
client retains input while the guest driver is being upgraded.
This commit is contained in:
Geoffrey McRae
2026-08-21 05:06:59 +10:00
parent 1a5bdc14aa
commit 71733433ed
20 changed files with 425 additions and 44 deletions

View File

@@ -551,6 +551,8 @@ InputTargetState CInputHub::GetState(const SourceKey& source)
return result;
if (!BindingValid(source))
return result;
result.keyboardLEDsValid = m_sink->GetKeyboardLEDs(
result.keyboardLEDs);
if (!m_owner.backend)
result.available = true;
else if (source.client && source.generation && m_owner == source)