VoiceAttack

Profiles, Commands and Plugins => Plugin Uploads => Topic started by: Gary on November 06, 2016, 03:57:16 PM

Title: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Gary on November 06, 2016, 03:57:16 PM

About the bindED plugin


UPDATE - v1.0.0.1 - Fixes file sort issue.

UPDATE - March 7, 2018 - v1.0.0.1 - Licensing file now included.

Edit - By request, source now supplied as a download.  I'm sorry, but I cannot provide any type of support or help for the source.   Use at your own peril ;)

The bindED plugin was created to copy the keyboard key bind information for Elite: Dangerous directly into VoiceAttack keypress variables.  The variables can then be used in conjunction with key press actions within VoiceAttack (the latest betas of VoiceAttack allow for keypresses based on variables). 

The idea is to be able to change your key bindings from within Elite: Dangerous and have each change be reflected (semi-automatically) in VoiceAttack, possibly saving some time and/or hair loss. 

Thanks to Lavaeolus for starting up the EDMap.txt layout, as well as all those that participate in making plugins all they can be.  Also thanks to Fiery Toad (https://www.twitch.tv/fireytoad) for testing, sharing .binds files and moral support.


The bindED plugin is attached, but can also be downloaded here:  http://www.voiceattack.com/bindED (http://www.voiceattack.com/bindED)



Setting up the bindED plugin


Copy the entire bindED folder from the zip file to the VoiceAttack Apps folder (the whole folder, not just the contents).  The folder is usually located in C:\Program Files (x86)\VoiceAttack       (An installer may be created later to make this easier... for now it's just a zip)

For most, this is all you'll need to do.  For others having trouble or want to explore, read on:

Inside the bindED folder, you will find the plugin file itself (bindED.dll), which uses VoiceAttack's Plugin v4 interface... that just means that you will need VoiceAttack beta version v1.5.12.32 or later to use the plugin.

You will also find a file called, 'EDMap.txt'.  If you open this text file, you will see that it contains each of the Elite: Dangerous key bind types associated with a numeric code.  The code is simply the keyboard key code expressed as a number.  For instance, the, 'A' key is 65, 'Z' is 90, 'Escape' is 27 and so on.   

This is for English-US keyboards.  Your keyboard layout may not line up exactly with this mapping, so adjustments may need to be made (you can edit this file as you see fit, just as long as it follows the KeyName;Code structure that you see inside the file). 

If you happen to create a layout that is different or find a mistake/omission in the English-US layout (this is new stuff, after all), please feel free to upload your update here for others to use.

To see the list of key codes, go here:  https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx (https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx)
Note that the key codes are expressed in hexadecimal and will need to be converted to integer values.




Using the bindED plugin


To use the plugin, you will need to do a few things. 


The next time that this new command is executed (whether by itself to, 'reload' bindings or from a profile change) the VoiceAttack variables will be updated with what is indicated in the bind file.




How to use the keypress variables once they are updated by the bindED plugin


There are a lot of words here, but as you'll see, there's not a whole lot going on. 

First, you will need to be familiar with the Elite: Dangerous key binds in-game, as well as where those binds are stored in the configuration (.binds) files.   
For this example, the landing gear toggle will be used.  To toggle the landing gear, let's say the 'L' key is used in-game. 
The configuration file (.binds) will store that information in an xml element called, 'LandingGearToggle'.  Inside the binds file, you will see the entry looks something like this:
Code: [Select]
         <LandingGearToggle>
<Primary Device="Keyboard" Key="Key_L" />
<Secondary Device="{NoDevice}" Key="" />
</LandingGearToggle>
   
When VoiceAttack encounters this element, it creates a TEXT variable called, 'edLandingGearToggle'.  It's just simply the element name with, 'ed' prefixed to it.  Then, VoiceAttack notices that the key used is 'Key_L'.  VoiceAttack gets the value indicated in the EDMap.txt file and puts it in the, 'edLandingGearToggle' variable (you don't necessarily have to know this... I threw it in there in case you were wondering ;))

At the bottom of this post, you will find a (my) current list of the variables that can be set by the bindED plugin, according to the .binds file that I have.

So, in VoiceAttack (later betas), you can have a key (or keys) pressed based on a variable.  At the bottom of the keypress screen, you will see an input box that will allow you to specify what variable to use.  Before, you would have, 'L' selected at the top of the screen.  Now, you would just type in, 'edLandingGearToggle' (no quotes) in the variable input box:

(http://www.voiceattack.com/vaforumimages/20161106_02.png)


Your command probably looks like this, currently:
Code: [Select]
When I say... 'Landing Gear'
Press L key and hold for 0.1 seconds and release

It would now look like this:
Code: [Select]
When I say... 'Landing Gear'
Press variable key(s) [edLandingGearToggle] and hold for 0.1 seconds and release


If anybody out there wants to create an Elite: Dangerous variable mapping to what is seen in-game, that would be really cool  8)
   



Advanced stuff and things to consider for those who want even more confusion.


If you are going to be creating profiles for others, it might be a good idea to put some extra steps in your commands in case your users do not have the bindED plugin (either not installed, not configured properly or not initialized).  Going to expand on the whole landing gear thing again in this example...

Code: [Select]
Begin Text Compare : [edLandingGearToggle] Has Been Set
    Press variable key(s) [edLandingGearToggle] and hold for 0.1 seconds and release
Else
    Press L key and hold for 0.1 seconds and release
    Write '[Orange] Variable keypress not set.  Using default keypress.' to log
End Condition

Note that if the variable HAS BEEN SET (not null), the keypress uses the variable.  If the variable has not been set, you can have a fall-back keypress, or, just show a warning. 


You can have multiple plugin actions to load several (possibly custom) bind files at the same time if you need to.  Each subsequently loaded bind file will override the previous ones.  You can also do this with one action by separating the bind paths with a semicolon.  You may never need to do this, but it's there if you want to do something with it.


Way off the chart...  Something else to try that is left over from testing (and left in for anybody that wants to use it) is if you want to load a binds file on plugin initialization (that is, when the plugin first loads (when VA starts up)... not when the plugin is invoked), create shortcuts to the binds files and place them in the same folder as the plugin .dll.  Each shortcut is processed in alphabetical order.  This is one way to have an automatic, global initialization of variables that do not require the plugin to be invoked.  If this doesn't make any sense to you, do not worry ;)



One more thing... if you happen to have a '.binds' file for Star Citizen that has a good variety of key/key combinations (with modifiers... ctrl/alt/shift/win), please let me know and I will create a bindSC plugin.




Variable List Reference


Below is a current list of the variables that bindED can update (and you can use in your keypress actions).  Remember, the element within the .binds file is whatever the variable name is below, minus the, 'ed' prefix.  So, 'edAutoBreakBuggyButton' below correlates to the 'AutoBreakBuggyButton' element in the .binds file.  Note that if no keys are set for the particular element, the variable value will be null (Not Set).  This list can change at any time depending on Frontier, and is only here to give you an idea of what's currently available without having to dig into your .binds file.  Good luck, Captain!

edAutoBreakBuggyButton
edBackwardKey
edBackwardThrustButton
edBackwardThrustButton_Landing
edBuggyPitchDownButton
edBuggyPitchUpButton
edBuggyPrimaryFireButton
edBuggyRollLeftButton
edBuggyRollRightButton
edBuggySecondaryFireButton
edBuggyToggleReverseThrottleInput
edBuggyTurretPitchDownButton
edBuggyTurretPitchUpButton
edBuggyTurretYawLeftButton
edBuggyTurretYawRightButton
edCamPitchDown
edCamPitchUp
edCamTranslateBackward
edCamTranslateDown
edCamTranslateForward
edCamTranslateLeft
edCamTranslateRight
edCamTranslateUp
edCamTranslateZHold
edCamYawLeft
edCamYawRight
edCamZoomIn
edCamZoomOut
edChargeECM
edCycleFireGroupNext
edCycleFireGroupPrevious
edCycleNextHostileTarget
edCycleNextPanel
edCycleNextSubsystem
edCycleNextTarget
edCyclePreviousHostileTarget
edCyclePreviousPanel
edCyclePreviousSubsystem
edCyclePreviousTarget
edDecreaseSpeedButtonMax
edDeployHardpointToggle
edDeployHeatSink
edDisableRotationCorrectToggle
edDownThrustButton
edDownThrustButton_Landing
edEjectAllCargo
edEjectAllCargo_Buggy
edEngineColourToggle
edFireChaffLauncher
edFocusCommsPanel
edFocusCommsPanel_Buggy
edFocusLeftPanel
edFocusLeftPanel_Buggy
edFocusRadarPanel
edFocusRadarPanel_Buggy
edFocusRightPanel
edFocusRightPanel_Buggy
edForwardKey
edForwardThrustButton
edForwardThrustButton_Landing
edGalaxyMapOpen
edGalaxyMapOpen_Buggy
edHeadlightsBuggyButton
edHeadLookPitchDown
edHeadLookPitchUp
edHeadLookReset
edHeadLookToggle
edHeadLookToggle_Buggy
edHeadLookYawLeft
edHeadLookYawRight
edHMDReset
edHyperspace
edHyperSuperCombination
edIncreaseEnginesPower
edIncreaseEnginesPower_Buggy
edIncreaseSpeedButtonMax
edIncreaseSystemsPower
edIncreaseSystemsPower_Buggy
edIncreaseWeaponsPower
edIncreaseWeaponsPower_Buggy
edLandingGearToggle
edLeftThrustButton
edLeftThrustButton_Landing
edMicrophoneMute
edMouseReset
edOpenOrders
edOrbitLinesToggle
edOrderAggressiveBehaviour
edOrderDefensiveBehaviour
edOrderFocusTarget
edOrderFollow
edOrderHoldFire
edOrderHoldPosition
edOrderRequestDock
edPause
edPhotoCameraToggle
edPhotoCameraToggle_Buggy
edPitchDownButton
edPitchDownButton_Landing
edPitchUpButton
edPitchUpButton_Landing
edPrimaryFire
edQuickCommsPanel
edQuickCommsPanel_Buggy
edRadarDecreaseRange
edRadarIncreaseRange
edRecallDismissShip
edResetPowerDistribution
edResetPowerDistribution_Buggy
edRightThrustButton
edRightThrustButton_Landing
edRollLeftButton
edRollLeftButton_Landing
edRollRightButton
edRollRightButton_Landing
edSecondaryFire
edSelectHighestThreat
edSelectTarget
edSelectTarget_Buggy
edSelectTargetsTarget
edSetSpeed100
edSetSpeed25
edSetSpeed50
edSetSpeed75
edSetSpeedMinus100
edSetSpeedMinus25
edSetSpeedMinus50
edSetSpeedMinus75
edSetSpeedZero
edShipSpotLightToggle
edShowPGScoreSummaryInput
edSteerLeftButton
edSteerRightButton
edSupercruise
edSystemMapOpen
edSystemMapOpen_Buggy
edTargetNextRouteSystem
edTargetWingman0
edTargetWingman1
edTargetWingman2
edToggleBuggyTurretButton
edToggleButtonUpInput
edToggleCargoScoop
edToggleCargoScoop_Buggy
edToggleDriveAssist
edToggleFlightAssist
edToggleReverseThrottleInput
edUI_Back
edUI_Down
edUI_Left
edUI_Right
edUI_Select
edUI_Toggle
edUI_Up
edUIFocus
edUIFocus_Buggy
edUpThrustButton
edUpThrustButton_Landing
edUseAlternateFlightValuesToggle
edUseBoostJuice
edUseShieldCell
edVerticalThrustersButton
edWeaponColourToggle
edWingNavLock
edYawLeftButton
edYawLeftButton_Landing
edYawRightButton
edYawRightButton_Landing
edYawToRollButton
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: TheThingIs on November 09, 2016, 05:54:09 AM
oh wow this is amazing, will have a play but I suspect you just gave me a lot of work to do changing all my keypress variables :p
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: TheThingIs on November 09, 2016, 10:55:02 AM
Ok Gary, as you asked for it. This is the kb bindings for HCS Voicepacks. I'd changed their names a while ago to work with lavaeolus's keybind exporter so you couldn't just import it into a standard HCS pack I'm afraid, these are from my HCS Multi-Crew profile. I've kept it this way as it's also still compatible with the keybind exporter so people have a choice. I'll convince Paul to change the packs to do it this way for future updates :D
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: fireytoad on November 12, 2016, 08:06:06 AM
Hey Gary,

