Skip to content

Input controls

Settings → Controls & Input is where every action in ARGUS that can be triggered by a physical input — keyboard key, gamepad button, WebHID button or axis, or the GCS serial panel — gets mapped to hardware.

The binding grid has one row per action and one column per hardware source. Keyboard, WebHID, Gamepad, GCS Serial are the four sources. Each cell is double-clickable to open a binding popup. Each action can hold multiple bindings per source.

Hardware strip

Above the grid is the hardware strip. Each card shows:

  • The source name.
  • A connection dot — red when disconnected, green when connected.
  • The connected device name (for WebHID and GCS Serial) or a short note (Always available for keyboard, Plug and play for gamepad).
  • A Connect / Disconnect button for WebHID and GCS Serial.

Gamepads auto-detect via the browser Gamepad API. WebHID opens a device picker when you click Connect. Serial opens the Web Serial picker at 115200 baud with | as the frame delimiter.

Preferred drone input source

Above the grid, Drone flight input selects which source feeds the VirtualStick axes:

  • WebHID — highest fidelity, default. HOTAS and sim joysticks.
  • Gamepad — browser-auto-detected controllers.
  • Bridge — Arduino routed through the native bridge WebSocket.
  • Serial — Arduino over Web Serial directly.

Stick curve

Stick curve (expo) is a single slider, 0.00 to 1.00 in 0.01 steps, default 0.35. 0 is linear; higher is more expo (flatter near centre, steeper near the edges). Applies to every axis before the VirtualStick packet is sent.

Secondary stick mode

The second joystick on a two-stick HOTAS or gamepad can be re-purposed at runtime:

  • Map — pans the mission map and bumps zoom/bearing.
  • Drone cam — drives the gimbal pitch/yaw and zoom axes.

Bindable controls

Every control below can be bound on any source. Defaults for most actions are GCS-Arduino pin numbers (d_9, d_14, …) because ARGUS ships with a GCS hardware panel as reference wiring. All DJI Cloud / Dock controls and all axes ship unbound by default so there is no accidental conflict.

Safety

masterCaution, emergencyStopGuard, emergencyStop

Display

showUavView, showHsiView, showBodycamView, showLogsView, displayPrev, displayNext, displayUAV, displayHome, displayWpt

Drone flight

droneTakeoffGuard, droneTakeoff, droneGoHome, droneLand, droneCancelTakeoff, droneCancelLand, droneCancelGoHome, droneRemotePairing, droneAutopilot, droneAutopilotHeading, droneAutopilotAltitude, droneObstacleAvoidance, dronePayloadGuard, dronePayloadRelease, droneMapStickControlMode, droneVirtualStickEnabled

DJI Cloud / Dock (default-unbound)

dockCoverOpen, dockCoverClose, droneFlyToPoint, takeoffToPoint, returnToPointHome, poiModeToggle, poiCircleSpeedIncrease, poiCircleSpeedDecrease, authorityGrabFlight, authorityGrabPayload, spotlightToggle, nightVisionToggle, beaconToggle, stealthToggle, speakerTtsPlay, speakerStop, aiRecognitionToggle

These route through the active IDroneControlTransport. On a DJI peer they land on the dji-dock-{sn} TACLINK data channel which argus-dji translates to MQTT; on a non-DJI peer they are no-ops.

Mission

missionStart, missionResumePause, missionStop

Map

mapRecenter, mapHeatmap, mapSweep, mapType, mapZoomBearingStickMode

Camera and imaging

liveStream, camObjectDetection, camThermal, camLensChange, camStartRecording, camStopRecording, camTakePicture, toggleFlightMode, toggleObstacleAvoidance, toggleLedSettings, toggleThermalPalette, toggleNdviStreamSource, toggleMultiSpectralFusion, toggleSpectralDisplayMode

Axes (single axis per action)

droneAxisPitch, droneAxisRoll, droneAxisYaw, droneAxisThrottle, gimbalAxisPitch, gimbalAxisYaw, gimbalAxisZoom, secondaryJoystick, volume

Mapping a binding

Double-click a cell. In the popup, click + Learn (or + Bind Axis for an axis row) and drive the hardware:

  • Keyboard — press the key or hold modifiers then a key (chord). Release to commit. Chords sort modifiers first.
  • Gamepad — press a button; for an axis, push it past 85% deflection.
  • WebHID — press a button; for an axis, move it past 70% with a clear change from rest so an idle throttle does not auto-bind.
  • Serial — press the GCS panel button; for an axis, deflect past 85% or raw 900.

The popup also shows every existing binding, a per-binding to remove, and for axes an ⇅ INV toggle that flips direction by appending _inv. Clear drops every binding for that cell. Reset defaults up top restores the shipped mapping.

Mode-2 by default

The shipped axis defaults follow the Mode-2 convention where the right stick is pitch/roll and the left stick is throttle/yaw — but only once you bind them. Out of the box every axis row shows so nothing flies until you map it.