Jump to content

Need Discrete Joystick Commands for A 10


Recommended Posts

Hi All,

 

I need discrete joystick commands (suitable to edit the joystick default.lua file) for the following functions:

 

canopy open/canopy close

aerial refuelling door open/aerial refuelling door close

ejection seat armed/ejection seat safe

 

plus any others you may have
 

thanks in advance. 


Edited by speedbird5
Link to comment
Share on other sites

@speedbird5: I have created a fair number of commands for the A-10C. Most of them are made for maintained ON/OFF switches but they can be easily split up into 2 separate bindings for use with pushbuttons. From what you say (Joystick) I suppose you want pushbutton commands, correct?

Example Ejection seat arm/safe, bindings for 2 pushbuttons:

{down = 3010, cockpit_device_id = 39, value_down = 1.0,    name = _('Seat Arm Handle SAFE'), category = _('Systems')},
{down = 3010, cockpit_device_id = 39, value_down = -1.0, name = _('Seat Arm Handle ARM'), category = _('Systems')},

For a single ON/OFF switch:

{down = 3010, up = 3010, cockpit_device_id = 39, value_down = -1.0, value_up = 1.0, name = _('Seat Arm Handle ARM 2-Pos ARM/SAFE'), category = _('Systems')},

It would help if you provided a list of commands that have high priority for you.


Edited by LeCuvier

LeCuvier

Windows 10 Pro 64Bit | i7-4790 CPU |16 GB RAM|SSD System Disk|SSD Gaming Disk| MSI GTX-1080 Gaming 8 GB| Acer XB270HU | TM Warthog HOTAS | VKB Gladiator Pro | MongoosT-50 | MFG Crosswind Pedals | TrackIR 5

Link to comment
Share on other sites

Thanks to you both.

 

@icemaker: I will look at that file but don’t have access to it at the moment. Could you perhaps post a link to it ?

 

@LeCuvier: I need the commands for toggle switches ON/OFF for the following
 

canopy open/canopy close

aerial refuelling door open/aerial refuelling door close

ejection seat armed/ejection seat safe
 

But if you can post any others you have that may come in useful I would appreciate it. 

Link to comment
Share on other sites

For the ejection seat Lever I have already provided the line of code for an ON/OFF switch in my earlier post.

For the canopy Open/Close ON/OFF switch use this line:

{down = 3007, up = 3007, cockpit_device_id = 39, value_down = 1.0, value_up = 0.0, name = _('Canopy 2-Pos OPEN/HOLD'), category = _('Systems')},

Note: for the canopy I have also bindings that provide OPEN/HOLD/CLOSE functionality. But that requires either 3 pushbuttons or a 3-position switch like the Autopilot switch on the TM WH throttle.

For the aerial refueling lever use this line of code:

{down = 3016, up = 3016, cockpit_device_id = 36, value_down = -1.0, value_up = 1.0, name = _('Air Refuel Control Lever 2-Pos OPEN/CLOSED'), category = _('Fuel system control panel')},

I have a whole litany of additional bindings, need to think about best format for posting them.

Notes:

1. Normally these lines of code are added into the file "default.lua" in the folder "...\Mods\aircraft\A-10C_2\Input\AircraftName\joystick". The hog has an added complexity: It has .lua files for specific game controllers like "Joystick - HOTAS Warthog.lua" or "Throttle - HOTAS Warthog.lua". If you want to use a binding with one of the game controllers for which a specific .lua file exists, you need to add the line of code into the related file. Caution: Ignore files ending with ".diff.lua", they are totally different things.

2. Enter all added lines as a contiguous block near the beginning of the file, just after the line that reads "keyCommands = {".

