Forums » Technology » Flight Sim Controllers » T.A.R.G.E.T. (Thrustmaster) » New Warthog? Here's the TARGET tutorial I wish I'd had. Active Topics You are not logged in. [Log In] [Register User]
Topic Options
Rate This Topic
Hop to:
#3429294 - 11/08/11 02:23 PM New Warthog? Here's the TARGET tutorial I wish I'd had.
GregP Offline
Member

Registered: 01/15/01
Posts: 928
Loc: Fairfax, VA
I bought a Warthog in late September and it took me about a full week to get my TARGET profile up and running, as it took me some time to learn how to translate my "thinking in Foxy" into TARGET syntax. Since then, though, DCS was crashing on me every single time I ran it, anywhere from 5 to 30 minutes into a flight. I suspected it was due to my Warthog not being set up correctly and "flooding" DCS with keypresses, but it was only yesterday that I finally got it all worked out and the problem solved.

I figured it might be worthwhile to compile a bunch of the useful info that I've come across in learning about TARGET; if I'd had all this info in one place when I started, I could have saved an immense amount of time. While the official TARGET documentation is useful, I found that it inexplicably left out information that, for my uses at least, was absolutely critical to setting up a profile. If you plan on customizing your HOTAS layout for DCS using TARGET, I would highly recommend that you read its documentation first. After that, but before wasting hours trying to straighten out your confusion, come back here and re-read the info below. I should note that pretty much ALL of the info below comes from other people on this and the ED forums, people like ivanwfr, PeterP, etc. All I've done is gather it all together in one place.

Note that in the following, when I talk about using TARGET, I'm talking about using the Script Editor, not the GUI. Although the GUI is probably 'easier', the Script Editor makes it much easier to utilize the incredible flexibility and power of TARGET.

So here goes:

First and foremost, there seems to be a lot of confusion (myself included, at first) about the different usage options for the Warthog within DCS. They are as allows, in increasing order of complexity:

1. Pure plug-and-play, i.e. pure DirectX mode. The result of an impressive collaboration between Thrustmaster and ED, you can simply plug in the Warthog, completely forget about anything to do with TARGET, and when you start up DCS, "everything just works". All of the buttons and axes on both the joystick and throttle will automatically be assigned to their correct functions in-game. So if you want your Warthog to faithfully mimic the real A-10C HOTAS and not do anything else, this is the option for you.

Although convenient, this method also has the limitation that you cannot utilize 'shifted' button states on the Warthog. Similar to the Cougar, you can use a button such as S3 or S4 to act as your 'shift' toggle, enabling access to a second 'layer' of commands on top of the default 'unshifted' state, and you can also use a switch like the Speedbrake Switch to enable Up / Middle / Down states, which then adds a further two layers (giving a total of 6 possible layers of function assignments). These additional layers will NOT be available to use if you use option #1, however, because DCS does not by default recognize them.

Before going any further, it is important to understand the limitations of using a controller in pure DirectX mode. When DirectX sees a controller that you've plugged in, it will recognize a maximum of 32 buttons and 8 axes on that controller. These can be 'directly' used in-game and are often automatically set to perform certain default functions, e.g. Button1 = DX1 = fire guns. You can also manually assign them in-game in the controller properties page, e.g. click on "Fire guns" and then press Button1 on your controller.

But what happens if you have more than 32 buttons or 8 axes on a single controller? In that case, those 'extra' buttons/axes are not assigned DirectX names, and so from DirectX's perspective, they're not even there. However, you CAN pass keyboard assignments through those buttons/axes, provided you have some programming utility outside of the game (TARGET, Foxy, etc.) that can handle that. So, let's say you have a 33rd button on your joystick. By default, pressing this button in-game will do nothing, because DirectX doesn't see anything beyond 32 buttons. But if you've programmed that button from outside the game to represent, for example, 'G' for landing gear, now when you press that button in-game, the game simply sees 'G' and doesn't care where it came from.

So given all of the above, how does DCS manage this automatic assignment of HOTAS functions on your Warthog? DCS sees your Warthog as two separate devices -- joystick and throttle -- each with up to 32 buttons and 8 axes available. For every device that DCS detects, it creates a separate lua file in C:\Users\[name]\Saved Games\DCS Warthog\Config\Input\A-10C\joystick\, which lists every possible function available within the game, and it is these lua files that change when you manually assign a controller button or axis to a specific command via the in-game controller options. Specific to the Warthog, because DCS 'knows' that your Warthog button is supposed to correspond to a specific function, it automatically assigns the button to do that in the lua file.

