DX Shifting Confusion
-
Reading the manuals and getting my head around it. My confusion relates to assigning the third party shortcuts to the shifted buttons. For example, I want to have the shifted DMS buttons as TIR Reset, Pause, screenshot, ShadowPlay record. They’re all external apps (except for perhaps screenshot) so if my understanding of what a callback is is correct, I cannot simply apply that to the shifted buttons via the keyfile.
So to achieve this, am I right in saying I’d need to assign the callback SimDoNothing to the shifted DMS buttons, then use the /I and /O modifiers and key binding macros via the tmj and tmm files? I’m using Dunc’s DX mapping, and embarrassingly, I only discovered last night that by default, all the buttons have shifted functions already assigned. :oops: I pressed shift DMS and I was like “I didn’t tell it to change view!”.
Existing mapping for #DMS/H3:
DMS/H3
SimDMSUp 10 -1 -2 0 0x0 -1
SimDMSRight 11 -1 -2 0 0x0 -1
SimDMSDown 12 -1 -2 0 0x0 -1
SimDMSLeft 13 -1 -2 0 0x0 -1Existing mapping for shifted #DMS/H3:
DMS/H3
OTWSelect3DCockpitMode 266 -1 -2 0 0x0 -1
OTWSelectOrbitMode 267 -1 -2 0 0x0 -1
OTWSelect2DCockpitMode 268 -1 -2 0 0x0 -1
OTWSelectHUDMode 269 -1 -2 0 0x0 -1Proposed mapping change for shifted #DMS/H3:
SimDoNothing 266 -1 -2 0 0x0 -1
SimDoNothing 267 -1 -2 0 0x0 -1
SimDoNothing 268 -1 -2 0 0x0 -1
SimDoNothing 269 -1 -2 0 0x0 -1And added to my Dunc.tmj:
BTN H3U /I TIR_Pause
/O DX11
BTN H3D /I TIR_Recenter
/O DX13I’ll not post the changes to the .tmm as that’s self explanatory.
Naturally it makes sense to use the Display Management Switch to control visual aids such as TIR.
Cheers guys.
PS: Darkman, I realise I’ve already had a similar chat with you but I don’t quite yet understand it fully. :oops::rtfm:
-
If an external program is monitoring your key/button input then that input will be seen when that key/button is pressed. The two concerns would be that when you press the joystick button(s) that the external program gets valid input and that BMS has no function assigned to that input.
On the first point the joystick software is programmed to produce the needed output on the condition that DMS_X is pressed while the pinky button is held.
On the second point as long as no function is assigned to the shifted button number in BMS there’s no harm (and no resulting function) in BMS receiving this extraneous input.
Of your list of four example functions, only the Shadow Play is not possible using actual BMS callbacks (presuming that Pause means to pause the game).
-
If an external program is monitoring your key/button input then that input will be seen when that key/button is pressed. The two concerns would be that when you press the joystick button(s) that the external program gets valid input and that BMS has no function assigned to that input.
On the first point the joystick software is programmed to produce the needed output on the condition that DMS_X is pressed while the pinky button is held.
On the second point as long as no function is assigned to the shifted button number in BMS there’s no harm (and no resulting function) in BMS receiving this extraneous input.
Of your list of four example functions, only the Shadow Play is not possible using actual BMS callbacks (presuming that Pause means to pause the game).
I obviously haven’t quite got my head around callbacks then. Are you saying that for TIR, I don’t have to anything fancy and that there is a callback for that? How does that work? Does BMS read that callback and send out F9 etc. instead of running JFS start for example?
-
TIR’s hotkey utility allows assigning any keypress combo you want to its internal functions - center, pause, and precision. BMS default keyfile has those function pre-assigned for convenience, so you need to ensure those keypress assignments (callbacks), or your custom assignments, are the same as those programmed within TIR. Your BMS keyfile edits look ok to me, but it might be simpler to just delete the lines with 266 to 269, since those shifted keypresses do nothing. Only 2 important concepts:
1. The joystick keypress assignments for TIR functions must be the same as those assigned in TIR.
2. Ensure the TIR function keypresses are not duplicated for some other function within the BMS keyfile. -
TIR’s hotkey utility allows assigning any keypress combo you want to its internal functions - center, pause, and precision. BMS default keyfile has those function pre-assigned for convenience, so you need to ensure those keypress assignments (callbacks), or your custom assignments, are the same as those programmed within TIR. Your BMS keyfile edits look ok to me, but it might be simpler to just delete the lines with 266 to 269, since those shifted keypresses do nothing. Only 2 important concepts:
1. The joystick keypress assignments for TIR functions must be the same as those assigned in TIR.
2. Ensure the TIR function keypresses are not duplicated for some other function within the BMS keyfile.Understood. I don’t use F9 or F12 or for anything other than TIR, as I use the default BMS - Full. I still don’t understand how the BMS callback works with regards to third party apps though? I get how you set that callback to a non shifted or shifted DX button, but the head tracking is not internal to BMS - so how does BMS then tell the TIR software to center?
-
Understood. I don’t use F9 or F12 or for anything other than TIR, as I use the default BMS - Full. I still don’t understand how the BMS callback works with regards to third party apps though? I get how you set that callback to a non shifted or shifted DX button, but the head tracking is not internal to BMS - so how does BMS then tell the TIR software to center?
My understanding is that those 3rd party callbacks in BMS do nothing in BMS. They included in the BMS keyfile merely as a convenience to help avoid duplicate callback assgnments between BMS and the 3rd party software.
-
My understanding is that those 3rd party callbacks in BMS do nothing in BMS. They included in the BMS keyfile merely as a convenience to help avoid duplicate callback assgnments between BMS and the 3rd party software.
Yeah I get that. So how does the keystroke actually get executed? Does the callback in the keyfile output F9 etc?
-
Yeah I get that. So how does the keystroke actually get executed? Does the callback in the keyfile output F9 etc?
I think not. When you press a button on your SSC for, say, TIR Pause, TIR recognizes that hotkey keypress and executes the function. BMS and its keyfile are completely irrelevant to the process.
-
I think not. When you press a button on your SSC for, say, TIR Pause, TIR recognizes that hotkey keypress and executes the function. BMS and its keyfile are completely irrelevant to the process.
Yeah which is why I was saying to remove the callbacks from the shifted button and add keystrokes in via /I and /O modifiers in the .TMJ file, but unless I’ve misunderstood your first reply, I thought you were recommending against that?
-
Looks good, though you might want to add the HOLD modifier /H for when you are holding DMS Up, for example LIT or SNAPLOOK, thus:
BTN H3U /I TIR_Pause /O /H DX11 BTN H3D /I TIR_Recenter /O /H DX13
-
Looks good, though you might want to add the HOLD modifier /H for when you are holding DMS Up, for example LIT or SNAPLOOK, thus:
BTN H3U /I TIR_Pause /O /H DX11 BTN H3D /I TIR_Recenter /O /H DX13
Makes sense. I wrote that from memory at work, so I didn’t expect I’d get it right
So as suggested above, I just need to assign SimDoNothing, or delete/comment out the shifted assignments on H3?
Or will view pan be automatically assigned to H3 shifted if I do that?
-
As you wrote in the original post: SimDoNothing.
-
All sorted
Thanks everyone.