RoasTime Hot Keys / Quick Keys / Streamdeck

I’d love for there to be hot keys enabled, even assignable, for Roastime. Using something like a streamdeck for roasting would be fantastic. The streamdeck would enable hot keys for adjusting parameters, triggering yellowing, 1st crack.

Adding something like this would be amazing. Please consider!

1 Like

You can see a list of keyboard shortcuts in the Help window (click your logo and then Help). The shortcuts are, however, local to the application, so RoasTime needs to be in focus for them to work. I don’t know if Streamdeck can be setup to first bring in the application into focus before queuing keys, but if it does, you can at least get a bit further.

In fact, it is a pretty nifty idea, so perhaps I finally got an excuse to get me a Streamdeck :grin:. If anyone knows of ruggedised alternatives, please do chime in.

I’ve been using a Legion Go as I have 2 bullets, and use a Surface Pro with the other.

Legion Go runs Windows, so it’s easy to install roastime.

I’ve not looked at shortcuts yet though

The streamdecks are quite rugged to be honest. They also sell the modules alone now, so you can make your own.

1 Like

Just ordered one. Should be here anytime now - thanks.

1 Like

I have been using several versions of Elgato’s Stream Deck for years, first to automate PC functions when streaming video games, and then to automate various work tasks. It is an amazing set of tools.

The best capabilities however are enabled through the use of an API (Application Programming Interface); in this case an Alio provided API. So, does the Roastime software include an API? If so, I believe the next step would be for someone(?) to code a plug-in to load into the Elgato desktop software which would then ‘talk to’ the API to execute Roasttime functions.

It’s an exciting idea that could present some really interesting roast chef developed automations beyond what is available though the Roasttime software, extending and leveraging the Alio software developer’s creativity.

1 Like

I got my Stream Deck Neo yesterday to try out, and it works straight out of the box (with Windows - I don’t have a Mac and don’t have RoasTime running on Linux, but I assume that it will run there too)…

There is, however, one caveat: In order for Stream Deck to recognise if the application is running, it needs to point to the actual executable. Pointing to the shortcut or even the executable in C:\Users\user\AppData\Local\RoasTime\ doesn’t work. However, under this folder there is another one named from the version. That works, which is a bit annoying, because that means that the name changes over time (not with all updates, though).

