Two operator requirements for MBeg keyboards and server connections:
1. align_keyboard_local_ids(): on every keyboard interface under
Clients/GeViIO/GeViIO_01, set each video input/output LocalID equal to
its GlobalID so operators can address cameras/monitors by global id.
Virtual decoders/servers under GeViIO_Virtual keep their sequential
local ids. Runs after prune in /api/set/export and /api/batch/build.
2. preserve_server_credentials(): server User/Password are entered by hand
and must survive re-importing the server list from Excel. Matched by
alias, an existing non-empty credential overrides the imported value.
Applied to G-Core and GeViScope servers in /api/batch/build.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Keyboard interfaces under Clients/GeViIO/GeViIO_01 should never have the
PTZ flag set on their video inputs. Previously PTZ cameras (e.g. 101027)
were exported with PTZ=True on every keyboard, unlike fixed cameras.
Adds geviset.disable_keyboard_ptz() and runs it at the end of the video
input pipeline in both /api/set/export and /api/batch/build. Only the
keyboard interfaces are touched; virtual decoders/servers under
GeViIO_Virtual keep their PTZ flags so PTZ control still works.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>