CLI state and write follow the pad that is plugged in

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
2026-10-23 19:29:42 +02:00
parent 021f9f7fa1
commit 4f33161c70

View File

@@ -35,8 +35,20 @@ def cmd_doctor(_):
return 0 if d.ready else 1 return 0 if d.ready else 1
def _state_for(device):
"""The shadow state of the pad that is plugged in, or the default one."""
if device is None:
return core.State()
state = core.State(device_id=f"{device.vid}:{device.pid}")
if not state.path.exists():
known = core.KNOWN_LAYOUTS.get((device.vid, device.pid))
if known:
state.layout = known
return state
def cmd_state(_): def cmd_state(_):
s = core.State() s = _state_for(core.diagnose(keyd=False).device)
print(f"{DIM}{s.path}{'' if s.path.exists() else ' (not created yet)'}{O}\n") print(f"{DIM}{s.path}{'' if s.path.exists() else ' (not created yet)'}{O}\n")
print(f"{DIM}layout: {s.layout.describe()}{O}\n") print(f"{DIM}layout: {s.layout.describe()}{O}\n")
for c in s.layout.control_ids: for c in s.layout.control_ids:
@@ -77,9 +89,6 @@ def cmd_actions(a):
def cmd_write(a): def cmd_write(a):
if a.control not in core.CONTROL_IDS:
print(f"Unknown control. One of: {', '.join(core.CONTROL_IDS)}")
return 1
try: try:
b = core.Binding(keys=a.keys or "", media=a.media or "", b = core.Binding(keys=a.keys or "", media=a.media or "",
delay=a.delay).validate() delay=a.delay).validate()
@@ -91,7 +100,10 @@ def cmd_write(a):
if not d.ready: if not d.ready:
return cmd_doctor(None) return cmd_doctor(None)
state = core.State() state = _state_for(d.device)
if a.control not in state.layout.control_ids:
print(f"Unknown control. One of: {', '.join(state.layout.control_ids)}")
return 1
try: try:
core.write_binding(d.device, a.control, b, state) core.write_binding(d.device, a.control, b, state)
except core.WriteError as e: except core.WriteError as e: