Custom Hotkeys

Editing CADE Hotkeys

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.

Important Notice: Experimental Feature

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.

Configuration File Format

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.

1. Locate the Configuration File

Copy the following folder path and paste it directly into the Windows Explorer address bar: %APPDATA%\CaptureAge\

Find the configuration file persistedState_prod.json

Or navigate manually:

  1. Open Windows Explorer
  2. Go to This PC
  3. Open Local Disk (C:) or your corresponding system drive, if different
  4. Go to Users
  5. Select your user
  6. Navigate to AppData > Roaming > CaptureAge
  7. Locate persistedState_prod.json

2. Create a Backup of the File

Create a duplicate of the file so you have a working backup to revert to in the event something goes wrong.

3. Open the File in an Editor

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.

Editing on Visual Studio Code

  1. Right-click persistedState_prod.json
  2. Go to Open with -> Visual Studio Code
  3. Right-click the text area
  4. Select Format Document

4. Configure Custom Hotkeys

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!

Example

"customHotkeyMap": {
    "toggleResourcesLeft": {
        "keycode": "r",
        "modifiers": ["ctrl", "shift"]
    },
    "pause": {
        "keycode": "p",
        "modifiers": []
    }
}

This JSON snippet defines two custom hotkeys:

  • "toggleResourcesLeft" is triggered when you press Ctrl + Shift + R.
  • "pause" is triggered when you press P with no additional keys.

Each hotkey has:

  • A "keycode": the main key to press,
  • And "modifiers": optional keys like ctrl, shift, or alt that must be held down with the main key.

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

5. Revert To Default Hotkeys

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": []
}

Configurable Hotkeys

Here's a list of hotkeys you can override in persistedState_prod.json:

CommandKeycodeModifiers
"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"[]