bindED/README.md
2021-06-14 09:38:14 +02:00

5.8 KiB
Raw Blame History

bindED

This VoiceAttack plugin reads keybindings in Elite:Dangerous and stores them as VoiceAttack variables. It has originally been written by Gary (the developer of VoiceAttack) and published on the VoiceAttack forums.

You can find the original README here.

I have taken the original source code and added automatic detection of the correct bindings file and support for non-US keyboard layouts (see below for details).

Installing

Grab bindEDplugin.zip from the release page and extract it into your VoiceAttacks Apps directory.

Migrating from the Old Plugin

If you use this as a drop-in replacement for the initial version all commands invoking the plugin will throw an error message. Gary has asked me to change the plugins 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 when they change.

Usage

Before starting VoiceAttack with the plugin installed, make sure that you have loaded 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. You will probably have made some changes anyway.

For Horizons players, thats it! When VoiceAttack loads, bindED will automatically detect your bindings. It will also keep a watchful eye on Elites bindings folder and reload them when there is a change!

For Odyssey players, there is an additional caveat: you have to use the same preset for all 4 sections (general, ship, SRV, foot). Sadly its not apparent from the files which binds belong to which.

If something goes awry, you can still manually call the loadbinds plugin context to force a refresh.

If you are not using a US QWERTY keyboard layout, see below.

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 by default always use the last edited file, be that the base preset, Horizons or Odyssey.

To keep hassle to a minimum, the recommended way to change binds is to do it from Odyssey. When a change to the Odyssey file is detected, the plugin will by default overwrite Horizons binds with it. To prevent that and keep entirely separate binds, you can set bindED.disableHorizonsSync# (yes, including the pound sign) to true in your VoiceAttack profile. Then, after changing anything from Horizons, youll have to tell the plugin to load the Horizons file (see below).

Specifying a Binds File to Load

This should generally not be necessary!

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 plugins auto detection.

Support for non-US Keyboard Layouts

Shipped layouts:

  • en-US
  • en-GB
  • de-neo2

If you are using any non-US layout you might have noticed that some binds dont work. Elite internally uses keycode values (a number assigned to each key on the keyboard) for its bindings but for some reason both displays and saves them as keysyms (the label on the key), according to the UK QWERTY keyboard layout. That means VoiceAttack cant just send the keysym it reads from a binding, it has to translate it into the corresponding keycode.

The original plugin contained a EDMap.txt file that contains information on that conversion for the US keyboard layout. If you are using any other layout that information will be incorrect for any symbols that are on a different key than they are on the US layout.

I have added the option to use maps for other keyboard layouts. In order to do so you will have to set a text variable in VoiceAttack called bindED.layout# to the layout you want to use. BindED will be notified of the variable changing and reload your bindings with the appropriate key map. If the variable is not set it will defaut to “en-us”, leaving the original behaviour intact.

I have included a map file for Neo2 (EDMap-de-neo2.txt) which is the layout that I am using personally. If you are on a different layout, you will have to create a corresponding map file yourself or prod me to add it. E.g. for the french AZERTY it would be EDMap-fr-fr.text and set bindED.layout# to “fr-fr”. For US Dvorak, EDmap-en-us-dvorak and “en-us-dvorak”. You can see where this is going.

For more information on creating new supported keyboard layouts see the Wiki.

Troubleshooting

If you run into any kinds of trouble with missing bindings the first step should be to import and load the included bindED-diagnostics profile. It will output the current plugin state (keyboard layout, preset and binds file used) to the VoiceAttack log.

If that seems correct, theres 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 nor if they can even have a keyboard key assigned (e.g. axes).

Need help beyond that? Please file an issue or hop into Discord.