Love the new plugin, but I'm having a little trouble with the # key. In the EDMap.txt it's set to 191 which is fine for US Keyboards, but UK keyboards have the # on it's own key and after googling and asking a few coder friends, I can't find a Virtual-Key Code for it.

Any ideas?
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: fireytoad on November 12, 2016, 08:36:47 AM
Nevermind  found out it's 222 Thanks to one of my stream viewers :)
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Pfeil on November 12, 2016, 08:47:29 AM
Any ideas?
In the longer term, this feature request (http://voiceattack.com/smf/index.php?topic=582.0) may be a solution.

In the short term, you should be able to use VoiceAttack to tell you the keycode, if you read the exported xml data:
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Gangrel on November 12, 2016, 08:51:12 AM
Any ideas?
In the longer term, this feature request (http://voiceattack.com/smf/index.php?topic=582.0) may be a solution.

In the short term, you should be able to use VoiceAttack to tell you the keycode, if you read the exported xml data:
  • Create an empty command
  • Assign a "When I press keys" key to it
  • Save the changes
  • Export the command using profile export(Alt-X or the "X+<>" button on the main window)
  • Open the resulting .vap file using notepad
  • Look for the line "<keyValue></keyValue>", the number here is your key code

Very handy, thanks!
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: lavaeolus on November 12, 2016, 05:15:33 PM
Great plugin. So I now can relax a bit on my EdBindTool ;) or find a way to make it useful for the new plugin.
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: TheThingIs on November 14, 2016, 11:17:23 AM
people still want it m8 and I'm still packaging it with Multi-Crew. There are some who don't like things messing with their proper .binds file so importing a copy and then using your tool on it is still something very useful indeed!
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: TheThingIs on November 14, 2016, 11:30:09 AM
oh and just to add as well about the # key

in the elite binds it's bound by pressing the # key in game. when edBind reads it in, it's coming back as [191] and not [222] using my razer UK keyboard.

Using Pfeils method above to read what the keycode is then it does indeed come out as [222]

elites .binds file holds the key as Key="Key_Hash" which is why, because of using the US version of this tool, it's being read as [191]
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Gunichou on November 17, 2016, 11:02:21 AM
Hi there.
This plugin seems to be crazy but for me, that's not usable...
I make fresh install. VA lanunched. Plugin enabled. New command created for calling a refresh of my ED commands.
Testing with a command to use landing gear and this message apperas :
"18:58:08 - Key press by variable [[edLandingGear]] not set.  No keys pressed."

Edit: I think plugin don't import binds and never create variables.
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Gary on November 17, 2016, 12:30:26 PM
It looks like you are enclosing your variable name in square brackets.  On the key press screen, change your variable name from:

[edLandingGear]

to

edLandingGear
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Gunichou on November 17, 2016, 01:34:19 PM
It looks like you are enclosing your variable name in square brackets.  On the key press screen, change your variable name from:

[edLandingGear]

to

edLandingGear
Great my first error  ;D
Now i've got "21:30:42 - Key press by variable [edLandingGear] not set.  No keys pressed." error message.
I don't know why but VA doesn't want to take my binds and make new variables.

Edit: I just suck ... I try to use edLandingGear ... The good variable is edLandingGearToggle and it's ok :-)
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Gary on November 17, 2016, 06:33:09 PM
Glad you got it sorted ;)
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Gangrel on November 18, 2016, 07:30:10 AM
Glad you got it sorted ;)

