How to use it
Two steps to getting the game back in front.
1 Say it, from anywhere.
2 Or press the hotkey.
! The one that stops people.
Why it works this way
Bringing Elite back to the front, so flight commands work again.
1 The one action that could not be left to the rule.
2 Windows may refuse, and it says so.
There is no way around this that does not involve faking keyboard input at the operating system — which is exactly the thing Directive 47 promises never to do outside Elite.
3 Every phrase is more than one word, on purpose.
Only the spoken phrases reach this. It is not a tool the model can call: your journal, in-game messages, search results and Inara are all untrusted text, and a message that could yank your focus while you were typing is a nuisance at best.
The details
Brings Elite Dangerous back to the front, so flight commands work again.
Ask for it
“set focus to game” “focus the game” “switch to Elite” “back to the game”
Elite is in front.
Why this exists
Directive 47 will not press a key unless Elite is the window in front. That check is the one thing standing between a voice command and typing into your browser, and it is not negotiable.
The awkward consequence is that alt-tabbing away turns every flight command off, and the only way back was the mouse — the one thing you were trying not to reach for. This is the single action that could not be delegated to the thing already refusing to act.
Windows may refuse, and it will say so
Windows does not let a background application take the foreground. A program that does not already have it can only ask, and what usually happens is the taskbar button flashes instead. Directive 47 has no way around this that does not involve faking keyboard input at the operating system, which is exactly the thing it promises never to do outside Elite.
So the accurate version: this works when you ask from Directive 47’s own window, and Windows will often refuse it when you ask from somewhere else. When that happens you are told, rather than left with silence that reads like the microphone having failed:
Windows would not let me bring Elite forward from the background. Its taskbar button should be
flashing; click that, or alt-tab.
It also says when there was nothing to do, for the same reason:
Elite is already in front.
The model cannot do this
Only the spoken phrases above reach it, through the keyword router. It is not a tool the model can call, and that is deliberate: your journal, in-game messages, web search results and INARA are all untrusted text, and anything the model can call, a hostile in-game message can try to invoke. A message that could yank your focus while you were typing is a nuisance at best.
The phrases are all more than one word on purpose. “Elite” on its own would have been convenient and is not safe: the router matches phrases anywhere in what you said and runs before the model, so a bare “Elite” would swallow “what is my Elite rank in combat” and answer it by moving a window. Elite is the top rank in every career the game has.
The tool surface, for contributors
focus_the_game
Brings Elite Dangerous to the foreground. Takes no arguments, and is protected — reachable from the keyword router and never from the model.
{"type":"object","properties":{},"required":[],"additionalProperties":false}
Its own capability rather than a tool on an existing one: the keyword router reaches a capability’s first argument-free tool, so hanging this on a capability that already has one would make it unreachable without a model — which is the configuration it exists for. Re-anchor was the other capability shaped that way, and it was retired in 0.94.0.
SingleInstance calls SetForegroundWindow too and discards the result. That is not evidence
this works: a second copy of d47 being launched is one of the cases Windows exempts, and this is
not. The foreground is re-read after the call rather than trusting the return value, because it
can report success for a call that only flashed.