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.

1 Like

That’s a very interesting use of the Stream Deck. Thanks for sharing those tips!

Out of interest, do you have a preference when it comes to setting up the order of your tabs, or do you find that it doesn’t matter so much once you’ve got those custom shortcuts in place?

1 Like

In my novel-writing workflow, I primarily work in narrative custom tabs. Thus, my first several tabs are split screens of narrative tabs, followed by solo narrative tabs. After these, I have custom tabs for locations and characters. Finally, I have the timeline tabs. (I’m still tweaking things, but this is basic approach.)

By using this order, I get my most often-used tabs within the nine built-in keyboard shortcuts, Ctrl+1 through Ctrl+9.

One challenge, though, has been that when I reposition a tab, its assigned shortcut changes. For example, it could change from Ctrl+7 to Ctrl+8. That would require me to reassign shortcuts in Stream Deck. This is a minor thing, really, especially once I become happy with the order of the tabs. One nice thing about using Stream Deck is that I can leave the tab order alone in Aeon Timeline but move buttons around in Stream Deck.

I must say, the ability in 3.5 to position custom tabs where I want them is magical. I can imagine other authors, such as those writing historical fiction, preferring the timeline-type custom tabs at the beginning–and they can easily have that arrangement.

2 Likes