Any Chance of getting mouse buttons caught by this tool?

The names are

MOUSE_1: Left Mouse button
MOUSE_2: Right Mouse Button
MOUSE_3: Middle Click/Mouse button

Structure is similar to keyboard keys just

Device="Mouse" Key="Mouse_1"
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: grahamatome on January 03, 2017, 09:36:00 AM
Hi,
I have just installed the bindED plugin burt when trying to make the command I get the following error "There are currently no plugins available to select for this action" . any thoughts?
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Pfeil on January 03, 2017, 09:52:36 AM
Did you put the plugin in a subfolder? The path should look something like "VoiceAttack\Apps\bindED\bindEDPlugin.dll", it won't work if you put the files into the "Apps" directory directly.
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: grahamatome on January 04, 2017, 03:02:20 AM
I didn't have the bindED folder in the Apps folder, sorted now. Thanks  :)
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: SilentSean on January 13, 2017, 01:09:43 PM
I was wondering if anyone had an EDMap layout for UK keyboards they could share?
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Balmung on February 28, 2017, 10:39:35 AM
Yeah, would be interesting to share keyboard layouts. Will see, if I need to make a german one by myself and have the time for it in the next days than I will upload it and post the link here.

Want to take some time to make a better ED Profile for me for the release of 2.3.

Will there be a update for ED 2.3 for this plugin? I'm sure there are new keys for MultiCrew etc. I know for now it is too early, the 2.3 Beta started today (downloading it right now). ^^
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Racerx59 on April 05, 2017, 04:37:13 PM
I don't know what I am doing wrong but I can not get the bindED plugin to work. It shows up in voiceattack as enabled. That's all I get. So what is next. How do I use it? What files do I need to use? Maybe I don't fully understand the plugin function. My understanding is that it takes the bindings file and makes a VAP file out of it. If that's the case, where is it.
Any help would be greatly appreciated.
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Pfeil on April 05, 2017, 05:28:59 PM
I don't know what I am doing wrong but I can not get the bindED plugin to work.
Have you read the very first post in this topic, which contains the instructions on how to use this plugin?
Title: Help with bindED - Not working for me
Post by: Racerx59 on April 05, 2017, 05:31:31 PM
I'm having a problem getting the bindED plugin working. I am following the instructions but perhaps I missed something. The plugin does show as available. But what do I do after that? Is there a file I have to modify? I don't see any indications that the plugin is working or doing what its supposed to do.

Help would be greatly appreciated. I am not using the registered version. I have been waiting to see if this plugin works before buying. Plugin sounds really useful and a time saver.
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Pfeil on April 05, 2017, 05:59:02 PM
The basic steps are as follows:
All of these steps are explained in greater detail in the first post.

The plugin doesn't produce any files, .vap or otherwise. It loads the binds from the game into VoiceAttack variables so you can reference them by function rather than by keypress directly.


Can you tell me which step you're having trouble with? Because from what I can see the heading "Using the bindED plugin" explains exactly what you need to do next.
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Racerx59 on April 06, 2017, 04:38:56 PM
I have read the instructions. I think I am following them correctly. Perhaps I read the wrong post. I only get as far as getting the plugin recognized. Not sure what the first post is. Perhaps this is the confusion. Under the instructions I found I never found anything regarding what you mentioned below. How do I make it a Variable Keypress? I don't see that anywhere.

The basic steps are as follows:

    Install the plugin(which you've done already)
    Create and run a command that calls the plugin to load the keypress values into VoiceAttack variables
    Create a command that uses the "Variable Keypress" feature of the "Keypress" action
    Save your profile and use it


I followed these instructions below from the text file:
Using the bindED plugin
--------------------------------------------------------------------------------------------------------------------------------

To use the plugin, you will need to do a few things. 

1)  First, you will need to turn on plugin support in VoiceAttack.  This is done from the Options screen.

2)  Next, you will need to create a command in VoiceAttack to call the bindED plugin which (optionally) includes the Elite: Dangerous binds file that you want to use.
    To do this, add a new command and then click on Other -> Advanced -> Execute an external plugin function.