Here's an example:

In the Joystick.lua file, if you were using a stick other than the Warthog, you'd see this entry:

Code:
[158] = 
        {
            ["up"] = 351,
            ["name"] = "Weapon release",
            ["category"] = "HOTAS",
            ["down"] = 350,
        }, -- end of [158]


Nevermind the actual numbers (158, 350, 351); what this is showing you is that DCS has a command available called "Weapon release", but that no button on this controller has currently been assigned to it.

If you have a Warthog plugged in, though, you'll see this in your Joystick - HOTAS Warthog.lua file:

Code:
[158] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN2",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 351,
            ["name"] = "Weapon release",
            ["category"] = "HOTAS",
            ["down"] = 350,
        }, -- end of [158]


And this is now showing you that Button2 on the joystick (=DX2) has been automatically bound to the "Weapon release" function; DCS already knows that DX2 on a Warthog joystick is supposed to activate the "Weapon release" function. DCS follows this logic for all the other assignments on the Warthog, and that's how it "just works" when you plug it in for the first time: it will automatically assign the 19 buttons (+POV hat+2 axes) on the joystick and 32 buttons (+POV hat+axes) on the throttle to their appropriate commands within DCS.

2. Plug-and-play with some in-game assignment changes. This one is almost identical to #1 except that now instead of just using all the default controller assignments that DCS has set for your Warthog, you then go into the controller options screen and manually change some of the assignments. You still don't need TARGET or need to muck around with lua files, but again you're going to be limited to only using unshifted button states on your Warthog.

3. Using either joystick or throttle as plug-and-play device, with the other programmed via TARGET. Although I can't readily think of why you'd want to do this, it is possible. This would allow you to have one controller operating as a pure DirectX device (i.e. no shifted states available, and with the 32/8 limitation) with the other being controlled through TARGET and acting as a pure keyboard-emulation device or hybrid DirectX/keyboard-emulation device. In this case, you need to EXCLUDE the 'DirectX-only' controller from your TARGET profile with a line like:

Code:
Configure(&Throttle,MODE_EXCLUDED);


Note that this is also how you exclude your Thrustmaster MFDs, if you have them and want to assign them in-game rather than thru TARGET. In that case you'd use:

Code:
Configure(&LMFD,MODE_EXCLUDED);
Configure(&RMFD,MODE_EXCLUDED);


4. Using both devices through TARGET. This is by far the most flexible and powerful option, and was the way I wanted to go because I knew that even though I wanted the majority of my Warthog's buttons and axes to be assigned realistically, I wanted to customize some of the buttons on both the joystick and throttle beyond what could be done via the in-game controller options.

If you go this route, you're going to have to work on the lua file itself in addition to your TARGET profile. When you set up and run your TARGET profile, DCS is now going to see your Warthog as a 'virtual' controller called "Thrustmaster Combined". Apparently this creates some problems because, while DCS still tries to automatically assign functions to your HOTAS in-game, this can conflict with what you're telling TARGET to do. The result is that you need to make sure your TARGET profile and Thrustmaster Combined.lua files are coordinated (more on that below).

Here's a very important point (first made by ivanwfr): for some reason, if you try to assign actual keypresses to the buttons on your throttle via TARGET (as opposed to simply letting them act as DirectX buttons that can be bound in-game), DCS often has trouble interpreting them correctly and may unintentionally hold them down, so to speak, such that DCS ends up getting 'flooded' by excess keypresses that will eventually crash it. Frustratingly, these 'excess' keypresses are invisible to any keypress analyzers (like TARGET's Event Analyzer) so you won't necessarily know that this is what is crashing your game.

The solution, then, is to try to keep as many of the throttle's buttons and axes operating as DirectX buttons/axes as possible. Thus you must present these buttons as DX buttons to DCS. You can do this in TARGET by simply 'declaring' the correspondence between physical button and DX number, like the following:

Code:
MapKey(&Throttle,FLAPU,DX22);
MapKey(&Throttle,FLAPD,DX23);


