How to extend shortcuts beyond the first nine custom tabs

This discussion involves the Windows version of the forthcoming Aeon Timeline 3.5, now in beta. I wanted to post this while it’s still fresh in my mind, even though it won’t be of use to anyone (other than fellow 3.5 beta users) until 3.5 is released.

I previously posted a feature request to add keyboard shortcuts for custom tabs. I want to thank the development team for providing shortcuts for the first nine custom tabs, meaning each tab is assigned the shortcut Ctrl+1 through Ctrl+9. If we create more than nine custom tabs, no shortcut is assigned, though we can manually select any custom tab from the app interface.

I have no idea if my current 14 custom tabs represent more tabs that most users would want; admittedly, I may be a bit of an edge case. :face_with_raised_eyebrow:

I sought keyboard shortcuts for custom tabs because I assign them to Stream Deck buttons. So when a beta build provided up to nine shortcuts for custom tabs, I ran into a bit of a problem: I had 14 such tabs. I had run out of keyboard shortcuts. What to do?

In discussing this in the beta discussions, @Rebecca asked,

…would your setup allow you to combine actions? For example, jump to the 9th tab and then use the “next tab” shortcut?

This was the perfect solution. Here’s how I did it:

Using the free AutoHotkey app, I wrote a script to switch to the tenth custom tab (remember, keyboard shortcuts already cover the first nine tabs). So the idea is to start at the ninth tab and move to the right once, reaching the tenth tab. Here’s the script to do that:

; Tab10.ahk — Jump to Tab 10 from Tab 9
#SingleInstance Force

if WinExist("ahk_exe AeonTimeline.exe") || WinExist("Aeon Timeline")
{
    WinActivate("ahk_exe AeonTimeline.exe")
    WinWaitActive("Aeon Timeline", , 1)
    Sleep 150
    Send("^9")   ; Reset to Tab 9
    Sleep 200
    Send("!{Right}")  ; Move right once → Tab 10
}
else
{
    SoundBeep(1000, 150)
}

For the next tab (the 11th), I write it the same, except I use Loop to move to the second tab after the ninth:

; Tab11.ahk — Jump to Tab 11 from Tab 9
#SingleInstance Force

if WinExist("ahk_exe AeonTimeline.exe") || WinExist("Aeon Timeline")
{
    WinActivate("ahk_exe AeonTimeline.exe")
    WinWaitActive("Aeon Timeline", , 1)
    Sleep 150
    Send("^9")   ; Reset to Tab 9
    Sleep 200
    Loop 2       ; Move right twice → Tab 11
    {
        Send("!{Right}")
        Sleep 120
    }
}
else
{
    SoundBeep(1000, 150)
}

For each successive tab, I use the same script but change the Loop value as needed. If I want to move to the third tab after the ninth, the Loop value is 3. And so on for each successive custom tab.

To handle 14 custom tabs, I create five scripts (again, I don’t need to worry about the first nine tab shortcuts, since Aeon Timeline provides them).

So, to recap thus far, I used the built-in keyboard shortcuts Ctrl+1 through Ctrl+9 for the first nine custom tabs, and an AutoHotkey script (which I shared above) for the next five.

The next step is to bind Stream Deck buttons to the scripts.

Because I have so many buttons for custom tabs, I created a Folder “Tabs” button in Stream Deck:

Stream Deck now switches the view of my Custom Tab buttons:

I assigned custom tabs 1 through 9 to Aeon Timeline’s keyboard shortcuts using Hotkey buttons, i.e., Ctrl+1, Ctrl+2, etc. For custom tabs 10 through 14, which fall outside Aeon Timeline’s assignable keyboard shortcuts, I used Stream Deck’s Open buttons to trigger each AutoHotkey script. Because I might want to add additional custom tabs, I wrote the scripts for the unused placeholder tabs 15 to 20 and assigned them buttons.

As an aside, I compiled each script into .exe binaries, though I didn’t really have to, as AutoHotkey will run a script without compilation:

Also, since my goal was to create Stream Deck buttons, I didn’t use AutoHotkey to bind the scripts to keyboard keys. But for those who prefer to trigger custom tabs with keyboard shortcuts, something like this should work:

; AeonTabs_Hotkeys.ahk — Assign Tabs 10–20 to keyboard shortcuts
#SingleInstance Force

SelectTabFrom9(steps) {
    if WinExist("ahk_exe AeonTimeline.exe") || WinExist("Aeon Timeline") {
        WinActivate("ahk_exe AeonTimeline.exe")
        WinWaitActive("Aeon Timeline", , 1)
        Sleep 150
        Send("^9")   ; Reset to Tab 9
        Sleep 200
        Loop steps {
            Send("!{Right}")
            Sleep 120
        }
    } else {
        SoundBeep(1000, 150)
    }
}

#HotIf WinActive("ahk_exe AeonTimeline.exe") || WinActive("Aeon Timeline")

^!1::SelectTabFrom9(1)    ; Ctrl+Alt+1 → Tab 10
^!2::SelectTabFrom9(2)    ; Ctrl+Alt+2 → Tab 11
^!3::SelectTabFrom9(3)    ; Ctrl+Alt+3 → Tab 12
^!4::SelectTabFrom9(4)    ; Ctrl+Alt+4 → Tab 13
^!5::SelectTabFrom9(5)    ; Ctrl+Alt+5 → Tab 14
^!6::SelectTabFrom9(6)    ; Ctrl+Alt+6 → Tab 15
^!7::SelectTabFrom9(7)    ; Ctrl+Alt+7 → Tab 16
^!8::SelectTabFrom9(8)    ; Ctrl+Alt+8 → Tab 17
^!9::SelectTabFrom9(9)    ; Ctrl+Alt+9 → Tab 18
^!0::SelectTabFrom9(10)   ; Ctrl+Alt+0 → Tab 19
^!Q::SelectTabFrom9(11)   ; Ctrl+Alt+Q → Tab 20

#HotIf

I hope this is helpful for anyone running the Windows version of Aeon Timeline, once version 3.5 is released. For those on Macs, I’m sure something similar can be done.