Guide / Tutorial Get your Basic TARGET Script - PIPs and Curves here.

Hi all,

I've read a few forum threads over the last couple years about how hard TARGET Script is to either learn or get working.
Yes...it is not an easy thing and does require some time to get even moderately good at.
The manual is pretty basic, and finding good scripts to learn from is not that easy.
Additionally, you need a basic understanding of programming...which does not come naturally to a lot of people.

But why on Earth would anyone want to even look at scripting for a Joystick?
The most common answer invariably comes when people start to dip their feet into the PvP pond...PIP Management and Joystick Curves.

So, what I've done is create a TARGET script which does that...and pretty much only that.
Now, a lot of people use other tools for these or other joysticks (eg Auto Hot Key, vJoy and Joystick Gremlin are the ones which come readily to mind), this post is not about what's best, easiest, cheapest etc...it's simply a post providing a TARGET script to help people who don't want to invest time learning TARGET script.
(and I don't blame them!)

The attached zip file contains;
The script itself ("EDScript.tmc")
A separate TARGET support file containing some variable definitions that the script uses ("EDGlobalVars.tmh")
A sample windows batch file which will launch the script ("sample.bat")
And a "readme.txt" file.

The script and support files do have some comments in to help people understand what the script is doing and the readme.txt explains a lot more about curves as well as a mini-tutorial on how to modify the script to suit any Thrustmaster joystick that is supported by the TARGET script engine. These include the T16000, T16000L, Cougar, Warthog and the F18 Joystick (not yet released as far as I know).

So, if you have one of these, read on.

While the script was written and tested on a Warthog HOTAS joystick, I've provided instructions on how to modify it for a different stick (T16000) in the readme.txt file.

WARNING!
You need to run the script before you start ED ... AND ...
Running this script the first time will mess with your binds file so back it up BEFORE you run the game with the script running.
I would fully recommend you take note of what keys you bound for each function because there's a good chance you will need to redo some if not most of them.

Here's why...
When you run the script, the TARGET interpreter (the thing that reads, compiles and runs the script) will create a new (emulated) game controller device in windows and any supported Thrustmaster devices which are enabled within the script will disappear from your Joystick control panel and be replaced with one called "Thrustmaster Combined". This is important...read that last sentence again slowly and carefully.

My script ONLY enables the joystick. So if you own a WARTHOG HOTAS, it leaves the Throttle alone.
On my PC, the "Joystick - HOTAS Warthog" will disappear and be replaced by "Thrustmaster Combined".
Of course, once the script is stopped, everything reverts to how it was.

Next, my script uses the following keys and expects these to be set in the Elite Dangerous control bindings.
Z - for FAOff
The four Arrow keys - for PIP Management.

That's it.

If you normally use something different, no sweat, just get into the EDGlobalVars.tmh file and change lines 14-19 to whatever you want.
I've included at the bottom of the EDGlobalVars file the USB Code table (from the manual) which lists every keyboard key that TARGET will recognize.

What does the script do exactly?
1) It uses one of the HAT switches (the DMS or "H3" hat) on the joystick to do PIP Management
a) when you press H3R (H3-Right) once, it fires a sequence of arrow keys which result in a [0, 2, 4] configuration
b) pressing H3L (left) results in [4, 2, 0]
c) pressing H3U (up) results in [0, 4, 2]
d) pressing H3D (down) does the default balance power [2, 2, 2]
The script makes it dead easy for you to configure these any which way you want to distribute the 6 PIPs and includes more in depth explanation in the comments.
Without too much drama, you can use a different HAT if you are already used to using one of the others. These are typically listed in one of the user guides provided by Thrustmaster for your joystick.
If you happen to own a WARTHOG, the other HAT switches are also listed in the table in the EDGlobalVars file.

2) It uses the pinky lever switch on my joystick (S4) to toggle FAOff + apply a joystick curve to the X and Y axis.
In Elite Dangerous Control Binds, set the Flight Assist key ('Z') to TOGGLE.....NOT HOLD
If you'd rather, you can "MapKey" any other button on your joystick to turn the curves ON and OFF at any time.
I can help with this if you can't work it out.

Ok, final stretch...

I would recommend you extract the files from the zip into their own folder on your C: drive.
The sample.bat file uses C:\TargetScripts ... which is as good a folder name as any.
If you decide on sticking these somewhere else and want to use the sample.bat file, just change the path in the bat file to point to where ever you saved the files.