And for any buttons or axes on the throttle that you want to assign a more complicated function, you can do that without messing up the other buttons being simple DX buttons. Here's an example that toggles a 'zoom CDU' function on the Mic Switch Down [shifted] button, with the unshifted simply appearing to DCS as DX5, which can then be assigned a function in-game (or via the lua file, which is the same thing):

Code:
MapKeyIO(&Throttle,MSD,SEQ(CHAIN(PULSE+Toggle_zoom,D(150),PULSE+Zoom_CDU),Toggle_zoom),DX5);


But, as I said, you'll want to minimize the use of assignments like the above on the throttle; if at all possible, you should use as many of the allowed 32 DirectX buttons and 8 axes on the throttle and then assign them in-game (i.e. via the lua file). Note that when explicitly passing DX buttons to DCS via TARGET, you now can use shifted states on these buttons, because you're defining the shifted assignment through TARGET (see above example).

At this point it probably makes sense to list the correspondence of DirectX button name with physical button name (inexplicably, this does not appear in the TARGET documentation anywhere!). Note, again, however, that these codes cannot be used together at the same time inside of TARGET, because you're only allowed a total of 32 buttons and 8 axes on your virtual "Combined" controller. The main use for the first list (the 19 DX buttons on the joystick) would be for option #3 above where you make use of the joystick from within TARGET (presumably using a combination of DirectX button assignments and keypress emulation commands) but allow the throttle to "just work" by EXCLUDing it from your TARGET profile and letting DCS see it as a pure DirectX controller.

The second list (the 32 DX buttons on the throttle), however, is useful for most people who would use option #4, combining both controllers in TARGET but keeping most throttle buttons as DX buttons. Note that, if you could somehow create a TARGET profile that included the joystick and throttle as separate DX controllers with all of the assignments below, you'd get the exact same result as option #1 where you simply plug the Warthog in and it "just works" -- because DCS would simply see two separate controllers that are pure DX devices, and it would recognize that it should assign specific DX buttons on each to specific functions in-game.

Joystick:
TG1 = DX1
TG2 = DX6
S1 = DX5
S2 = DX2
S3 = DX3
S4 = DX4

Trim Control
H1U = DXHATUP
H1D = DXHATDOWN
H1L = DXHATLEFT
H1R = DXHATRIGHT

TMS
H2U = DX7
H2D = DX9
H2L = DX10
H2R = DX8

DMS
H3U = DX11
H3D = DX13
H3L = DX14
H3R = DX12

CMS
H4U = DX15
H4D = DX17
H4L = DX18
H4R = DX16
H4P (Hat4 pressed down) = DX19

Throttle:
Slew Control
SC (slew control button pressed in) = DX1

Mic Switch
MSP (mic switch button pressed in) = DX2
MSU = DX3
MSR = DX4
MSD = DX5
MSL = DX6

Speedbrake Switch
SPDF = DX7
SPDB = DX8

Boat Switch
BSF = DX9
BSB = DX10

China Hat
CHF = DX11
CHB = DX12

Pinky Switch
PSF = DX13
PSB = DX14

Left Throttle Button
LTB = DX15

Engine Fuel Flow Norm/Override Switches
EFLNORM = DX16
EFRNORM = DX17

Engine Oper Motor/Norm Switches
EOLMOTOR = DX18
EORMOTOR = Dx19

APU Start/Off Switch
APUON = DX20

Landing Gear Warning Silence
LDGH = DX21

Flaps
FLAPU = DX22
FLAPD = DX23

EAC On/Off
EACON = DX24

RDR/NORM
RDRNRM = DX25

LAAP Autopilot Switches
APENG = DX26
APPAT = DX27
APALT = DX28

Throttle Idle Detents
IDLERON = DX29
IDLELON = DX30

Engine Oper Ign/Norm
EOLIGN = DX31
EORIGN = DX32

Coolie Switch
CSU = DXHATUP
CSR = DXHATRIGHT
CSD = DXHATDOWN
CSL = DXHATLEFT

Continued below...


Edited by GregP (11/08/11 09:40 PM)
_________________________
i5-2500K @ 4.8 GHz / Asus P8P67 Pro / 12GB DDR3-1600 / Radeon R9 290 4GB / Sound Blaster Z / Windows 7 Pro 64-bit / TrackIR5 / MFG Crosswind Rudder Pedals / Thrustmaster HOTAS Warthog + MFDs / CH Products Throttle Quadrant / X-Keys XK-80 / X-Keys Professional / Seiki 55" 4K TV

