6.6 KiB
Troubleshooting
Diagnosing Plugin Issues
If something goes awry you can manually call the loadbinds
plugin context or
restart VoiceAttack to force a refresh.
If that doesn’t help and your problems persist the first step should be to
import and load the included bindED-diagnostics
profile from the plugin
directory. It will output the current plugin state (keyboard layout, preset and
binds file used) to the VoiceAttack log. You should also include the output of
that if you file an issue or ask for help on Discord.
If that seems correct, there’s the bindED-reports
profile. It will generate
both a list of bind names used by Elite and a report of binds that do not have a
keyboard shortcut assigned, and put them on your Desktop. Note that those lists
are currently not filtered in any way and will contain all binds regardless if
they are used in any profiles or if they can even have a keyboard key assigned
(e.g. axes).
Migrating from the Old Plugin
If you use this as a drop-in replacement for the initial version of bindED made by Gary all commands invoking the plugin will throw an error message. Gary has asked me to change the plugin’s GUID, and the plugin with the old one will no longer be found. That is irrelevant in basically all cases and can safely be ignored.
Binds will be read automatically when VoiceAttack starts and whenever they change. To get rid of the error message(s) remove the outdated plugin invocation(s) from your commands.
Make Sure You Actually Have Binds Files
Before starting VoiceAttack with the plugin installed, you need to load the game at least once! That will create the directory structure the plugin is going to read from. You also need to have changed any key in controls options.
If you start Elite for the first time with VoiceAttack already running you will
have to either invoke the plugin’s loadbinds
config manually or restart
VoiceAttack after you have loaded into the game’s main menu and changed any key
bind.
Horizons vs. Odyssey
Note: If you do not own Odyssey, everything will work just as before!
Sadly for the time being Odyssey and Horizons will basically be separate games.
That also means they have separate binds files. BindED will always default to
using the file generated by Odyssey (<preset>.4.0.binds
) if it exists.
To keep hassle to a minimum, the recommended way to change binds is to do it
from Odyssey. Whenever a change to the Odyssey file is detected, the plugin will
overwrite Horizons’ binds (<preset>.3.0.binds
) with it. If you for some reason
want to keep entirely separate binds, you can set bindED.disableHorizonsSync#
(yes, including the pound sign) to true
in your VoiceAttack profile. Whenever
you are playing Horizons you will have to tell the plugin to load the Horizons
file (see #Specifying a Binds File to Load).
Specifying a Binds File to Load
You can set the text variable ~bindsFile
to a specific file name (e.g.
custom.3.0.binds
) before executing the loadbinds
context to have that
specific binds file loaded.
Make sure to only use the file name of an existing binds file, do not specify the full path.
This should be a last resort effort for when the game introduces changes that break the plugin’s auto detection.
Adding a Keyboard Layout
If you are using any non-US layout you might have noticed that some binds don’t work. The game itself supports a certain range of “standard” keyboard layouts and falls back to UK QWERTY if you are using something else. The original plugin was made for the US keyboard layout. So if you are using a layout that is not natively supported by Elite and/or that has keys that don’t exist on the US layout, some keys will not work out of the box, e.g.:
- “VoiceAttack presses
p
but the game thinks it’sv
!” (layout not natively supported by Elite) - “VoiceAttack presses
ß
but nothing happens!” (key not in the US key map)
I have included a map file for Neo2
(EDMap-de-neo2.txt
) which is the layout that I am using personally and
A.Cyprus was kind enough to provide full support for en-GB. If you are on a
different layout, you will have to create a corresponding map file yourself. But
if you do I’ll be happy to include it in future releases!
To add support for a new keyboard layout, you will have to create the
corresponding EDMap-<id>.txt
file. Start by copying EDMap-en-us.txt
in the
plugin directory and renaming it appropriately. The file contains a list of
sym:code
pairs, one per line. The sym
part is exactly like it is listed in
Elite’s .binds
files, the code
is the corresponding keycode VoiceAttack is
going to send.
You will have to go through the entire list and replace the existing code
s
with the right ones for your layout. In order to do so I recommend following
these steps:
- Open a reference for the UK QWERTY layout, e.g. Wikipedia’s image.
- Get a tool that can display keycodes for keys you press, e.g. NirSoft’s KeyboardStateView. Or anything else that does it. Make sure it shows you decimal keycodes instead of (only) hex!
- Make sure your PC is actually set to the layout you want to add.
- Go through the file one by one.
- Take note of its position on the keyboard. In this example we are using
the one in the top left next to
1
and my layout Neo2. - Find the correct key on the UK reference, for this example “Key_Grave”.
- Press the corresponding key on your keyboard and observe the keycode it produces. For Neo2 that was 186.
- Change the
code
in the line to the correct keycode. For Neo2 the line reads “Key_Grave:186”. - Repeat for the next line.
- Take note of its position on the keyboard. In this example we are using
the one in the top left next to
There are a bunch of symbols in the file that aren’t on a standard keyboard, just ignore those. If you have extra keys that are not on the UK QWERTY layout, you’ll have to go into the game’s controls options and try binding those keys. If it works take the symbols they produce and go back to step 4 with them.
For the actual letters you’ll have to assign the keycode of the key you are pressing to the “Key_X” that is displayed ingame. So if the ingame controls options say you’ve just pressed “H”, replace the “Key_H” line with the keycode you get when you press the key you bound ingame. If the game assigns the letters that are actually in that place on your layout, you won’t have to do anything for these.
Once you have tested and confirmed everything working, feel free to open a pull request or issue and I’ll include the new map!