Users have the ability to set custom hotkeys for CA:DE by editing a configuration file. Below are instructions for doing this, as well as some examples.
This is a highly experimental feature, and we kindly ask everyone to proceed with caution. Every comma, bracket, and quotation mark matters when editing the configuration file.
If at any point something breaks, you can remove the configuration file and CA:DE will generate a new one with default values upon restarting. Keep in mind that doing this will reset all of CA:DE's settings, not just the hotkeys. As such, we recommend always keeping a backup of your last working configuration file.
JSON (JavaScript Object Notation) is a lightweight data format used to store and exchange data. It's easy for humans to read and write, and easy for machines to parse and generate. JSON consists of key-value pairs, arrays, and nested objects — think of it like a structured way to organize information.
You can verify if your JSON is properly formatted online on the JSONLint website.
For a more detailed explanation of JSON, read the first section of this JSON beginner guide.
Copy the following folder path and paste it directly into the Windows Explorer address bar: %APPDATA%\CaptureAge\
Find the configuration file persistedState_prod.json
persistedState_prod.json
Create a duplicate of the file so you have a working backup to revert to in the event something goes wrong.
We recommend using a code editor, such as Visual Studio Code (VS Code), as it provides formatting options, auto-completion, and error highlighting to make JSON files easier to work with. It is available on the Microsoft Store.
persistedState_prod.json
In the configuration file, find the property called "customHotkeyMap", and add the configurable hotkey from the list below to the curly braces next to the property. Do not forget to separate each hotkey with a comma at the end!
"customHotkeyMap": { "toggleResourcesLeft": { "keycode": "r", "modifiers": ["ctrl", "shift"] }, "pause": { "keycode": "p", "modifiers": [] } }
This JSON snippet defines two custom hotkeys:
Each hotkey has:
If you do not use correct syntax, depending on the error CA:DE might go blank upon launching, or restore back to the default configuration, which will reset all the settings.
ALWAYS KEEP A WORKING BACKUP WHEN MAKING CHANGES TO THE CONFIGURATION FILE
If you'd like to revert to the default hotkey settings defined by CaptureAge, simply delete the customHotkeyMap
section.
"customHotkeyMap": { * Custom hotkeys here * }
You can also delete individual custom hotkeys.
For example, if you decide not to change the pause hotkey after all, you can simply remove that specific hotkey definition from customHotkeyMap
. In the example above you would also need to remove the comma that separates both key configurations.
, "pause": { "keycode": "p", "modifiers": [] }
Here's a list of hotkeys you can override in persistedState_prod.json
:
Command | Keycode | Modifiers |
---|---|---|
"swapScoreboardTeamSides" | "s" | ["alt"] |
"cycleDashboardForward" | "c" | ["alt"] |
"cycleDashboardBackward" | "x" | ["alt"] |
"toggleStaticTechnologies" | "t" | ["alt"] |
"cycleFogOfWar" | "f" | ["alt"] |
"toggleFogOfWar" | "f" | ["alt", "shift"] |
"toggleCombinedFogOfWar" | "d" | ["alt"] |
"cycleMinimapMode" | "m" | ["alt"] |
"showAchievements" | "s" | ["ctrl", "alt"] |
"pause" | "f3" | [] |
"setPlayer0" | "f9" | ["ctrl", "shift"] |
"setPlayer1" | "f1" | ["ctrl", "shift"] |
"setPlayer2" | "f2" | ["ctrl", "shift"] |
"setPlayer3" | "f3" | ["ctrl", "shift"] |
"setPlayer4" | "f4" | ["ctrl", "shift"] |
"setPlayer5" | "f5" | ["ctrl", "shift"] |
"setPlayer6" | "f6" | ["ctrl", "shift"] |
"setPlayer7" | "f7" | ["ctrl", "shift"] |
"setPlayer8" | "f8" | ["ctrl", "shift"] |
"escapeLayerOrOpenMenu" | "escape" | [] |
"toggleAppWindowFullScreen" | "f11" | [] |
"toggleAppWindowFullScreen2" | "enter" | ["alt"] |
"showGameSpeedAndFps" | "f10" | [] |
"toggleScrubbingBar" | "t" | [] |
"toggleOverlayDisplay" | "o" | ["alt"] |
"toggleMinimapDisplayWhenNoOverlay" | "o" | ["alt", "shift"] |
"toggleCrossThreadProfiling" | "p" | ["ctrl", "alt", "shift"] |
"cycleBaseColorMode" | "c" | ["ctrl", "alt"] |
"cycleColorMode" | "g" | ["ctrl", "alt"] |
"toggleCursorClip" | "c" | ["alt", "shift"] |
"notificationsPageUp" | "pageup" | [] |
"notificationsPageDown" | "pagedown" | [] |
"notificationsTopPage" | "pageup" | ["shift"] |
"notificationsBottomPage" | "pagedown" | ["shift"] |
"bookmark" | "f4" | [] |
"followSelection" | "f" | [] |
"unFollowSelection" | "f" | ["ctrl"] |
"holdFogOfWar" | "tab" | ["keydown", "keyup"] |
"setPerspectiveForSelected" | "space" | ["ctrl"] |
"setZoomLevelOne" | "1" | ["alt"] |
"setZoomLevelTwo" | "2" | ["alt"] |
"setZoomLevelThree" | "3" | ["alt"] |
"updateZoomLevelOneSetting" | "1" | ["alt", "shift"] |
"updateZoomLevelTwoSetting" | "2" | ["alt", "shift"] |
"updateZoomLevelThreeSetting" | "3" | ["alt", "shift"] |
"speedStepDown" | "[" | [] |
"speedStepUp" | "]" | [] |
"skipBack" | "-" | [] |
"skipForward" | "=" | [] |
"toggleRangeCircles" | "q" | ["alt"] |
"toggleSlideoutStaticTechs" | "p" | ["alt"] |
"toggleSlideoutGraph" | "p" | ["ctrl", "alt"] |
"toggleResourcesLeft" | "r" | ["alt"] |
"togglePlayerResources" | "r" | ["ctrl", "alt"] |
"setControlGroup1" | "1" | ["ctrl"] |
"callControlGroup1" | "1" | [] |
"setControlGroup2" | "2" | ["ctrl"] |
"callControlGroup2" | "2" | [] |
"setControlGroup3" | "3" | ["ctrl"] |
"callControlGroup3" | "3" | [] |
"setControlGroup4" | "4" | ["ctrl"] |
"callControlGroup4" | "4" | [] |
"setControlGroup5" | "5" | ["ctrl"] |
"callControlGroup5" | "5" | [] |
"setControlGroup6" | "6" | ["ctrl"] |
"callControlGroup6" | "6" | [] |
"setControlGroup7" | "7" | ["ctrl"] |
"callControlGroup7" | "7" | [] |
"setControlGroup8" | "8" | ["ctrl"] |
"callControlGroup8" | "8" | [] |
"setControlGroup9" | "9" | ["ctrl"] |
"callControlGroup9" | "9" | [] |
"setControlGroup0" | "0" | ["ctrl"] |
"callControlGroup0" | "0" | [] |