Top
#3429298 - 11/08/11 02:25 PM Re: New Warthog? Here's the TARGET tutorial I wish I'd had. [Re: GregP]
GregP Offline
Member

Registered: 01/15/01
Posts: 928
Loc: Fairfax, VA
I'll now post my current TARGET configuration; this uses keypress emulations on all of the joystick buttons (as opposed to DX assignments) but leaves most throttle buttons as DX buttons, allowing the latter to be assigned in-game:

Code:

include "target.tmh" //here we link this file to the file that contains the default Thrustmaster function code 
include "DCSA10Cv2.ttm"

int main() 
{ 

Configure(&LMFD,MODE_EXCLUDED); 
Configure(&RMFD,MODE_EXCLUDED);
    
if(Init(&EventHandle)) return 1; // declare the event handler, return on error  
 
//script and function functions go here and before the } 

// shift button
SetShiftButton(&Joystick,S3);

// set pulse and delay lengths
SetKBRate(50,100);

//////////////////////////////////////////////////////////////////////////////////
// Joystick and Throttle Axis Definitions
//////////////////////////////////////////////////////////////////////////////////

MapAxis(&Joystick, JOYX, DX_X_AXIS); 
MapAxis(&Joystick, JOYY, DX_Y_AXIS); 
MapAxis(&Throttle, THR_LEFT, DX_ZROT_AXIS); 
MapAxis(&Throttle, THR_RIGHT, DX_Z_AXIS); 

// Uncomment following two lines if you want Slew Control axes available in-game
MapAxis(&Throttle, SCX, DX_XROT_AXIS); 
MapAxis(&Throttle, SCY, DX_YROT_AXIS);  

// For now, don't do anything with the Slew Control pressed in
MapKey(&Throttle,SC,0);

// Assign zoom control to gray throttle friction lever
KeyAxis(&Throttle,THR_FC,0,AXMAP2(LIST(0,40,60,100),Zoom_in_slow,0,Zoom_out_slow));

////////////////////////////////////////////////////////////////////////////////////
// Joystick Button Definitions
////////////////////////////////////////////////////////////////////////////////////

MapKey(&Joystick,TG1,Gun_trigger_first_stage);
MapKey(&Joystick,TG2,Gun_trigger);
MapKeyIO(&Joystick,S1,Reset_trimmers,HOTAS_Master_Mode_Control_Button);
MapKeyIO(&Joystick,S2,TIR_center,Weapon_release);
MapKeyIO(&Joystick,S4,Eject,HOTAS_nosewheel_steering_button);

MapKey(&Joystick,H1U,Trim_nose_down);
MapKey(&Joystick,H1D,Trim_nose_up);
MapKey(&Joystick,H1L,Trim_aileron_left);
MapKey(&Joystick,H1R,Trim_aileron_right);

MapKeyIO(&Joystick,H2U,Aircraft_view,HOTAS_TMS_up);
MapKeyIO(&Joystick,H2D,Cockpit_view,HOTAS_TMS_down);
MapKeyIO(&Joystick,H2L,Flyby_view,HOTAS_TMS_left);
MapKeyIO(&Joystick,H2R,Chase_view,HOTAS_TMS_right);

MapKeyIO(&Joystick,H3U,Screenshot,HOTAS_DMS_up);
MapKeyIO(&Joystick,H3D,Quit,HOTAS_DMS_down);
MapKeyIO(&Joystick,H3L,Pause,HOTAS_DMS_left);
MapKeyIO(&Joystick,H3R,Active_pause,HOTAS_DMS_right);

MapKeyIO(&Joystick,H4U,SEQ(CHAIN(PULSE+Toggle_zoom,D(150),PULSE+Zoom_fwd_left_console),Toggle_zoom),HOTAS_CMS_forward);
MapKeyIO(&Joystick,H4D,SEQ(CHAIN(PULSE+Toggle_zoom,D(150),PULSE+Zoom_NMSP),Toggle_zoom),HOTAS_CMS_aft);
MapKeyIO(&Joystick,H4L,SEQ(CHAIN(PULSE+Toggle_zoom,D(150),PULSE+Zoom_left_console),Toggle_zoom),HOTAS_CMS_left);
MapKeyIO(&Joystick,H4R,SEQ(CHAIN(PULSE+Toggle_zoom,D(150),PULSE+Zoom_right_console),Toggle_zoom),HOTAS_CMS_right);

//////////////////////////////////////////////////////////////////////////////////////
// Throttle Button Definitions
//////////////////////////////////////////////////////////////////////////////////////

MapKeyIO(&Throttle,MSU,SEQ(CHAIN(PULSE+Toggle_zoom,D(150),PULSE+Zoom_HUD),Toggle_zoom),VAC_comms);
MapKeyIO(&Throttle,MSD,SEQ(CHAIN(PULSE+Toggle_zoom,D(150),PULSE+Zoom_CDU),Toggle_zoom),DX5);
MapKeyIO(&Throttle,MSL,TIR_enable,DX6);
MapKeyIO(&Throttle,MSR,SEQ(CHAIN(PULSE+Toggle_zoom,D(150),PULSE+Zoom_radios),Toggle_zoom),DX4);
MapKey(&Throttle,MSP,DX2);

MapKey(&Throttle,SPDB,DX8);
MapKey(&Throttle,SPDF,DX7);

MapKey(&Throttle,BSB,DX10);
MapKey(&Throttle,BSF,DX9);

MapKey(&Throttle,CHB,DX12);
MapKey(&Throttle,CHF,DX11);

MapKey(&Throttle,PSB,DX14);
MapKey(&Throttle,PSF,DX13);

MapKeyIO(&Throttle,LTB,Toggle_zoom,DX15);

MapKey(&Throttle,CSU,DXHATUP);
MapKey(&Throttle,CSD,DXHATDOWN);
MapKey(&Throttle,CSL,DXHATLEFT);
MapKey(&Throttle,CSR,DXHATRIGHT);

MapKey(&Throttle,EFLNORM,DX16);
MapKey(&Throttle,EFRNORM,DX17);
MapKey(&Throttle,EOLMOTOR,DX18);
MapKey(&Throttle,EORMOTOR,DX19);
MapKey(&Throttle,APUON,DX20);
MapKey(&Throttle,LDGH,DX21);
MapKey(&Throttle,FLAPU,DX22);
MapKey(&Throttle,FLAPD,DX23);
MapKey(&Throttle,EACON,DX24);
MapKey(&Throttle,RDRNRM,DX25);
MapKey(&Throttle,APENG,DX26);
MapKey(&Throttle,APPAT,DX27);
MapKey(&Throttle,APALT,DX28);
MapKey(&Throttle,IDLELON,DX29);
MapKey(&Throttle,IDLERON,DX30);
MapKey(&Throttle,EOLIGN,DX31);
MapKey(&Throttle,EORIGN,DX32);

} 
 
int EventHandle(int type, alias o, int x) 
{ 
DefaultMapping(&o, x); 
} 


The last remaining step is to ensure coordination between the TARGET profile and the "Thrustmaster Combined.lua" file that DCS will create when you first run DCS. The problem is the contradiction that you choose to use TARGET specifically because you want some functionality beyond the automatic assignments that DCS will make when it detects you have a Warthog ... but DCS doesn't know this, and so still automatically assigns all the commands in the lua file, which may now conflict with the assignments you've made in TARGET.

The way around this is to check that all of your DX button declarations in TARGET are being assigned to commands in the lua file, but that your other button assignments in TARGET do not appear in the lua file. This process can be simplified when you realize that the lua ONLY needs to have the actual commands that your joystick+throttle are directly (i.e. by using DX buttons/axes) calling. You can safely delete every unused function in the lua file (and there are hundreds of them), leaving you with the likely 10-32 functions that you DO directly call. This makes it easier to read and to ensure you only have the needed commands in there.

For completeness, I'll include my Thrustmaster Combined.lua file here:

Code:
options = 
{
    ["keyCommands"] = 
    {
        [178] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN_POV1_U",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 543,
            ["name"] = "HOTAS Coolie Switch Up",
            ["category"] = "HOTAS",
            ["down"] = 539,
        }, -- end of [178]
        [179] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN_POV1_D",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 543,
            ["name"] = "HOTAS Coolie Switch Down",
            ["category"] = "HOTAS",
            ["down"] = 540,
        }, -- end of [179]
        [180] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN_POV1_L",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 543,
            ["name"] = "HOTAS Coolie Switch Left",
            ["category"] = "HOTAS",
            ["down"] = 541,
        }, -- end of [180]
        [181] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN_POV1_R",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 543,
            ["name"] = "HOTAS Coolie Switch Right",
            ["category"] = "HOTAS",
            ["down"] = 542,
        }, -- end of [181]
		[182] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN10",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 565,
            ["name"] = "HOTAS Boat Switch Aft",
            ["category"] = "HOTAS",
            ["down"] = 564,
        }, -- end of [182]
        [183] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN9",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 565,
            ["name"] = "HOTAS Boat Switch Forward",
            ["category"] = "HOTAS",
            ["down"] = 563,
        }, -- end of [183]
        [184] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN12",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 589,
            ["name"] = "HOTAS China Hat Aft",
            ["category"] = "HOTAS",
            ["down"] = 567,
        }, -- end of [184]
        [185] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN11",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 589,
            ["name"] = "HOTAS China Hat Forward",
            ["category"] = "HOTAS",
            ["down"] = 566,
        }, -- end of [185]
        [186] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN15",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 1557,
            ["name"] = "HOTAS Left Throttle Button",
            ["category"] = "HOTAS",
            ["down"] = 571,
        }, -- end of [186]
        [189] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN8",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 579,
            ["name"] = "HOTAS Speed Brake Switch Aft",
            ["category"] = "HOTAS",
            ["down"] = 578,
        }, -- end of [189]
        [190] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN7",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 579,
            ["name"] = "HOTAS Speed Brake Switch Forward",
            ["category"] = "HOTAS",
            ["down"] = 577,
        }, -- end of [190]
        [191] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN14",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 570,
            ["name"] = "HOTAS Pinky Switch Aft",
            ["category"] = "HOTAS",
            ["down"] = 569,
        }, -- end of [191]
        [192] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN13",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 570,
            ["name"] = "HOTAS Pinky Switch Forward",
            ["category"] = "HOTAS",
            ["down"] = 568,
        }, -- end of [192]
        [193] = 
        {
            ["up"] = 576,
            ["name"] = "HOTAS MIC Switch Up",
            ["category"] = "HOTAS",
            ["down"] = 572,
        }, -- end of [193]
        [194] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN5",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 576,
            ["name"] = "HOTAS MIC Switch Down",
            ["category"] = "HOTAS",
            ["down"] = 573,
        }, -- end of [194]
        [195] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN6",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 576,
            ["name"] = "HOTAS MIC Switch Aft",
            ["category"] = "HOTAS",
            ["down"] = 574,
        }, -- end of [195]
        [196] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN4",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 576,
            ["name"] = "HOTAS MIC Switch Forward",
            ["category"] = "HOTAS",
            ["down"] = 575,
        }, -- end of [196]
        [237] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN30",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 311,
            ["name"] = "Left Engine Throttle Set OFF",
            ["category"] = "Systems",
            ["down"] = 313,
        }, -- end of [237]
        [238] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN29",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 312,
            ["name"] = "Right Engine Throttle Set OFF",
            ["category"] = "Systems",
            ["down"] = 314,
        }, -- end of [238]
        [239] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN22",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 1048,
            ["name"] = "Toggle Flaps Up",
            ["category"] = "Systems",
            ["down"] = 1047,
        }, -- end of [239]
        [240] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN23",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 1048,
            ["name"] = "Toggle Flaps Dn",
            ["category"] = "Systems",
            ["down"] = 1049,
        }, -- end of [240]
        [248] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN26",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 62,
            ["name"] = "LAAP Engage/Disengage",
            ["category"] = "LASTE Control Panel",
            ["down"] = 62,
        }, -- end of [248]
        [249] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN27",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 636,
            ["name"] = "LAAP Mode Selector (PATH)",
            ["category"] = "LASTE Control Panel",
            ["down"] = 637,
        }, -- end of [249]
        [250] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN28",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 636,
            ["name"] = "LAAP Mode Selector (ALT)",
            ["category"] = "LASTE Control Panel",
            ["down"] = 387,
        }, -- end of [250]
        [251] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN24",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 1051,
            ["name"] = "EAC Arm/Off",
            ["category"] = "LASTE Control Panel",
            ["down"] = 1050,
        }, -- end of [251]
        [252] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN25",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 1053,
            ["name"] = "RDR ALTM Normal/Disable",
            ["category"] = "LASTE Control Panel",
            ["down"] = 1052,
        }, -- end of [252]
        [253] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN21",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 1054,
            ["name"] = "Landing Gear Warning Silence",
            ["category"] = "Engine Control Panel",
            ["down"] = 1054,
        }, -- end of [253]
        [254] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN20",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 1056,
            ["name"] = "APU Start/Off",
            ["category"] = "Engine Control Panel",
            ["down"] = 1055,
        }, -- end of [254]
        [255] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN31",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 1058,
            ["name"] = "Left Engine Oper Ign / Norm",
            ["category"] = "Engine Control Panel",
            ["down"] = 1057,
        }, -- end of [255]
        [256] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN18",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 1058,
            ["name"] = "Left Engine Oper Motor / Norm",
            ["category"] = "Engine Control Panel",
            ["down"] = 1059,
        }, -- end of [256]
        [257] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN32",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 1061,
            ["name"] = "Right Engine Oper Ign / Norm",
            ["category"] = "Engine Control Panel",
            ["down"] = 1060,
        }, -- end of [257]
        [258] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN19",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 1061,
            ["name"] = "Right Engine Oper Motor / Norm",
            ["category"] = "Engine Control Panel",
            ["down"] = 1062,
        }, -- end of [258]
        [259] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN16",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 1064,
            ["name"] = "Left Engine Fuel Flow Norm/Override",
            ["category"] = "Engine Control Panel",
            ["down"] = 1063,
        }, -- end of [259]
        [260] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_BTN17",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["up"] = 1066,
            ["name"] = "Right Engine Fuel Flow Norm/Override",
            ["category"] = "Engine Control Panel",
            ["down"] = 1065,
        }, -- end of [260]
    }, -- end of ["keyCommands"]
    ["forceFeedback"] = 
    {
        ["trimmer"] = 1,
        ["swapAxes"] = false,
        ["shake"] = 0.5,
    }, -- end of ["forceFeedback"]
    ["axisCommands"] = 
    {
        [1] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_X",
                    ["reformers"] = 
                    {
                    }, -- end of ["reformers"]
                }, -- end of [1]
            }, -- end of ["combos"]
            ["action"] = 2002,
            ["name"] = "Roll",
            ["category"] = "Axis Commands",
        }, -- end of [1]
        [2] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_Y",
                    ["reformers"] = 
                    {
                    }, -- end of ["reformers"]
                }, -- end of [1]
            }, -- end of ["combos"]
            ["action"] = 2001,
            ["name"] = "Pitch",
            ["category"] = "Axis Commands",
        }, -- end of [2]
        [12] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_RZ",
                    ["reformers"] = 
                    {
                    }, -- end of ["reformers"]
                }, -- end of [1]
            }, -- end of ["combos"]
            ["action"] = 2005,
            ["name"] = "Throttle Left",
            ["category"] = "Axis Commands",
        }, -- end of [12]
        [13] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_Z",
                    ["reformers"] = 
                    {
                    }, -- end of ["reformers"]
                }, -- end of [1]
            }, -- end of ["combos"]
            ["action"] = 2006,
            ["name"] = "Throttle Right",
            ["category"] = "Axis Commands",
        }, -- end of [13]
		[18] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_RY",
                    ["reformers"] = 
                    {
                    }, -- end of ["reformers"]
                }, -- end of [1]
            }, -- end of ["combos"]
            ["action"] = 2034,
            ["name"] = "HOTAS Slew Vertical",
            ["category"] = "Axis Commands",
        }, -- end of [18]
        [17] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "JOY_RX",
                    ["reformers"] = 
                    {
                    }, -- end of ["reformers"]
                }, -- end of [1]
            }, -- end of ["combos"]
            ["action"] = 2033,
            ["name"] = "HOTAS Slew Horizontal",
            ["category"] = "Axis Commands",
        }, -- end of [17]G
    }, -- end of ["axisCommands"]
} -- end of options
function layout()
return options
end


And with that, I'll wrap up this already way-too-long post. I'm not so sure this is as clear as I'd intended, but nonetheless I hope some new TARGET users find it useful. I know I sure would have!


Edited by GregP (11/08/11 06:12 PM)
_________________________
i5-2500K @ 4.8 GHz / Asus P8P67 Pro / 12GB DDR3-1600 / Radeon R9 290 4GB / Sound Blaster Z / Windows 7 Pro 64-bit / TrackIR5 / MFG Crosswind Rudder Pedals / Thrustmaster HOTAS Warthog + MFDs / CH Products Throttle Quadrant / X-Keys XK-80 / X-Keys Professional / Seiki 55" 4K TV

Top
#3928384 - 03/22/14 01:30 AM Re: New Warthog? Here's the TARGET tutorial I wish I'd had. [Re: GregP]
WWSandMan Offline
WW: Online Since 1992
Member

Registered: 05/16/02
Posts: 2290
Loc: N. Mankato, Minnesota, U.S.A.
Just adding a "thank you" for the information above. I've found it to be quite useful, even 2+ years after the original posting. smile
_________________________
Administration Officer
Wing Walkers (virtual) Combat Squadron

Top
#3928431 - 03/22/14 06:32 AM Re: New Warthog? Here's the TARGET tutorial I wish I'd had. [Re: GregP]
Paradaz Offline
Member

Registered: 03/20/03
Posts: 2297
Loc: Andover, UK
I'll second that.......A great post and very clear. Hugely helpful, thanks.
_________________________
On the Eighth day God created Paratroopers and the Devil stood to attention.

Top
#3929043 - 03/23/14 09:51 PM Re: New Warthog? Here's the TARGET tutorial I wish I'd had. [Re: GregP]
TigerL0rd Offline
Junior Member

Registered: 02/04/14
Posts: 27
Loc: Quebec
that was very useful, thanks!

Top
#3977666 - 07/07/14 02:54 PM Re: New Warthog? Here's the TARGET tutorial I wish I'd had. [Re: GregP]
maestro72x Offline
Junior Member

Registered: 07/04/14
Posts: 2
any ideas on how to map the TDC slew to the throttle mini joystick?

Top
#3983864 - 07/21/14 09:36 AM Re: New Warthog? Here's the TARGET tutorial I wish I'd had. [Re: GregP]
NavyNuke99 Offline
One Man Wolfpack
Senior Member

Registered: 01/04/09
Posts: 4510
Loc: Raleigh, NC
Maestro, if you're talking about in DCS: World, that'll be under the axis options... I'll look at exactly which options they're called when I get home this evening.
_________________________
" And any man who may be asked in this century what he did to make his life worthwhile, I think can respond with a good deal of pride and satisfaction: 'I served in the United States Navy.'"- John F. Kennedy

"NUKE-ular. It's pronounced NUKE-ular."- Homer Simpson

AMD FX-8350 Vishera @ 4.0 Ghz
ASUS Sabertooth 990FX R2.0
2x 8GB Corsair Vengeance DDR3 @ 1600
Sapphire Radeon HD 7850 2GB
CM Storm Series Trooper
Samsung 840 series 500 GB OS/ Game drive
WD Green 2TB Media Drive
Thermaltake Black Widow 850W PSU

Top
Topic Options
Rate This Topic
Hop to:

Moderator:  RacerGT 
 
Quick Search
Recent Articles
Support SimHQ
.
Social


Recent Topics
Assetto Corsa - Bellissima
by Security_Device_Enclosed
Today at 05:57 AM
battlestar galactica final episode questions
by bogusheadbox
Today at 04:59 AM
Bell 412 landing in Solomon Islands
by SteveHarris
Today at 01:43 AM
Automata (2014) film
by Patrocles
Yesterday at 07:35 PM
Character wipe .49?
by Stormtrooper
Yesterday at 06:32 PM
He 111 cockpit screens
by Sokol1
Yesterday at 05:45 PM
Band of Brothers
by PanzerMeyer
Yesterday at 03:38 PM
Warthog on the way
by Rumpelhardt
Yesterday at 02:51 PM
My anaconda don't want none -
by letterboy1
Yesterday at 02:50 PM
A2A P-51D JANIE uploaded
by Tom_Weiss
Yesterday at 02:17 PM
 

Forum Use Agreement | Privacy Statement
Copyright 1997-2014, SimHQ Inc. All Rights Reserved.