Skip to content

Add CWX function key support to FlexControl mappings #2721

Description

@graham999au

Request preparation

  • I used an AI assistant to help structure this request
  • I checked for existing issues covering the same feature

What would you like?

Add CWX function key support to FlexControl mappings

What

Allow the FlexRadio FlexControl knob/button device to trigger CWX memory/function keys from within AetherSDR.

From the operator perspective, pressing a configured FlexControl button should transmit the assigned CWX message (CQ, exchange, TU, etc.) exactly like clicking a CWX macro button in the UI.

Why

CW operators and contesters frequently use FlexControl for hands-on operation without relying on keyboard focus or mouse interaction.

Currently, FlexControl can tune and control radio functions, but it cannot trigger CWX memories/function keys. This limits ergonomic CW operation and makes AetherSDR less competitive for contest and DX workflows compared to SmartSDR.

Supporting CWX macros from FlexControl would allow:

  • One-handed CW operation
  • Faster contest exchanges
  • Better remote and portable operation
  • Reduced dependence on keyboard shortcuts

How Other Clients Do It

  • SmartSDR allows FlexControl buttons and external controllers to trigger CWX memories/macros.
  • Many SDR clients support mapping external HID/MIDI/controller inputs to canned CW messages or macros.
  • Contest-oriented clients commonly expose macro actions as assignable commands.

Suggested Behavior

  • Add CWX macro actions to the existing FlexControl action mapping system.
  • In the device configuration UI, users can assign:
    • CWX F1
    • CWX F2
    • CWX F3
    • etc.
  • When the assigned FlexControl button is pressed:
    • The corresponding CWX message is transmitted immediately
    • The active TX slice is used
    • The UI reflects the transmission state
  • Optional future enhancement:
    • Support press vs long-press mappings
    • Support cycling through CW memories

Relevant UI/components may include:

  • FlexControl configuration dialog
  • CWX applet/panel
  • AppletPanel action routing
  • RxApplet / TX control integration

Protocol Hints

Likely implemented entirely client-side using existing CWX transmit commands.

Possible FlexLib interaction areas:

  • CWX memory send commands
  • Existing CW keyer/CWX transport handling
  • FlexControl input event mapping

Exact protocol details need verification.

Acceptance Criteria

  • FlexControl buttons can be assigned to CWX memory actions
  • Pressing the assigned button transmits the selected CWX message
  • CWX transmission uses the currently active TX slice
  • Function works without requiring keyboard focus
  • Configuration persists across application restarts

Metadata

Metadata

Assignees

No one assigned

    Labels

    CWCW keying, decode, and operationenhancementImprovement to existing featureexternal devicesFlexControl, MIDI, serial port, USB peripheralsgood first issueGood for newcomersmaintainer-reviewRequires maintainer review before any action is taken

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions