What
Move keyboard shortcut bindings out of the main AetherSDR.settings XML file into a dedicated ~/.config/AetherSDR/shortcuts.settings file (same pattern as midi.settings for MIDI bindings). Add import/export functionality so users can share shortcut profiles.
Why
- Separation of concerns — shortcut bindings are independent of radio/display settings and shouldn't be mixed in the main settings file
- Profile sharing — operators want to share shortcut layouts (e.g. "Contest CW", "DX SSB", "Casual Ragchew") without exporting their entire settings file
- Clean reset — deleting
shortcuts.settings resets shortcuts to defaults without affecting any other settings
- Consistency — follows the same pattern as
MidiSettings which already uses a dedicated XML file
Current State
Bindings are stored as Shortcut_<actionId> keys in AppSettings (AetherSDR.settings). Loaded in ShortcutManager::loadBindings(), saved in ShortcutManager::saveBindings().
Proposed Changes
1. Dedicated ShortcutSettings file
- New:
src/core/ShortcutSettings.h/.cpp (or extend ShortcutManager directly)
- File:
~/.config/AetherSDR/shortcuts.settings (XML, same format as midi.settings)
- Migrate existing
Shortcut_* keys from AppSettings on first launch, then remove them
2. Import/Export in ShortcutDialog
- Export Profile button →
QFileDialog::getSaveFileName() → writes JSON:
{
"name": "Contest CW",
"version": "0.7.12",
"bindings": {
"tune_up_1": "Right",
"mox_toggle": "T",
"go_to_freq": "G"
}
}
- Import Profile button →
QFileDialog::getOpenFileName() → reads JSON, applies bindings, rebuilds shortcuts
- File extension:
.aethershortcuts (or .json)
3. ShortcutDialog UI additions
Files to modify
| File |
Change |
src/core/ShortcutManager.cpp |
Replace AppSettings read/write with dedicated XML file |
src/gui/ShortcutDialog.cpp |
Add import/export buttons and file dialogs |
src/core/AppSettings.cpp |
One-time migration of Shortcut_* keys (then remove them) |
Priority
Low — current implementation works. This is a quality-of-life improvement for users who want to share profiles or maintain multiple shortcut layouts.
What
Move keyboard shortcut bindings out of the main
AetherSDR.settingsXML file into a dedicated~/.config/AetherSDR/shortcuts.settingsfile (same pattern asmidi.settingsfor MIDI bindings). Add import/export functionality so users can share shortcut profiles.Why
shortcuts.settingsresets shortcuts to defaults without affecting any other settingsMidiSettingswhich already uses a dedicated XML fileCurrent State
Bindings are stored as
Shortcut_<actionId>keys inAppSettings(AetherSDR.settings). Loaded inShortcutManager::loadBindings(), saved inShortcutManager::saveBindings().Proposed Changes
1. Dedicated ShortcutSettings file
src/core/ShortcutSettings.h/.cpp(or extendShortcutManagerdirectly)~/.config/AetherSDR/shortcuts.settings(XML, same format asmidi.settings)Shortcut_*keys fromAppSettingson first launch, then remove them2. Import/Export in ShortcutDialog
QFileDialog::getSaveFileName()→ writes JSON:{ "name": "Contest CW", "version": "0.7.12", "bindings": { "tune_up_1": "Right", "mox_toggle": "T", "go_to_freq": "G" } }QFileDialog::getOpenFileName()→ reads JSON, applies bindings, rebuilds shortcuts.aethershortcuts(or.json)3. ShortcutDialog UI additions
Files to modify
src/core/ShortcutManager.cppAppSettingsread/write with dedicated XML filesrc/gui/ShortcutDialog.cppsrc/core/AppSettings.cppShortcut_*keys (then remove them)Priority
Low — current implementation works. This is a quality-of-life improvement for users who want to share profiles or maintain multiple shortcut layouts.