#3429294 - 11/08/11 07:23 PM
New Warthog? Here's the TARGET tutorial I wish I'd had.
|
Joined: Jan 2001
Posts: 960
GregP
Member
|
Member
Joined: Jan 2001
Posts: 960
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:
[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:
[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:
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:
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:
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):
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 ControlH1U = DXHATUP H1D = DXHATDOWN H1L = DXHATLEFT H1R = DXHATRIGHT TMSH2U = DX7 H2D = DX9 H2L = DX10 H2R = DX8 DMSH3U = DX11 H3D = DX13 H3L = DX14 H3R = DX12 CMSH4U = DX15 H4D = DX17 H4L = DX18 H4R = DX16 H4P (Hat4 pressed down) = DX19 Throttle:Slew ControlSC (slew control button pressed in) = DX1 Mic SwitchMSP (mic switch button pressed in) = DX2 MSU = DX3 MSR = DX4 MSD = DX5 MSL = DX6 Speedbrake SwitchSPDF = DX7 SPDB = DX8 Boat SwitchBSF = DX9 BSB = DX10 China HatCHF = DX11 CHB = DX12 Pinky SwitchPSF = DX13 PSB = DX14 Left Throttle ButtonLTB = DX15 Engine Fuel Flow Norm/Override SwitchesEFLNORM = DX16 EFRNORM = DX17 Engine Oper Motor/Norm SwitchesEOLMOTOR = DX18 EORMOTOR = Dx19 APU Start/Off SwitchAPUON = DX20 Landing Gear Warning SilenceLDGH = DX21 FlapsFLAPU = DX22 FLAPD = DX23 EAC On/OffEACON = DX24 RDR/NORMRDRNRM = DX25 LAAP Autopilot SwitchesAPENG = DX26 APPAT = DX27 APALT = DX28 Throttle Idle DetentsIDLERON = DX29 IDLELON = DX30 Engine Oper Ign/NormEOLIGN = DX31 EORIGN = DX32 Coolie SwitchCSU = DXHATUP CSR = DXHATRIGHT CSD = DXHATDOWN CSL = DXHATLEFT Continued below...
Last edited by GregP; 11/09/11 02:40 AM.
i7-9700K / MSI MPG Z390 Gaming PRO Carbon AC / 64GB DDR4 / RTX 3080 Ti / TrackIR5 / MFG Crosswind Rudder Pedals / VKB GF MkIII + MCG Pro
|
|
#3429298 - 11/08/11 07:25 PM
Re: New Warthog? Here's the TARGET tutorial I wish I'd had.
[Re: GregP]
|
Joined: Jan 2001
Posts: 960
GregP
Member
|
Member
Joined: Jan 2001
Posts: 960
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:
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:
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!
Last edited by GregP; 11/08/11 11:12 PM.
i7-9700K / MSI MPG Z390 Gaming PRO Carbon AC / 64GB DDR4 / RTX 3080 Ti / TrackIR5 / MFG Crosswind Rudder Pedals / VKB GF MkIII + MCG Pro
|
|
#3983864 - 07/21/14 01:36 PM
Re: New Warthog? Here's the TARGET tutorial I wish I'd had.
[Re: GregP]
|
Joined: Jan 2009
Posts: 5,699
NavyNuke99
One Man Wolfpack
|
One Man Wolfpack
Hotshot
Joined: Jan 2009
Posts: 5,699
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
|
|
#4571063 - 06/05/21 03:37 PM
Re: New Warthog? Here's the TARGET tutorial I wish I'd had.
[Re: GregP]
|
Joined: Jul 2013
Posts: 1
HorNet505
Junior Member
|
Junior Member
Joined: Jul 2013
Posts: 1
germany, Dusseldorf
|
hey Greg I seem to miss something. I got the grey throttle lever as an axis but I don'T know how to assign it in DCS right now. Your old code thows back an error, I guess he doesn't like the "Zoom_in_slow" alias, used.
// 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));
|
|
#4571084 - 06/05/21 09:50 PM
Re: New Warthog? Here's the TARGET tutorial I wish I'd had.
[Re: HorNet505]
|
Joined: Jul 2016
Posts: 61
Drakoz
Junior Member
|
Junior Member
Joined: Jul 2016
Posts: 61
|
hey Greg I seem to miss something. I got the grey throttle lever as an axis but I don'T know how to assign it in DCS right now. Your old code thows back an error, I guess he doesn't like the "Zoom_in_slow" alias, used.
// 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)); HorNet505, you have to assign Zoom_out_slow as a macro somewhere in your .ttm file. But I think (based on your comments) you know that. Is there an issue with the way Zoom_out_slow is defined? GregP would have defined this is his DCSA10Cv2.ttm file, but he did not include that file in his examples above. So if you haven't created a macro for Zoom_out_slow, you will get an error. It should be something like this: define Zoom_out_slow 'a' Where the letter a will be pressed when Zoom_out_slow is called. But I think I am missing what the actual issue you are having is, so please clarify.
|
|
|
|
|
|
Exodus
by RedOneAlpha. 04/18/24 05:46 PM
|
|
|
|
|
|
|
|