return {

forceFeedback = {
trimmer = 1.0,
shake = 0.5,
swapAxes = false,
},

keyCommands = {

3. Don't omit any of the commas, parentheses or quote signs! If you do, the file may become invalid.

4. Use Notepad++ for editing

  • Thanks 1

LeCuvier

Windows 10 Pro 64Bit | i7-4790 CPU |16 GB RAM|SSD System Disk|SSD Gaming Disk| MSI GTX-1080 Gaming 8 GB| Acer XB270HU | TM Warthog HOTAS | VKB Gladiator Pro | MongoosT-50 | MFG Crosswind Pedals | TrackIR 5

Link to comment
Share on other sites

clickabledata.lua is the key source of information for creating new keybinds. But for the A-10C I also need the file "devices.lua" in the same folder.
Example Aerial Refueling Lever:

In clickabledata you find this line:

elements["PTR-FSCP-RCVR-LEVER"]            = default_animated_lever( _("Aerial Refueling Slipway Control Lever"), devices.FUEL_SYSTEM, device_commands.Button_16, 121 )

I take the button number (16) in the example and add 3000. That's the command code 3016.

Next I note the device name "FUEL_SYSTEM" and look it up in "devices.lua". The green number at the end of the line is 36. That's the value for the "cockpit_device_ID".

Then I need to determine the values for ON and OFF. Many times thats ON ("down") = 1.0 and OFF (up) = -1.0. But it's not always that simple. You have to use trial and error to find it out.

The name of the new binding must be unique. If you use the same name as an existing binding you might never see your new binding in Controls/Options.


Edited by LeCuvier
  • Thanks 1

LeCuvier

Windows 10 Pro 64Bit | i7-4790 CPU |16 GB RAM|SSD System Disk|SSD Gaming Disk| MSI GTX-1080 Gaming 8 GB| Acer XB270HU | TM Warthog HOTAS | VKB Gladiator Pro | MongoosT-50 | MFG Crosswind Pedals | TrackIR 5

Link to comment
Share on other sites

@LeCuvier: Thanks for your excellent posts.

 

I will be using the new bindings for a controller I made (see attached) which has two position and three position toggle switches as well as rotary encoders, buttons, rotary switches and axes.
 

The main functions I need are On/Off for the two position toggles.

 

I assume I should add any custom bindings to the joystick/default.lua file to make it work with the controller I have made ?

 

Could you please post an example of the canopy Open/Hold/Close so I can use it for one of  my three position toggles. 

 

thanks again. 
 

 

B95FD293-CED1-46E6-B007-1C3FB21952CD.jpeg


Edited by speedbird5
Link to comment
Share on other sites

Nice box, great work!

 

2 hours ago, speedbird5 said:

I assume I should add any custom bindings to the joystick/default.lua file to make it work with the controller I have made ?

 

Could you please post an example of the canopy Open/Hold/Close so I can use it for one of  my three position toggles. 

 

Yup, add them to the joystick/default.lua and, if you want them available as keyboard binds, keyboard/default.lua as well (maybe not in this case, but that's the pattern).

 

Here's bindings that should work with your switches. Be mindful of joystick/default.lua - there will be a group for axis commands at the bottom, you'll want to put these in the buttons block above that:

 

{down = 3001, cockpit_device_id = 75, value_down = 1.0, name = _('HMCS Power On'), category = _('HMCS Power')},
{down = 3001, up = 3001, cockpit_device_id = 75, value_down = 1.0, value_up = 0.0, name = _('HMCS Power On else Off'), category = _('HMCS Power')},
{down = 3001, cockpit_device_id = 75, value_down = 0.0, name = _('HMCS Power Off'), category = _('HMCS Power')},
{down = 3001, cockpit_device_id = 75, value_down = -1.0, name = _('HMCS Power Battery'), category = _('HMCS Power')},
{down = 3001, up = 3001, cockpit_device_id = 75, value_down = -1.0, value_up = 0.0, name = _('HMCS Power Battery else Off'), category = _('HMCS Power')},

{down = 3006, cockpit_device_id = 39, value_down = 1.0, name = _('Canopy Open'), category = _('Systems')},
{down = 3006, up = 3006, cockpit_device_id = 39, value_down = 1.0, value_up = 0.5, name = _('Canopy Open else Hold'), category = _('Systems')},
{down = 3006, cockpit_device_id = 39, value_down = 0.5,    name = _('Canopy Hold'), category = _('Systems')},
{down = 3006, cockpit_device_id = 39, value_down = -0.5,    name = _('Canopy Close'), category = _('Systems')},
{down = 3006, up = 3006, cockpit_device_id = 39, value_down = -0.5, value_up = 0.5, name = _('Canopy Close else Hold'), category = _('Systems')},

{down = 3010, up = 3010, cockpit_device_id = 39, value_down = -1.0, value_up = 1.0, name = _('Seat Arm Handle Armed else Off'), category = _('Systems')},
{down = 3010, up = 3010, cockpit_device_id = 39, value_down = 1.0, value_up = -1.0, name = _('Seat Arm Handle Off else Armed'), category = _('Systems')},

{down = 3016, up = 3016, cockpit_device_id = 36, value_down = -1.0, value_up = 1.0, name = _('Aerial Refueling Slipway Control Lever Open else Closed'), category = _('Fuel system control panel')},
{down = 3016, up = 3016, cockpit_device_id = 36, value_down = 1.0, value_up = -1.0, name = _('Aerial Refueling Slipway Control Lever Closed else Open'), category = _('Fuel system control panel')},

 

As others mentioned, in general, clickabledata.lua is the main file you'll want to look when wanting to expose a clickable control.

 

Example from there for Seat Arm Handle:

 

elements["PTR-ARM-SEAT-HANDLE"]   = default_2_position_tumb(_("Seat Arm Handle") , devices.CPT_MECH, device_commands.Button_10, 733)

 

The main code-related pieces there are the device, and the device command. 

 

For the device, in some modules you can just use the same reference, ex devices.CPT_MECH. At least for the A-10, you'll have to lookup the device in the Cockpit/Scripts/devices.lua and find the integer ID for it. That'll be your cockpit_device_id. 39 in this case.

 

Then for device command, as @LeCuvier mentioned, it will be the button number + 3000. You can find the reason in Cockpit\Scripts\command_defs.lua.. search for Button_10 like in the example, and above the object mapping the buttons is start_command = 3000, with each Button_x reference being start_command + x.


Edited by Monkwolf
  • Thanks 1
Link to comment
Share on other sites

@Monkwolf: That’s just brilliant. Thanks for the info. Much appreciated.

 

Can I ask the question why all these commands aren’t included by ED, and by default, as most controllers have two position switches which are On/Off. As we know, a toggle command such as “Landing Gear Toggle” can get out of sync with your physical toggle switches.

Link to comment
Share on other sites

4 minutes ago, speedbird5 said:

@Monkwolf: That’s just brilliant. Thanks for the info. Much appreciated.

 

Can I ask the question why all these commands aren’t included by ED, and by default, as most controllers have two position switches which are On/Off. As we know, a toggle command such as “Landing Gear Toggle” can get out of sync with your physical toggle switches.

 

You're welcome.

 

It'd be nice if things were a bit more standardized, but that can also be a tough thing to do. The LUA setup for devices and commands is real flexible, but with that comes different implementation styles. It's tough enough to enforce coding standards between coders on the same team, moreso across multiple teams.. and here we're dealing with 3rd party developers adding their own twist on implementations, too. On a pattern that's likely been extended but not rebuilt since the start. Trying to rebuild that means a lot of churn, which means a lot of bugs, and a lot of resources diverting away from other priorities.. when the community can get by. Not ideal, but I definitely understand it. I've been there.

Link to comment
Share on other sites

5 minutes ago, Monkwolf said:

 

You're welcome.

 

It'd be nice if things were a bit more standardized, but that can also be a tough thing to do. The LUA setup for devices and commands is real flexible, but with that comes different implementation styles. It's tough enough to enforce coding standards between coders on the same team, moreso across multiple teams.. and here we're dealing with 3rd party developers adding their own twist on implementations, too. On a pattern that's likely been extended but not rebuilt since the start. Trying to rebuild that means a lot of churn, which means a lot of bugs, and a lot of resources diverting away from other priorities.. when the community can get by. Not ideal, but I definitely understand it. I've been there.


OK.
 

Then could we perhaps have a pinned topic which aggregates the community’s efforts in relation to custom bindings as one file from which users could select the bindings they need as well as the excellent instructions provided by you and @LeCuvier as to how to implement them.

 

This could be a pinned topic in every aircraft forum.

  • Like 1
Link to comment
Share on other sites

Just now, Monkwolf said:

I'm actually working on that, at least in beginning stages. For whatever reason, I enjoy having every clickable thing mapped to my rig. Let me know if there's any other A-10 ones you'd like to see. They'll be a part of it.


Yes, one more.  Does the A-10 have a park brake as such or is it the emergency brake ?
 

Are there separate commands for Park Brake On / Park brake Off ?

Link to comment
Share on other sites

Note: I have created a thread on the subject in the General Tutorials subforum and posted a tutorial document there.

The link to the thread: https://forums.eagle.ru/topic/270080-lua-editing-for-additional-key-binds-tutorial-no-discussion-here-please/?tab=comments#comment-4646929

This would be a good place to post collections of added control bindings per aircraft.

@Monkwolf: I have produced a fair number of bindings for the A-10C II. Many of them duplicate what you have done, but probably not all. I post them here. Feel free to include in your collection what makes sense to you!
 

-- added HWF
{down = iCommandPlaneAHCPGUNPACArm, up = iCommandPlaneAHCPGUNSafe, name = _('GUN/PAC switch 3-Pos ARM/SAFE'), category = _('Armament HUD Control Panel')},
{down = iCommandPlaneAHCPGUNArm, up = iCommandPlaneAHCPGUNSafe,    name = _('GUN/PAC switch 3-Pos GUNARM/SAFE'), category = _('Armament HUD Control Panel')},
{down = iCommandPlaneAHCPLaserArm, up = iCommandPlaneAHCPLaserSafe, name = _('LASER switch 2-Pos ARM/SAFE'), category = _('Armament HUD Control Panel')},
{down = 3004, up = 3004, cockpit_device_id = 7, value_down = 1.0, value_up = -1.0, name = _('TGP switch 2-Pos ON/OFF'), category = _('Armament HUD Control Panel')},
{down = 3004, cockpit_device_id = 7, value_down = 1.0, name = _('TGP Power switch ON'), category = _('Armament HUD Control Panel')},
{down = 3004, cockpit_device_id = 7, value_down = -1.0, name = _('TGP Power switch OFF'), category = _('Armament HUD Control Panel')},
{down = iCommandPlaneAHCPIFFCCOn, up = iCommandPlaneAHCPIFFCCTest, name = _('IFFCC switch 2-Pos ON/TEST'), category = _('Armament HUD Control Panel')},
{down = iCommandPlaneAHCPMasterArm, up = iCommandPlaneAHCPMasterSafe,name = _('Master switch 3-Pos ARM/SAFE'), category = _('Armament HUD Control Panel')},
{down = iCommandPlaneAHCPMasterTrain, up = iCommandPlaneAHCPMasterSafe, name = _('Master switch 3-Pos TRAIN/SAFE'), category = _('Armament HUD Control Panel')},
{down = 3006, up = 3006, cockpit_device_id = 7 , value_down = 1.0, value_up = 0.0, name = _('AHCP HUD Mode 2-Pos DAY/NIGHT'), category = _('Armament HUD Control Panel')},

{down = 3007, up = 3007, cockpit_device_id = 49 , value_down = 1.0, value_up = 0.0, name = _('Emergency Flood Light 2-Pos DAY/NIGHT'), category = _('Electrical power control panel')},
{down = 3007, cockpit_device_id = 49 , value_down = 1.0, name = _('Emergency Flood Light DAY'), category = _('Electrical power control panel')},
{down = 3007, cockpit_device_id = 49 , value_down = 0.0, name = _('Emergency Flood Light NIGHT'), category = _('Electrical power control panel')},
{down = 3001, up = 3001, cockpit_device_id = 1 , value_down = 1.0, value_up = 0.0, name = _('APU Gen Power 2-Pos ON/OFF'), category = _('Electrical power control panel')},
{down = 3004, up = 3004, cockpit_device_id = 1 , value_down = 1.0, value_up = 0.0, name = _('AC Gen Left Power 2-Pos ON/OFF'), category = _('Electrical power control panel')},
{down = 3005, up = 3005, cockpit_device_id = 1 , value_down = 1.0, value_up = 0.0, name = _('AC Gen Right Power 2-Pos ON/OFF'), category = _('Electrical power control panel')},
{down = 3004, cockpit_device_id = 1 , value_down = 1.0, name = _('AC Gen Left Power ON'), category = _('Electrical power control panel')},
{down = 3004, cockpit_device_id = 1 , value_down = 0.0, name = _('AC Gen Left Power OFF'), category = _('Electrical power control panel')},
{down = 3005, cockpit_device_id = 1 , value_down = 1.0, name = _('AC Gen Right Power ON'), category = _('Electrical power control panel')},
{down = 3005, cockpit_device_id = 1 , value_down = 0.0, name = _('AC Gen Right Power OFF'), category = _('Electrical power control panel')},
{down = 3006, up = 3006, cockpit_device_id = 1 , value_down = 1.0, value_up = 0.0, name = _('Battery Power 2-Pos ON/OFF'), category = _('Electrical power control panel')},

{down = iCommandPlaneLGPLandLight, up = iCommandPlaneLGPLightsOff, name = _('Landing Lights ON/OFF'), category = _('Landing gear panel')},
{down = iCommandPlaneLGPTaxiLight, up = iCommandPlaneLGPLightsOff, name = _('Taxi Lights ON/OFF'), category = _('Landing gear panel')},
{down = 3029, pressed = 3029, cockpit_device_id = 38, value_down = 1.0, value_pressed = 0.0, name = _('Anti-Skid Button ON'), category = _('Landing gear panel')},
{down = 3028, pressed = 3028, cockpit_device_id = 38, value_down = 1.0, value_pressed = 0.0, name = _('Anti-Skid Button OFF'), category = _('Landing gear panel')},
{down = 3029, pressed = 3029,up = 3028, up = 3028, cockpit_device_id = 38, value_down = 1.0, value_pressed = 0.0, value_up = 1.0, value_up = 0.0, name = _('Anti-Skid 2-Pos ON/OFF'), category = _('Landing gear panel')}, -- heureka, this works!

{down = 3012, up = 3012, cockpit_device_id = 49, value_down = 1.0,    value_up = -1.0, name = _('Nose Light 2-Pos switch ON/OFF'), category = _('Lighting Panel')},
{down = 3004, up = 3004, cockpit_device_id = 49, value_down = 1.0,    value_up = -1.0, name = _('Accel & Compass Light 2-Pos Bright/DIM'), category = _('Lighting Panel')},
{down = 3013, up = 3013, cockpit_device_id = 49, value_down = 1.0,    value_up = -1.0, name = _('Signal Lights 2-Pos BRIGHT/DIM'), category = _('Lighting Panel')},
{down = iCommandPlanePositionLightsFlash, up = iCommandPlanePositionLightsOff, name = _('Position Lights FLASH/OFF'), category = _('Lighting Panel')},
{down = iCommandPlanePositionLightsSteady, up = iCommandPlanePositionLightsOff, name = _('Position Lights STEADY/OFF'), category = _('Lighting Panel')},

{down = 3001, up = 3001, cockpit_device_id = 75, value_down = 1.0,    value_up = 0.0, name = _('HMCS Power 2-Pos ON/OFF'), category = _('HMCS Power')},
{down = 3001, up = 3001, cockpit_device_id = 75, value_down = -1.0,    value_up = 0.0, name = _('HMCS Power 2-Pos BAT/OFF'), category = _('HMCS Power')},
{down = 3001, cockpit_device_id = 75, value_down = 1.0,    name = _('HMCS Power ON'), category = _('HMCS Power')},
{down = 3001, cockpit_device_id = 75, value_down = 0.0,    name = _('HMCS Power OFF'), category = _('HMCS Power')},
{down = 3001, cockpit_device_id = 75, value_down = -1.0,    name = _('HMCS Power BAT'), category = _('HMCS Power')},
{down = 3002, cockpit_device_id = 15, value_down = 1.0,    name = _('Elapsed Timer STRT/STP/RST'), category = _('Systems')},
{down = 3001, cockpit_device_id = 75, value_down = -1.0,    name = _('HMCS Power BAT'), category = _('HMCS Power')},
{down = 3010, cockpit_device_id = 39, value_down = 1.0,    name = _('Seat Arm Handle SAFE'), category = _('Systems')},
{down = 3010, cockpit_device_id = 39, value_down = -1.0, name = _('Seat Arm Handle ARM'), category = _('Systems')},
{down = 3010, up = 3010, cockpit_device_id = 39, value_down = -1.0, value_up = 1.0, name = _('Seat Arm Handle ARM 2-Pos ARM/SAFE'), category = _('Systems')},

{down = 3007, cockpit_device_id = 39, value_down = 0.0,    name = _('Canopy CLOSE'), category = _('Systems')},
{down = 3007, cockpit_device_id = 39, value_down = 1.0,    name = _('Canopy OPEN'), category = _('Systems')},
{down = 3007, cockpit_device_id = 39, value_down = 0.5, name = _('Canopy HOLD'), category = _('Systems')},
{down = 3007, up = 3007, cockpit_device_id = 39, value_down = 1.0, value_up = 0.5, name = _('Canopy OPEN/HOLD'), category = _('Systems')},-- for maintained 3-position switch (ON-OFF-ON)
{down = 3007, up = 3007, cockpit_device_id = 39, value_down = 0.0, value_up = 0.5, name = _('Canopy CLOSE/HOLD'), category = _('Systems')},-- for maintained 3-position switch (ON-OFF-ON)
{down = 3007, up = 3007, cockpit_device_id = 39, value_down = 1.0, value_up = 0.0, name = _('Canopy 2-Pos OPEN/CLOSE'), category = _('Systems')},-- for maintained ON/OFF switch

{down = 3016, up = 3016, cockpit_device_id = 36, value_down = -1.0, value_up = 1.0, name = _('Air Refuel Control Lever 2-Pos OPEN/CLOSED'), category = _('Fuel system control panel')},

 

  • Thanks 2

LeCuvier

Windows 10 Pro 64Bit | i7-4790 CPU |16 GB RAM|SSD System Disk|SSD Gaming Disk| MSI GTX-1080 Gaming 8 GB| Acer XB270HU | TM Warthog HOTAS | VKB Gladiator Pro | MongoosT-50 | MFG Crosswind Pedals | TrackIR 5

Link to comment
Share on other sites

I forgot to add this line:

{down = 300, name = _('Macro all internal Lights UP'), category = _('Cheat')},

You bind this command to a pushbutton and it turns all internal lights up. Very useful for missions starting in the dark.

ED has included this macro in the file "Macro_sequencies.lua" which also defines the aut-start and auto-stop macros, but forgot to include a binding in "default.lua".

  • Thanks 2

LeCuvier

Windows 10 Pro 64Bit | i7-4790 CPU |16 GB RAM|SSD System Disk|SSD Gaming Disk| MSI GTX-1080 Gaming 8 GB| Acer XB270HU | TM Warthog HOTAS | VKB Gladiator Pro | MongoosT-50 | MFG Crosswind Pedals | TrackIR 5

Link to comment
Share on other sites

Axes bindings for internal lights, for your knobs and dials.  Put them below the axisCommands line in the joystick\default.lua

 

{action = 3001, cockpit_device_id = 49, name = _('SM Engine Instruments Lights'), category = _('Lighting Panel')},
{action = 3002, cockpit_device_id = 49, name = _('SM Flight Instruments Lights'), category = _('Lighting Panel')},
{action = 3003, cockpit_device_id = 49, name = _('SM Aux Instruments Lights'), category = _('Lighting Panel')},
{action = 3005,	cockpit_device_id = 49, name = _('SM Floodlights'), category = _('Lighting Panel')},
{action = 3006, cockpit_device_id = 49, name = _('SM Console Lights'), category = _('Lighting Panel')},
{action = 3009, cockpit_device_id = 49, name = _('SM Formation Lights'), category = _('Lighting Panel')},

 

  • Thanks 1

PC: 5800X3D/4090, 11700K/3090, 9900K/2080Ti.

Joystick bases: TMW, VPC WarBRD, MT50CM2, VKB GFII, FSSB R3L

Joystick grips: TM (Warthog, F/A-18C), Realsimulator (F-16SGRH, F-18CGRH), VKB (Kosmosima LH, MCG, MCG Pro), VPC MongoosT50-CM2

Throttles: TMW, Winwing Super Taurus, Logitech Throttle Quadrant, Realsimulator Throttle (soon)

VR: HTC Vive/Pro, Oculus Rift/Quest 2, Valve Index, Varjo Aero, https://forum.dcs.world/topic/300065-varjo-aero-general-guide-for-new-owners/

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...