3)  In the new plugin action screen, select the, 'bindED' plugin from the Plugin list (bindED will be available if you had turned on plugin support and had installed
    the bindED plugin correctly).

4)  There are two routes you can take here.  If you only have ONE binds file, and you want the bindED plugin to try to access your .binds file that is located
    in  C:\Users\YOUR_USER_NAME\AppData\Local\Frontier Developments\Elite Dangerous\Options\Bindings, simply leave the, 'Plugin Context' box blank.
    The plugin will simply grab the NEWEST .binds file it finds in that directory and use it.

    If you have MULTIPLE binds files for different situations, OR, the default behavior indicated above does not meet your need, you can specify which binds
    file the bindED plugin is to access by typing or pasting the full path to the binds file that you want to use in the 'Plugin Context' box:
   
    Selecting the, 'Wait for the plugin to finish...' option is up to you.  Generally this should run very quickly, but if you have a situation where things need
    to occur in a very specific order, select that option.






Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Pfeil on April 06, 2017, 05:05:01 PM
If you run the command you just made, it should populate the variables listed at the bottom of the first post (http://voiceattack.com/smf/index.php?topic=564.msg2772#msg2772) with data.

To check that this has happened, you can run a command containing a "Write a Value to the Event Log" action that uses a token to output the value of one of those variables:
Code: [Select]
Write '[Purple] {TXT:edBackwardKey}' to log

Note that you need to run the command that calls the plugin every time you start VoiceAttack, as the variables are not retained.

How do I make it a Variable Keypress? I don't see that anywhere.

You click the "Key Press" button on the left hand side of the action list within the "Add a Command" window, then check the "Variable Keypess (Advanced)" checkbox, and enter the name of the variable containing the keypress in the textbox below that.
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Racerx59 on April 06, 2017, 10:02:58 PM
I'm still missing something. What is the purpose of the plugin? I thought the purpose is to take the bindings file and convert it to a VAP file. Am I mistaken about that? I just did not realize that I had to manually enter every single command as a key press variable. I thought it was supposed to be a simple way of making voice commands out of the bindings file.
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Pfeil on April 06, 2017, 10:37:44 PM
I'm still missing something. What is the purpose of the plugin? I thought the purpose is to take the bindings file and convert it to a VAP file. Am I mistaken about that?
The plugin doesn't produce any files, .vap or otherwise. It loads the binds from the game into VoiceAttack variables so you can reference them by function rather than by keypress directly.

I thought it was supposed to be a simple way of making voice commands out of the bindings file.
The idea is to make the keybinds within VoiceAttack correspond to the ingame binds.
It's mainly relevant if you intend on distributing your profile, in which case you can't be sure everyone is using the same binds.
This plugin automatically fetches the ingame binds so the users of your profile don't have to go in and change every nonstandard bind manually.
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Gary on April 06, 2017, 10:56:34 PM
Quote
The bindED plugin was created to copy the keyboard key bind information for Elite: Dangerous directly into VoiceAttack keypress variables.  The variables can then be used in conjunction with key press actions within VoiceAttack (the latest betas of VoiceAttack allow for keypresses based on variables). 

The idea is to be able to change your key bindings from within Elite: Dangerous and have each change be reflected (semi-automatically) in VoiceAttack, possibly saving some time and/or hair loss.

The bindED plugin doesn't generate commands.  It allows you to have a commands that base their key presses on values read from Elite Dangerous' binds files.  For instance, without bindED, you would have a command that looks like this:

Say, 'Landing Gear'
Press the, 'L' key and release

Real simple... this just presses the, 'L' key and deploys the landing gear in your game.  Works great... right up until you decide in ED that you want the, 'X' key for your landing gear.  The next time you say, 'landing gear', nothing will happen because VA will be pressing the, 'L' key.  You would have to open up VA and edit every command that uses the, 'L' key for landing gear (you'll probably only have one command for manipulating your landing gear, but this is just an example... just pretend you're one of these immersion fans and you have 32 different commands that can deploy your landing gear ;)).

With bindED, you can specify a variable in the place of the, 'L' key:

Say, 'Landing Gear'
Press variable key [edLandingGearToggle] and release  (or however its done)

The value in edLandingGearToggle will automatically be changed to be whatever is in the specified binds file.  So, if you change the landing gear bind in-game from 'L' to, 'X', the plugin will pick that up.  So when you say, 'landing gear', 'X' is pressed (or whatever key you specify).


Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Gary on April 06, 2017, 10:57:28 PM
Pfeil.does.not.sleep.ever.


Ever.


:D
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Racerx59 on April 07, 2017, 04:20:29 PM
I think I got it. Last thing regarding the variables to use.  Do I use the variables from the "Variable List Reference" or can I use my own.
Most likely I have to use the ones from the Variable List Reference since they match the bindings file.
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Pfeil on April 07, 2017, 04:53:28 PM
Do I use the variables from the "Variable List Reference" or can I use my own.
As described in the plugin documentation, it uses the names the the developer of Elite: Dangerous uses in their settings file, just with "ed" prefixed to them.

If you want to use different names, you'll have to set a new variable to the value of one of the variables the plugin creates.
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Racerx59 on April 07, 2017, 05:34:06 PM
I finally got it. Thanks for your help.
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Wolf6463 on May 24, 2017, 09:23:16 AM
Hello, I am a Noob to this and cannot get my binds to load into VoiceAttack and I have tried to do it by creating a new command and tell it where to get it and it looks like I am blocked from creating this command please any help.... Thnx...
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Pfeil on May 24, 2017, 03:57:47 PM
What exactly isn't working?

If you see a "Plugin 'bindED' initialized" message when VoiceAttack starts, you should be able to add an "Execute an External Plugin Function" action to any command, select the bindED plugin, and either put the path to the file into the "Plugin Context" box(if you have multiple .binds files and want to select a specific one, or a nonstandard location), or leave the "Plugin Context" box blank(if your .binds file is in the "C:\Users\YOUR_USER_NAME\AppData\Local\Frontier Developments\Elite Dangerous\Options\Bindings" folder).

Executing the command should then populate a number of variables within VoiceAttack; You can verify this using a "Write a Value to the Event Log" action:
Code: [Select]
Write '[Purple] {TXT:edPause}, {TXT:edEjectAllCargo}, {TXT:edChargeECM}' to log
At least one of those should say something other than "Not Set"(unless I randomly chose three options that have no keys bound to them, check ingame whether that's the case if it doesn't work).
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: wilkie79 on June 14, 2017, 02:03:28 PM
Yeah, would be interesting to share keyboard layouts. Will see, if I need to make a german one by myself and have the time for it in the next days than I will upload it and post the link here.

Want to take some time to make a better ED Profile for me for the release of 2.3.

Will there be a update for ED 2.3 for this plugin? I'm sure there are new keys for MultiCrew etc. I know for now it is too early, the 2.3 Beta started today (downloading it right now). ^^

Found this for UK virtual keycodes

https://stackoverflow.com/questions/36666868/uk-keyboard-virtual-key-code-for-the-symbol (https://stackoverflow.com/questions/36666868/uk-keyboard-virtual-key-code-for-the-symbol)
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: pulgan on January 04, 2018, 03:10:24 PM
Hello ! really nice plugin

I would like to know, how can I add the mouse buttons on the list ?

I tryed to add this lines on the EDMAP.txt:

MOUSE_1;1
MOUSE_2;2
MOUSE_3;4

but nothing

and second question, I don't saw the symbols & é " '... on the virtual key code list. they have a key code ? or I have to use another key?

Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Gangrel on January 04, 2018, 04:01:00 PM
Depends on the language layout. Some of them are combination keys, so don't actually *need* the mapping.

French/German layouts should be covered. Other languages, not so much....
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Ahorodny on March 08, 2018, 01:22:10 PM
So I downloaded the zip, extracted it put the 3 files in a folder called bindED copies that folder to the apps folder in voice attack, allowed plugins in voice attack. Whenever I go to create a custom command, and “select execute and external plugin command” it keeps on giving me an error saying no plugin available. Looking for some
Advice would love to get this fully working. Thanks
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Pfeil on March 08, 2018, 01:33:40 PM
When you start VoiceAttack you should see a "Plugin 'bindED Plugin v1.0' initialized." message in the log(with a blue dot) after the "Plugin support enabled." message.

If you're not seeing this message, verify that the folder structure of the plugin is like this:
VoiceAttack\Apps\bindED\bindEDplugin.dll

If you're not seeing the "Plugin support enabled." message, double-check that plugin support is enabled.
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Ahorodny on March 08, 2018, 01:57:29 PM
<facepalm> There are apparently 2 voice attack folders on my PC since I downloaded it from steam I have to add the plugins to the steam voice attack apps folder not the program files x86 voice attack folder. Thanks
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Malic on March 27, 2018, 05:49:16 AM
Does this now include the new button presses for galnet play/pause, next, etc?
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Malic on October 13, 2018, 02:39:35 AM
Quote
edGalnetAudio_Play_Pause
edGalnetAudio_SkipBackward
edGalnetAudio_SkipForward
edGalnetAudio_ClearQueue

Would need to be added to the OP for the new Galnet commands

I made a command

Quote
[Previous;Play;Pause;Next;Clear] gal net [news;]

Quote
Begin Text Compare : [{CMDSEGMENT:0}] Equals 'Next'
    Press variable key(s) [edGalnetAudio_SkipForward] and hold for 0.1 seconds and release
Else If Text Compare : [{CMDSEGMENT:0}] Equals 'Play'
    Press variable key(s) [edGalnetAudio_Play_Pause] and hold for 0.1 seconds and release
Else If Text Compare : [{CMDSEGMENT:0}] Equals 'Pause'
    Press variable key(s) [edGalnetAudio_Play_Pause] and hold for 0.1 seconds and release
Else If Text Compare : [{CMDSEGMENT:0}] Equals 'Previous'
    Press variable key(s) [edGalnetAudio_SkipBackward] and hold for 0.1 seconds and release
Else If Text Compare : [{CMDSEGMENT:0}] Equals 'Clear'
    Press variable key(s) [edGalnetAudio_ClearQueue] and hold for 0.1 seconds and release
End Condition
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: zrowolf on October 25, 2018, 12:06:00 PM
Hello all,

I'm having a problem with the plugin, it works for most keys and even buttons on my joystick, but when I use a command that calls [edPrimaryFire] I keep getting a warning that the variable is not set.
In VoiceAttack, I have the joystick enabled and assigned, and in my Elite Dangerous keybinds file, the key is listed as JOY_1.

I'm not even sure where to start troubleshooting this issue, any ideas?
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: TheThingIs on October 25, 2018, 02:14:58 PM
Hello all,

I'm having a problem with the plugin, it works for most keys and even buttons on my joystick, but when I use a command that calls [edPrimaryFire] I keep getting a warning that the variable is not set.
In VoiceAttack, I have the joystick enabled and assigned, and in my Elite Dangerous keybinds file, the key is listed as JOY_1.

I'm not even sure where to start troubleshooting this issue, any ideas?

This plugin only reads keyboard keys which is why you are getting a not set.
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: zrowolf on October 25, 2018, 03:36:55 PM
Hello all,

I'm having a problem with the plugin, it works for most keys and even buttons on my joystick, but when I use a command that calls [edPrimaryFire] I keep getting a warning that the variable is not set.
In VoiceAttack, I have the joystick enabled and assigned, and in my Elite Dangerous keybinds file, the key is listed as JOY_1.

I'm not even sure where to start troubleshooting this issue, any ideas?

This plugin only reads keyboard keys which is why you are getting a not set.

Huh, interesting.  Thank you, I'll have a look at my keybinds.
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Acecool on December 01, 2018, 07:26:04 AM
Here's mine: Say Load System to load the bind module...

It has been a long time since I played ED / ED:H, but I figured I'd post this. They should all be dynamic but I can't recall if some aren't.. I know I spent some time configuring everything and adding features so they should be all good to go in unison with BindED plugin.

I don't remember whether or not the self destruct one was actually set up, and I wanted to set up a cancel system but never got around to it.


I have the following commands Setup:

For Game Commands and Voice Attack Initialization:
Load System - Initializes Voice Attack Profile and BindED Plugin
Reconnect - Alternates between Solo and Online quickly

For Ground Operations:
Deploy Rover - Deploy or Recover
Recall Ship - ...
Request Docking - ...
Toggle Landing Gear - ...

For Ship Defense:
Charge ECM - ...
Charge Shields - Uses Shield Cell
Deploy Heatsink - ...
Fire Chaff - ...
Initiate Self Destruct Sequence - 5 second delay KABOOM!
Surrender Cargo - Ejects all cargo

For Ship Propulsion:
All Stop - Throttle 0
Boost - Speed Boost
Engage Jump - Hyperspace
Engage Warp - Super-Cruise

For Ship Readiness:
Alert Stations
Battle Stations
Landing Stations
Silent Running

For Ship Systems ( Powers are output in this format Weapons / Shields / Engines ):
Power Engines - ( 1 / 1 / 4 )
Power Escape - ( 0 / 2 / 4 )
Power Reset - ( 2 / 2 / 2 )
Power Shields - ( 2 / 4 / 0 )
Power Weapons - ( 4 / 2 / 0 )

For targeting:
Hostile - Targets next hostile
Last - Previous Target
Last Hostile - Previous Hostile
Last System - Previous Sub-System
Next - Next Target
Route Navigation - Next System in route
System - Next Sub-System
Target - Target Ahead
Target Threat - Highest Threat
Target Wingman 1 - ...
Target Wingman 2 - ...
Target Wingman 3 - ...
Targets Target - Targets your Targets Target
Wing Navigation - Locks Navigation to Wing

Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: philstach3 on February 03, 2019, 09:56:30 AM
Has this been updated with the latest Chapter 4 Beyond update? If not, will it or can it?
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: ArNeo on May 12, 2019, 03:44:12 AM
@philstach3,

There's no need if there are no structural changes to the 'binds-file',
edBinds reads the 'Custom.3.0.binds' xml-file and generates the 'Variable key-press'.
So when there are new key-binds they automatically get generated.
Be aware that there needs to be a key-bound in the game, joystick buttons won't work.

Copy the Elite dangerous bind-file (https://www.reddit.com/r/EliteDangerous/comments/2htyja/psa_remember_to_back_up_your_control_configs/) and open it with a text editor, there you can see the <key-bind elements>
i.e. <OrbitLinesToggle> edBinds creates a 'Variable key-press' named  'edOrbitLinesToggle' which you can use in VoiceAttack.
Dunno if all the elements are converted from there.

I started to make a list Here (https://docs.google.com/spreadsheets/d/1LesTitHgI9L5cXfF-hgUVSKH4joeWj1AUAZWi--_GSI/edit?usp=sharing), haven't updated after 3.2, there are key-binds for the General, Ship and SRV.
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Sirbenskee on May 19, 2019, 06:25:29 AM
Any way we can get this for Star Citizen?
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: TheThingIs on May 20, 2019, 02:27:04 PM
I've looked at doing this for HCS profiles but SC has a really odd binding system and not all things are put into a readable file. Hopefully it will become consistent enough to do nearer it's release.
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: ptimale on October 07, 2019, 10:45:44 AM
Hello


Translated by Google

BindED is still functional in the latest version of Elite Dangerous.

No way to make it work.

I look for info for my problem, but rine find very clear

Photos are more talking than long talks

(https://image.noelshack.com/minis/2019/41/1/1570466199-1.png) (https://www.noelshack.com/2019-41-1-1570466199-1.png)

(https://image.noelshack.com/minis/2019/41/1/1570466199-2.png) (https://www.noelshack.com/2019-41-1-1570466199-2.png)

(https://image.noelshack.com/minis/2019/41/1/1570466199-3.png) (https://www.noelshack.com/2019-41-1-1570466199-3.png)

(https://image.noelshack.com/minis/2019/41/1/1570466478-4.png) (https://www.noelshack.com/2019-41-1-1570466478-4.png)

VoiceAttack install yesterday

in advance thank you for your help
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Pfeil on October 07, 2019, 12:25:26 PM
If you're calling the plugin before getting the value of "edLandingGearToggle", which it appears you're doing, bindED should retrieve the values.

Have you checked this with other binds? Is there a keypress assigned to the landing gear toggle action in the binds file you're referencing?
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Labanden on April 30, 2020, 06:26:46 AM
Question, I have bind for CyclePreviousSubsystem set to #, but when i use VA to do that i get a / which is set to PreviousTarget. I have confirmed the correct command is being used. Ideas?

Have even moved this command to a new profile.
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Pfeil on April 30, 2020, 12:58:39 PM
Are you using a non-US keyboard layout?

This is for English-US keyboards.  Your keyboard layout may not line up exactly with this mapping, so adjustments may need to be made (you can edit this file as you see fit, just as long as it follows the KeyName;Code structure that you see inside the file). 

Check the "Setting up the bindED plugin" section of the first post in this topic if so.
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Azorath on May 13, 2020, 08:44:47 AM
Sometimes, not always, when I change bindings from ED it does reverts back to first state when starts up or if I call the BindED with this.



(https://i.imgur.com/tH42tjw.jpg)


What changes; I enter the options to change a binding like enabling the mouse controls for dss or fss or sth else then I find that I forgot sth and go back to add that then when I go back it reverts the first changes with very first .binds on the start. Only solution so far I found editing the .binds file or making the changes strictly carefully in one go.

I'm pretty sure .binds is the only binds file in bindings folder and its not read-only. 
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Pfeil on May 13, 2020, 01:55:31 PM
when I change bindings from ED it does reverts back to first state when starts up or if I call the BindED with this.

What, specifically, reverts? The ingame binds, or only the data in VoiceAttack? In case of the latter, does restarting VoiceAttack resolve the issue?
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Azorath on June 14, 2020, 02:44:56 PM
Sorry for late reply, not the VA but ingame settings reverts. Like .binds file is read-only.

But; I haven't had this problem since I changed my joystick. I get rid of the old binds folder (by moving it ofc heheh) and creating new custom binds.

Thanks anyway ^^
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Psilovybin on October 18, 2020, 07:54:12 AM
Anyone got an updated .vap for the new interface changes? 
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: bronney on October 23, 2020, 06:03:19 AM
Anyone got an updated .vap for the new interface changes?
I am working on it, but since I haven't played with the FSS, etc it's taking some time.  I don't wanna release buggy stuff that make people update.  Hang tight, currently reading the new EDDI states and this:

https://github.com/Corysia/bindED/issues/5
Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: bronney on October 24, 2020, 03:28:26 PM
Hello Boys!  I've finished updating my profile based on Ishmair's for 3.7.  Tested.  Added many new features such as bindED, new EDDI states, night vision, FSS, etc.  Also debugged many non-exiting conditions and solid tab checks hehe.  So happy to share with you all.  Have fun out there commander. o/

VAP Download (with bindings) Updated 2020 Oct. 24 WIP:
https://drive.google.com/file/d/1z5bFAstMNeYcHsr8T5m_NqwIBwr5nmvS/view?usp=sharing

You need bindED: https://forum.voiceattack.com/smf/index.php?topic=564.0

and EDDI: https://github.com/EDCD/EDDI/releases


Original Thread: https://forums.frontier.co.uk/threads/voice-attack-profile-sharing.53846/page-9

YouTube Demo: https://www.youtube.com/playlist?list=PL63PGTpR-DXo9ZwoIDvtvCXLkNppQyPwa

Title: Re: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables
Post by: Malic on November 05, 2023, 08:23:09 PM
Quote
One more thing... if you happen to have a '.binds' file for Star Citizen that has a good variety of key/key combinations (with modifiers... ctrl/alt/shift/win), please let me know and I will create a bindSC plugin.

Was a Star Citizen BindSC plugin ever made?