If you encounter any issues either reply to this thread or PM me and I'll do my best to assist.

Cheers
Clicker
 

Attachments

  • TargetScript.zip
    5.5 KB · Views: 957
Last edited:
The above is exactly what I have been looking for the past two months. I am a housewife and touch computers only because I like blowing things up. Playing CQC I quickly realized I simply could not pip manage fast enough and what I needed was the ability to quickly switch between pip distributions, not the individual capacitors themselves.

Thank you so much, Clicker!

o7
 
1. For those of you have a T16000 setup, you will want to make the following changes to Commander Clicker's script in addition to the ones required in his readme.txt file because the Warthog has no twist yaw and there is no extra throttle slider like there is on the T16000 joystick.

Go to the edscript.tmc file and find the following lines:

SetKBRate(25, 75);
SetKBLayout(KB_ENG);

MapAxis(&T16000, JOYX, DX_X_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
MapAxis(&T16000, JOYY, DX_Y_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);

****
****


add the following two lines to where the stars are above:

MapAxis(&T16000, RUDDER, DX_ZROT_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
MapAxis(&T16000, THR, DX_Z_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);



the text then should read:

SetKBRate(25, 75);
SetKBLayout(KB_ENG);

MapAxis(&T16000, JOYX, DX_X_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
MapAxis(&T16000, JOYY, DX_Y_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
MapAxis(&T16000, RUDDER, DX_ZROT_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
MapAxis(&T16000, THR, DX_Z_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);



2. There is another thing you need to do as well because the hat switch name on the T16000 has a different name than the Warthog. This is also in the edscript.tmc file. It currently reads like this:

MapKey(&T16000, H3U, EXEC("initPIPMapper(ENG,WEP);")); // PIPs = [ 0, 4, 2 ]
MapKey(&T16000, H3L, EXEC("initPIPMapper(SYS,ENG);")); // PIPs = [ 4, 2, 0 ]
MapKey(&T16000, H3R, EXEC("initPIPMapper(WEP,ENG);")); // PIPs = [ 0, 2, 4 ]
MapKey(&T16000, H3D, EXEC("initPIPMapper();")); // PIPs = [ 2, 2, 2 ]



Change the 3 in H3U, H3L, etc. to H1U, H3L,etc. so that it now reads:

MapKey(&T16000, H1U, EXEC("initPIPMapper(ENG,WEP);")); // PIPs = [ 0, 4, 2 ]
MapKey(&T16000, H1L, EXEC("initPIPMapper(SYS,ENG);")); // PIPs = [ 4, 2, 0 ]
MapKey(&T16000, H1R, EXEC("initPIPMapper(WEP,ENG);")); // PIPs = [ 0, 2, 4 ]
MapKey(&T16000, H1D, EXEC("initPIPMapper();")); // PIPs = [ 2, 2, 2 ]



3. After you have compiled and ran the TARGET script, start Elite Dangerous and go to Options and then Controls. The Script will be in the pull down menu of control options as generic joystick. As you start to add your own bindings, the name will change to Custom. There are some other things that will make life easier that I will address later, but right now my cat is meowing and I had better "serve" my cat.


Thanks again Commander Clicker! Even though Clicker is a Pirate, he is a Life Saver and Patient Saint. I am now even more confused about lawfuls and unlawfuls.....

Oh well.

:)

Yarr!

o7
 
Last edited:
Commander Maenden, you really need to mow your lawn first...... :)

I had issues using the arrow keys for navigating the panels using Clicker's script. Below is what Clicker advised:

Sounds a bit like an issue I had some time back when I wanted to use the arrows for panel navigation as well as pip management...if this what you are saying then my solution is to use "RightShift+Arrow" for pip management and bind non-shifted arrows to panel nav.

In the EDGlobalVars.tmh file, change:

define PowerEng USB[0x52] // UP Arrow
define PowerWep USB[0x4F] // RIGHT Arrow
define PowerSys USB[0x50] // LEFT Arrow
define BalancePower USB[0x51] // DOWN Arrow

to:

define PowerEng R_SHIFT+USB[0x52] // RSHIFT+UP Arrow
define PowerWep R_SHIFT+USB[0x4F] // RSHIFT+RIGHT Arrow
define PowerSys R_SHIFT+USB[0x50] // RSHIFT+LEFT Arrow
define BalancePower R_SHIFT+USB[0x51] // RSHIFT+DOWN Arrow

then in the ED Game controller settings change your pip management from simple arrows to RightShift+arrows.


The pip management settings is found under "miscellaneous"

so instead of [up arrow] you have [RightShift+up arrow]

o7
 
For those of you who are converting from TARGET GUI to TARGET SCRIPT:

You will need to remove/delete all of Target GUI's .fcf files or your computer will be confused. Perhaps there is a more elegant way, but this worked for me.

In Clicker's Script there are five joystick curve numbers available for manipulation. Below is the original edscript.tmc script for his Wartog Hotas:

// FUNCTION: sets Joystick curves based on parsed parameter
// Parameter: "profile" = 0, 1 or 2 (refer EDGlobalVars file)

int initSetJoystickCurves(int profile) {
SetSCurve(&T16000, JOYX, 0, 1, 0, JS_CURVE[profile], JS_ZOOM[profile]);
SetSCurve(&T16000, JOYY, 0, 1, 0, JS_CURVE[profile], JS_ZOOM[profile]);
printf("Curves set to %d\x0a", profile); // Print message to TARGET console
}
// end of initSetJoystickCurves() function



I changed it to this for my Thrustmaster 16000:

// FUNCTION: sets Joystick curves based on parsed parameter
// Parameter: "profile" = 0, 1 or 2 (refer EDGlobalVars file)

int initSetJoystickCurves(int profile) {
SetSCurve(&T16000, JOYX, 0, 0, 0, 5, 1);
SetSCurve(&T16000, JOYY, 0, 0, 0, 5, 1);
SetSCurve(&T16000, RUDDER, 0, 0, 0, 5, 1);
printf("Curves set to %d\x0a", profile); // Print message to TARGET console
}
// end of initSetJoystickCurves() function


The numbers 0,0,0,5,1 mean the following I think! so not absolutely sure!

first 0 = left dead zone value
2nd 0 = center dead zone value
3rd 0 = right dead zone value
5 = curve value
1 = zoom value

I use FA Off most of the time in combat, but I suck at rails with it. To help myself I made the joystick less sensitve to motions made near the center of the stick so that the curve is flatter. The curve rises/falls exponentially as the joystick moves further from the center. The higher the curve number, the flatter the curve. Ideally, as I improve, the curve value will decrease.

o7
 
Last edited:
For those of you who may wish to change the pip distribution values:

Below is the original edscript.tmc script for Clicker's Wartog Hotas:

// (Data Management Switch) // PIP Management
// ------------------------
// PIPs = [SYS,ENG,WEP]
MapKey(&T16000, H3U, EXEC("initPIPMapper(ENG,WEP);")); // PIPs = [ 0, 4, 2 ]
MapKey(&T16000, H3L, EXEC("initPIPMapper(SYS,ENG);")); // PIPs = [ 4, 2, 0 ]
MapKey(&T16000, H3R, EXEC("initPIPMapper(WEP,ENG);")); // PIPs = [ 0, 2, 4 ]
MapKey(&T16000, H3D, EXEC("initPIPMapper();")); // PIPs = [ 2, 2, 2 ]

I prefer to use different pip distributions....Below is what mine looks like for the Thrustmaster 16000:

// (Data Management Switch) // PIP Management
// ------------------------
// PIPs = [SYS,ENG,WEP]
MapKey(&T16000, H1U, EXEC("initPIPMapper(ENG,WEP);")); // PIPs = [ 0, 4, 2 ]
MapKey(&T16000, H1L, EXEC("initPIPMapper(SYS,ENG);")); // PIPs = [ 4, 2, 0 ]
MapKey(&T16000, H1R, EXEC("initPIPMapper(SYS,WEP);")); // PIPs = [ 4, 0, 2 ]
MapKey(&T16000, H1D, EXEC("initPIPMapper(ENG,SYS);")); // PIPs = [ 2, 4, 0 ]


o7
 
Last edited:
I've only got the Thrustmaster joystick T16000M.

So I had to alter a few things.
I read all the notes in the zip file and the first set of additional notes by Slange Lands (thank you both) and I had no problems running Clicker 's script.

I used to do a fair bit of coding many years ago but I've never really looked at the TARGET stuff, so it took a while for the little grey cells to creak back into action. But I got there eventually.

I didn't like the idea of having no power to Sys, I find if it's low it drains away and things like heat sinks start to sulk and refuse to work.

So I changed the pips setting by abandoning the second variable and going for the 4:1:1 ratio.

I also added some code to get the fire buttons to work.

Here's where I've got to so far:-
All comments welcome.

My pips settings:



// PIPs = [SYS,ENG,WEP]


MapKey(&T16000, H1U, EXEC("initPIPMapper(ENG);")); // PIPs = [ 1, 4, 1 ]- Full power to engines
MapKey(&T16000, H1L, EXEC("initPIPMapper(SYS);")); // PIPs = [ 4, 1, 1 ]- Full power to shields
MapKey(&T16000, H1R, EXEC("initPIPMapper(WEP);")); // PIPs = [ 1, 1, 4 ]- Full power to weapons
MapKey(&T16000, H1D, EXEC("initPIPMapper();")); // PIPs = [ 2, 2, 2 ] - equal balance

My code for joystick handle buttons:

// Set Primary fire button;
MapKeyIOUMD(&T16000, TS1, PULSE+MOUSE_LEFT, PULSE+MOUSE_LEFT, PULSE+MOUSE_LEFT, PULSE+MOUSE_LEFT, PULSE+MOUSE_LEFT, PULSE+MOUSE_LEFT);
// Set Secondary fire button;
MapKeyIOUMD(&T16000, TS2, PULSE+MOUSE_RIGHT, PULSE+MOUSE_RIGHT, PULSE+MOUSE_RIGHT, PULSE+MOUSE_RIGHT, PULSE+MOUSE_RIGHT, PULSE+MOUSE_RIGHT);
// Set Left Top button to target (Keyboard T);
MapKeyIOUMD(&T16000, TS3, PULSE+USB[23], PULSE+USB[23], PULSE+USB[23], PULSE+USB[23], PULSE+USB[23], PULSE+USB[23]);
// Set Right Top button to next firegroup (Keyboard N);
MapKeyIOUMD(&T16000, TS4, PULSE+USB[17], PULSE+USB[17], PULSE+USB[17], PULSE+USB[17], PULSE+USB[17], PULSE+USB[17]);


I did a quick test flight and it seems to work - but it'll probably blow up tomorrow :(
 
Last edited:
Maenden, that's awesome what you did there with the joystick handle buttons. I couldn't begin to do that myself.

Well, if you don't blow up tomorrow, I'm sure you will in the near future.

Have fun!

o7
 
Wow! Awesome work both of you!

Maenden...you don't appear to need MAPKEYIOUMD as all your selections are identical.

A simple MapKey(&T16000, TS1, PULSE+MOUSE_LEFT); will suffice for your primary fire and
MapKey(&T16000, TS2, PULSE+MOUSE_RIGHT); will suffice for your secondary fire
Same theory for TS3 and TS4.

Clicker
 
Last edited:
Maenden,

I understand that different people do things different ways "because reasons".

Example = why press a trigger which will emulate a mouse click, or press the 'T' key?
The answer of course, is because you can and perhaps you have some future code enhancements in mind.
Or perhaps you intend to use the joystick AND the mouse at different times.

In ED Controller settings, you can also select 'Primary fire' and simply press the trigger on your joystick.
Now, if you had not done any MapKeys, then ED will register the trigger's DX ID and use that anyway (as far as I'm aware)
If you do have the Mapkey();s defined (as currently) then when in ED Controller Settings, when you select Primary Fire and hit the trigger, it will register the mouse click.

The real Power of TARGET comes to the fore if you want to use special delays or repeating fire sequences.
Example...in my WARTHOG script, I do use MapkeyUMD for the triggers with the following functions:
Shift Key = UP, Trigger will press the fire key every 7 seconds until I hit the trigger again...handy for mining using the Pulse Wave Scanner.
Shift key = middle, Trigger operates as normal
Shift key = Down, Trigger will hold the fire key down for 6 seconds then release...handy for Discovery scanner "honk".

Perhaps in a future installment I'll include a tutorial on how to get this working (if people are interested).

Other obvious uses of TARGET is to use a button to send a keyboard macro for things like the following:
a) Docking Request
b) Clear the chat box
c) Send canned messages to the chat window

Food for thought!

Clicker
 
Last edited:
Maenden,

I understand that different people do things different ways "because reasons".

Example = why press a trigger which will emulate a mouse click, or press the 'T' key?
The answer of course, is because you can and perhaps you have some future code enhancements in mind.
Or perhaps you intend to use the joystick AND the mouse at different times.

<snipped>
Other obvious uses of TARGET is to use a button to send a keyboard macro for things like the following:
a) Docking Request
b) Clear the chat box
c) Send canned messages to the chat window

Food for thought!

Clicker

I'm quite new to the TARGET software so I'm just doing baby steps at the moment.

I used to play 'mouse and keyboard' so I've based my scripts on just emulating keyboard and mouse functions.
I still use my mouse for some things in Elite, and it's quite handy if I forget to load my joystick script before I play. :(

However to go back to your original post about people saying that TARGET coding was difficult:

I think the best way into this for beginners is example code which they can adapt, so emulating keyboard strokes with USB scan codes would be one way of doing this.
At the end of the day a lot of people just want code that works, and aren't too interested in the code design.
And people get frustrated when their code doesn't work because they've left out a semi-colon or a bracket and just give up in frustration.

I'm guessing that there are lots of people with the T16000 who would love to use your code but haven't the first idea of how to adapt the commented out sections or change the other bits. Even with the included instructions.