I haven’t tried AutoHotkey (https://www.autohotkey.com/) with this yet. I think it can distinguish between application instances based on window handles instead, which would solve this issue. Arguably, this is not a big problem, but you can very easily have RoasTime fall out of focus without you noticing it. In those situations it is necessary to get it into focus again before sending the hotkeys, seeing that they are local to the application and not global to Windows.

The next problem is, that I am using a Microsoft Surface to control the Bullet (because it works beautifully as a table/PC hybrid and takes so little space) and this has only one USB-port. So the Stream Deck will have to share that one port with the Bullet. The Stream Deck Neo consumes too much power to be fed by most hubs, so I will have to spend Christmas rummaging around in the attic for a USB-C hub with external power :christmas_tree::santa:.

p.s. I have used virtual USB over network to run the Bullet, which works like a charm. I suppose I could connect another PC to the Bullet (or the Stream Deck) and share that. But that is a roundabout solution.

p.p.s. There are no discrete shortcuts to switch tabs, only relative movement between them ([Shift-]Ctrl-Tab). So you have to be in the appropriate tab when submitting shortcuts. But this is a largely theoretical problem, as we’d likely be in the right tab already before starting the roast.

I just tried with AutoHotkey, and this works brilliantly regardless how RoasTIme is started…

; Use WinSpy to get the RoasTime executable string
roastimeString := "ahk_exe RoasTime.exe"
if WinExist(roastimeString) {
  ; RoasTime is active, so we can focus it
  WinActivate(roastimeString)
}

You can then choose to send the hotkeys from AHK or, as I prefer it, to have Stream Deck send them upon focusing the application using the AHK script here.

p.s. There really is no need to check if RoasTime is running before trying to activate it, as AHK will just ignore it if it isn’t. But it is easier to adorn the script with extra features if you do. You will, however, want to make sure it is running - and in focus - before sending off keypresses, so as not to send random text into other applications, e.g., “PRESS (1) TO FORMAT YOUR HARDDRIVE:” and then have your “Mark Yellowing” send off that 1 it’s waiting for :sweat_smile:.

p.p.s. A slightly more elegant solution would be to pass a parameter to the AHK script, to instruct it which keys to send to RoasTime and then leave it all to AHK, as per https://www.autohotkey.com/docs/v2/Scripts.htm#cmd. That way you can have some control logic to safeguard the keypresses.

p.p.p.s I am not allowed to add a thirds reply to myself. Bugger. Well… :dotted_line_face: …consider this below the line a reply, then:


Well, I couldn’t resist. Here is a self-contained AHK script…

; Use WinSpy to get the RoasTime executable string
roastimeString := "ahk_exe RoasTime.exe"
if WinExist(roastimeString) {
  ; RoasTime is active, so we can focus it - we will wait 1 second and then skip if not in focis
  WinActivate(roastimeString)
  if WinWaitActive(roastimeString,,1) {
    if A_Args.Length > 0 {
      ; If there are parameters passed to the script, iterate them
      for n, param in A_Args {
        ; Everything but "space" is passed as-is, e.g., ^^i (Ctrl-I) or ^^+{Tab} (Ctrl-Shift-Tab)
        if StrLower(A_Args[n]) = "space"
          Send(" ")
        else
          Send(A_Args[n])
      }
    }
  }
}

This replaces the hotkey-send in Stream Deck, so that now the script is being called with the parameter you want. For instance…

// Send a "1"
rt.ahk 1

// Send a Ctrl-i (to show roaster information)
rt.ahk ^^i

// Send a Ctrl-Shift-Tab (to cycle one tab backwards)
rt.ahk ^^+{tab}

In Stream Deck it looks like this…

"C:\Program Files\AutoHotkey\v2\AutoHotkey64.exe" "C:\Users\*user*\Documents\AutoHotkey\RoasTime.ahk" ^^i

…to have it focus RoasTime and send a Ctrl-i key sequence. The actual paths will vary on your system, depending on where you have AHK installed and where you put the script.

Don’t use “Open Application” to run the scripts, as this will not allow passing parameters. Instead, use “Open” which uses the Windows command interpreter instead of spawning the application directly (creatprocess vs. shellexecute).

The reason there are two ^^ when AHK only expects one, is that one escapes the other in the CMD path parser. That doesn’t need further polish, I don’t think.


[another pseudo reply - 28th Nov. :smirk:]

Just for the fun of it, I tried doing the same with a Wacom Expresskey Remote (EKR-100). The remote has the advantage over Stream Deck, that it is wireless. It does require a dongle, so the USB hub is still needed, but with this at least, you don’t need a powered hub.

It works like a charm, except it requires an annoying little piece of manual work.

Wacom Center can attach an application to a button on the remote, but it does not allow arguments. So, either you will have to have a shortcut or a script for each hotkey you want to send, or have a bit of a detour:

I assigned the AHK script to all the buttons I wanted to use for the roaster, without adding the parameters (“^^i” and “1” and all that). Wacom Center simply doesn’t have provisions for adding them.

Then, I backed up the settings in Wacom Center. They are saved in “%appdata%\WBackups” in plain XML. With a text editor I then added the missing arguments…

<ApplicationName type="string">"C:\Users\thn\Documents\AutoHotkey\wacomtest.ahk" ^^i</ApplicationName>
<ButtonApplicationRunName type="string">wacomtest.ahk</ButtonApplicationRunName>

Because of an idiosyncratic implementation detail, the path now needs to be quoted, but then you can add the needed parameter with no further ado.

Once edited, go back to Wacom Center and restore the backup. The buttons now work marvellously with the Bullet.

p.s. I’ve got a Logitech Harmony somewhere - perhaps I should try that too :sweat_smile:.

1 Like