Author Topic: bindED - Copy Elite: Dangerous key bind files (.binds) to VoiceAttack variables  (Read 20084 times)

Gary

  • Administrator
  • Hero Member
  • *****
  • Posts: 1423

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



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
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. 

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

  • 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.

  • 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).

  • 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 fininsh...' option is up to you.  Generally this should run very quicky, but if you have a situation where things need to occur in a very specific order, select that option.


    The full path is cut off in the image, but you get the idea ;)

  • Click OK, Done, etc.

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:




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) [edLandingGear] 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
« Last Edit: March 07, 2018, 05:08:59 pm by Gary »

TheThingIs

  • Global Moderator
  • Full Member
  • *****
  • Posts: 225
    • HCS Voicepacks
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
The Singularity profile - One profile to rule them all and at HCS we bound them ;)

You see, TheThingIs, eventually you'll be allright.

TheThingIs

  • Global Moderator
  • Full Member
  • *****
  • Posts: 225
    • HCS Voicepacks
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
The Singularity profile - One profile to rule them all and at HCS we bound them ;)

You see, TheThingIs, eventually you'll be allright.

fireytoad

  • Newbie
  • *
  • Posts: 2
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?

fireytoad

  • Newbie
  • *
  • Posts: 2
Nevermind  found out it's 222 Thanks to one of my stream viewers :)

Pfeil

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1297
  • RTFM
Any ideas?
In the longer term, this feature request 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

Gangrel

  • Caffeine Fulled Mod
  • Global Moderator
  • Full Member
  • *****
  • Posts: 160
Any ideas?
In the longer term, this feature request 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!

lavaeolus

  • Newbie
  • *
  • Posts: 29
Great plugin. So I now can relax a bit on my EdBindTool ;) or find a way to make it useful for the new plugin.
Rincewind: Luck is my middle name. Mind you, my first name is Bad.

TheThingIs

  • Global Moderator
  • Full Member
  • *****
  • Posts: 225
    • HCS Voicepacks
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!
The Singularity profile - One profile to rule them all and at HCS we bound them ;)

You see, TheThingIs, eventually you'll be allright.

TheThingIs

  • Global Moderator
  • Full Member
  • *****
  • Posts: 225
    • HCS Voicepacks
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]
« Last Edit: November 14, 2016, 12:26:04 pm by TheThingIs »
The Singularity profile - One profile to rule them all and at HCS we bound them ;)

You see, TheThingIs, eventually you'll be allright.

Gunichou

  • Newbie
  • *
  • Posts: 4
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.

Gary

  • Administrator
  • Hero Member
  • *****
  • Posts: 1423
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

Gunichou

  • Newbie
  • *
  • Posts: 4
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 :-)
« Last Edit: November 17, 2016, 01:53:37 pm by Gunichou »

Gary

  • Administrator
  • Hero Member
  • *****
  • Posts: 1423
Glad you got it sorted ;)

Gangrel

  • Caffeine Fulled Mod
  • Global Moderator
  • Full Member
  • *****
  • Posts: 160
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"
« Last Edit: November 18, 2016, 07:37:29 am by Gangrel »

grahamatome

  • Newbie
  • *
  • Posts: 2
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?

Pfeil

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1297
  • RTFM
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.

grahamatome

  • Newbie
  • *
  • Posts: 2
I didn't have the bindED folder in the Apps folder, sorted now. Thanks  :)

SilentSean

  • Newbie
  • *
  • Posts: 1
I was wondering if anyone had an EDMap layout for UK keyboards they could share?

Balmung

  • Newbie
  • *
  • Posts: 3
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). ^^
Sorry, english is not my main language.

Racerx59

  • Newbie
  • *
  • Posts: 6
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.

Pfeil

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1297
  • RTFM
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?

Racerx59

  • Newbie
  • *
  • Posts: 6
Help with bindED - Not working for me
« Reply #22 on: April 05, 2017, 04: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.

Pfeil

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1297
  • RTFM
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
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.
« Last Edit: April 05, 2017, 05:18:52 pm by Pfeil »

Racerx59

  • Newbie
  • *
  • Posts: 6
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.







Pfeil

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1297
  • RTFM
If you run the command you just made, it should populate the variables listed at the bottom of the first post 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.

Racerx59

  • Newbie
  • *
  • Posts: 6
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.

Pfeil

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1297
  • RTFM
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.

Gary

  • Administrator
  • Hero Member
  • *****
  • Posts: 1423
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).



Gary

  • Administrator
  • Hero Member
  • *****
  • Posts: 1423
Pfeil.does.not.sleep.ever.


Ever.


:D

Racerx59

  • Newbie
  • *
  • Posts: 6
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.

Pfeil

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1297
  • RTFM
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.

Racerx59

  • Newbie
  • *
  • Posts: 6
I finally got it. Thanks for your help.

Wolf6463

  • Newbie
  • *
  • Posts: 1
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...

Pfeil

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1297
  • RTFM
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).

wilkie79

  • Newbie
  • *
  • Posts: 10
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

pulgan

  • Newbie
  • *
  • Posts: 1
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?

« Last Edit: January 04, 2018, 03:30:56 pm by pulgan »

Gangrel

  • Caffeine Fulled Mod
  • Global Moderator
  • Full Member
  • *****
  • Posts: 160
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....

Ahorodny

  • Newbie
  • *
  • Posts: 2
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

Pfeil

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1297
  • RTFM
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.

Ahorodny

  • Newbie
  • *
  • Posts: 2
<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

Malic

  • Newbie
  • *
  • Posts: 17
Does this now include the new button presses for galnet play/pause, next, etc?