# Original galaxy camera mouse controls Offline evidence from pinned client SHA256 `6891f70a021fa9f3a0e00458c284f48d1226e68ae7fc02ad48081aed47857e93` and its original local frozen resource. No game process, input event, network request or game file modification was used. The local Custom.4.2.binds and installed KeyboardMouseOnly.binds prove the keyboard actions but contain no galaxy drag-button mapping. Current map AS `components/Content.as` handles left-button UI focus; it does not establish camera drag semantics. These sources alone cannot justify swapping the tool's mouse buttons. ## Original resource and native consumers `research/Extract-OriginalGalaxyMouseControls.py` resolves the actual pointer graph from resource `86ec03fba621526059fc6812faca6f10adcb63cb`, SHA256 `29a90189d0bb238c88d09dcc0f15ff751ea29aa208b1a90894ef3b47f8942e5f`. The FRES name entry `galaxymapcontrols` has ID `E800A1BD`; its frozen root `(E800A1BD,42B3EE19,686,1840)` contains 100 control nodes. The recorded subset has 46 mouse/camera nodes, with source pointers and original scalar values preserved in `artifacts/galaxy-query-research/power-outer-sources/original-galaxy-mouse-controls.json`. InputChord initialization `913450` reads the original output at config+10, source at +18, required-on vector at +20/count+28 and required-off vector at +30/count+38. It binds the original CSM handle `5F32448`. Static initializer `87800` writes `5F32440=512CBF8`; the first CSM entry is `8D70E0`. That function ANDs all required-on inputs' +24 active bytes and ANDs the negation of each required-off input, then forwards the source's float/active state. Thus the graph's two lists are independently confirmed by original executable logic. InvertValue CSM initializer `87890` binds `512CBE0` to `8D6F20`, which XORs the source float with the sign bit. This confirms the horizontal translation inversion, independently of the node's name. `3B36F10` binds CamPitch, CamYaw, CameraCraning, CamCrane, CamDolly, TranslateX and TranslateY to the original GalaxyMapCamera. `3B507D0` consumes those nodes through the camera's +70 interface, accumulating pitch/yaw and translating along yaw-oriented horizontal axes plus world Y. ## Galaxy behavior | Buttons held | Horizontal mouse axis | Vertical mouse axis | | --- | --- | --- | | Left only | Yaw | Pitch | | Right only | Yaw | World Y / crane | | Left and right | Horizontal-plane translation from inverted X | Horizontal-plane translation from Y | The original chains are: - `MouseLeft <- UI_Mouse_Button0`; `MouseRotate <- MouseLeft`, blocked by MouseIsOverGUI. - `MouseCrane <- UI_Mouse_Button1`; `MouseCameraCraning <- MouseCrane`, blocked by MouseRotate. - Galaxy `MouseTranslate <- MouseRotate`, requiring MouseCrane and excluding IsInSystemMap. - MouseCamPitch requires MouseRotate and excludes MouseTranslate. - Two MouseCamYaw nodes allow either MouseRotate or MouseCrane, excluding MouseTranslate and GUI activity. - MouseCamCrane requires MouseCrane and excludes MouseTranslate and GUI activity. - MouseTranslateX/Y require MouseTranslate; X is the actual InvertValue output, Y is the scaled positive axis. Mouse X/Y scale factors in this graph are both original float `0.0020000000949949026`; scroll scale is `0.0005000000237487257`. These are graph factors, not a claim that the tool duplicates the entire original frame-rate/speed/zoom stack. There is a separate system-map branch: Button0 translation requires IsInSystemMap and excludes PlanetaryViewOn and MouseIsOverGUI. It must not replace Galaxy behavior. Raw original MouseYAxis positive causes positive world Y in `3B507D0`, using basis constant `50CB0E0=(0,1,0)`. The physical axis ID is `0x01000009`. Its sign relative to WinUI screen-space `dy` has not been validated with a running client. Exact live sensitivity and acceleration also remain unverified. ## Floor selector The original player guide's printed pages 80–83 explicitly describe an XZ floor, vertical star connectors, a selector ring that snaps to connector intersections, and keyboard horizontal/height movement. `GalaxyFloorSelector` implements this geometry with caller-supplied capture/release thresholds and world ring radius. Those tool parameters remain explicit; no original numeric sticky threshold or ring radius was recovered here. Four focused tests cover projected intersections, perspective distances, filtered-target release and clipped XZ geometry.