There are also lots of buttons on the base of the T16000 which could be mapped to keyboard strokes quite simply. People could then choose their desired actions by just altering the USB number.
But macros would be awesome.

I look forward to seeing your new macro scripts.
 
Thanks for the props.

Obviously there’s more people with a T16000 than a Warthog HOTAS, which is why I gave examples on how to mod my basic script. I’ll continue to give examples of code I have working on my hardware with my best guess at the T16000 equivalent.

I have the macro examples ready to go and will post them here tomorrow (NZ Time).
It’d be doing me a favour if you and Slange could test and let me they work for you!

My aim ideally is to slowly build up the basic script one idea at a time and depending on interest.
As people get interested they can pick and choose which modules they want to include, how to modify them and learn along the way.

Cheers
Clicker
 
Ok, here's an example macro module for your consideration.
If you are keen to add it to the Basic Script I created and provided in the original post, instructions are included below.

The two example macros are;
1) Docking Request
2) Clear the chat box

NOTE: The Docking Request macro will only work if your contacts panel (ie LHS Panel) is at the "home position".
If this isn't the case, it won't work.
I've made a suggestion (several times) with FD to include a bind which will "home" whatever panel you have open.
That is, move to the first tab in the panel and position selector at the Top Left entry.
To date this has not been included.

Included below are instructions on what to add to the EDScript.tmc file and the macro module file itself.

I have used arbitrary buttons/switches in the example, but hopefully you can decide which ones on your device are available or ones you'd rather use instead.

Add the following to your EDScript.tmc file

Immediately after existing "include" statements at top of script add...

Code:
    include "EDMacros.tmh"

Immediately after the "SetKBLayout(KB_ENG);" line, add...

Code:
fnCustomCommands(); // Refer EDMacros.tmh file

Immediately after existing MapKey(); definitions add...

...for WARTHOG only...
MapKey(&Joystick, S1, PULSE+mRequestDock);
MapKey(&Joystick, S3, PULSE+mClearChatBox);

... for T16000 only...
MapKey(&T16000, B5, PULSE+mRequestDock);
MapKey(&T16000, B6, PULSE+mClearChatBox);

Next, in the folder where you've installed/copied EDScript.tmc to, create a new file and call it "EDMacros.tmh".
Then, copy/paste the following into the new file (and save).

// GLOBAL VARIABLES //

define PulseTime 25 // PULSE+ Delay time (ms)
define DelayTime 75 // D() Delay time (ms)

// UI NAVIGATION // // Make sure you bind these in ED Controls settings
// ============= // // or, if you've bound something different already,
// substitute your preferences here...
define UISelect USB[0x2C] // Space
define UIBack USB[0x2A] // BACKSPACE
define UIUp USB[0x1A] // W
define UIDown USB[0x16] // S
define UILeft USB[0x04] // A
define UIRight USB[0x07] // D
define UINextPanel USB[0x08] // E
define UIPrevPanel USB[0x14] // Q
define TargetPanel USB[0x1E] // 1
define CommsPanel USB[0x1F] // 2
define QuickCommsPanel USB[0x28] // Enter
define RolePanel USB[0x20] // 3
define SystemPanel USB[0x21] // 4
define UIEscape USB[0x29] // Escape

int mRequestDock;
int mClearChatBox;

// MACROS //

int fnCustomCommands() { // Initialise Custom Macro definitions...

// Auto-Docking Request
mRequestDock = CHAIN( // This macro sends the following...
LOCK+PULSE+TargetPanel, D(250), // 1, e, e, left, right, spc, left, q, q, 1
PULSE+UINextPanel, D(), // Limitation: This will only work correctly if Target Panel cursor in
PULSE+UINextPanel, D(), // default/orig position, else will be misaligned.
PULSE+UILeft, D(),
PULSE+UIRight, D(),
PULSE+UISelect, D(),
PULSE+UIPrevPanel, D(),
PULSE+UIPrevPanel, D(),
PULSE+UIBack,
LOCK);

// Send '/clear' command to clear any text in the chat box.
mClearChatBox = CHAIN( // This macro sends the following...
LOCK+PULSE+QuickCommsPanel, D(250), // enter, /, c, l, e, a, r, enter
PULSE+'\/', D(),
PULSE+'c', D(),
PULSE+'l', D(),
PULSE+'e', D(),
PULSE+'a', D(),
PULSE+'r', D(),
PULSE+QuickCommsPanel, D(250),
LOCK);

} // end of fnCustomCommands()

You'll notice that the CHAINS have a "D()" after each key pulse.
By default, the delay for these is defined in the "DelayTime" variable and is set at 75 milliseconds.
Now, this works perfectly on my PC and both macros are VERY quick (which I like), however, if you find the macro is running too fast and is skipping keys, just increase the DelayTime to something higher.
You may need a bit of trial and error to get this working reliably.

Last of all, you'll need to add the key bindings listed on the EDMacro.tmh file in ED via Controller Settings.
Whilst these make sense to me, they may not make sense to you, or you may be using one or more of these keys for something else, so feel free to substitue your own preferences.

A table showing all the USB scan codes is included in the original EDGlobalVars.tmh file included in the original post.

That's it.

As always, if you encounter any issues or need clarification or explanations, just let me know.
Happy to help!

Clicker

Note: Edited @ 13:42 NZT due to a bug in the macro code.

p.s. Sorry about the formatting...seems this forum strips all the TABs and extra spaces by default.
 
Last edited:
Only scripts I use is save the settings directly to the joystick's onboard E-prom. Even allows me to save curves to the thing. That way, I don't have to run an external program for the script or curves. Of course, I am using a VKB Gladiator MkII. And curves are the only reason I can see to use a script for a stick anyway. Well, for the Gladiator, you have to use a script to enable the 2nd logical hat, but seeing as that (plus the curves) are saved to the stick, it's a win/win scenario.
 
Last edited:
@ KellyR,

How many profiles can you store on the VKB?
Can you switch profiles on the fly depending on the game you're playing?
Sounds like a great feature.

Clicker.
 
@ KellyR,

How many profiles can you store on the VKB?
Can you switch profiles on the fly depending on the game you're playing?
Sounds like a great feature.

Clicker.
You can only store 1 profile at a time in the stick, but you can save to and load profiles from disk at will. No provision for automatic switching of profiles when switching games, though. But for a stick that costs $99.00 USD that uses magnetic resonance sensors which are actually more sensitive than HALL effect sensors, it's an excellent value.
 
Yeah, I looked at VKB.

PC Dealers etc do not stock these here in NZ.
It was going to cost me US$99 for the stick and US$85 for postage (total about NZ$350 at the time), so I passed.

Looks like an excellent stick though.

Clicker
 
Hi Clicker,
Thanks for the macros.
I shall have great fun playing with those later, and will probably learn a few things a long the way.
I'll let you know how I get on.

The panel position has always been a bit of a problem, especially since it 'rolls-over' at the end back to the first tab.
I suppose for docking it shouldn't be much of a problem, because you're on Panel1 to to navigate to the docking destination.
But, in practice, I guess a lot of people use cruise time to flick through their other panels?????

What we need is two different ways of exiting a panel.
e.g. <SHIFT> closes the panel and retains the current position, <Esc> closes the panel and returns you to Panel 1 - Tab 1.

Or failing that give each panel tab a specific name so we can access it directly.
A simple 2D array would be fine. e.g Panel (1,3) would take you to Panel 1 , Tab 3.
Perhaps this array exists already within Frontier's code?????
And perhaps, just perhaps, it gets written to a temporary file on your PC.

Just a thought!
 
Last edited:
Top Bottom