Joystick programming wows. Can someone point me in the right direction please?
-
Terry… I think I can help… do you have teamspeak… and what would be a good time for you to meet up?
I’ll look into loading up teamspeak and I’ll find a time. I am actually working with a bunch of guys in the US at the moment on a telecoms project. We are pretty much up against the wire today.
-
I have a distinct philosophy when approaching the X-52 vs Falcon setup challenge so take any advice with an implied “You can do it differently, but if it were me I would…” before it.
A keyfile editor other than notepad.exe is too much tool for a simple task. Most people’s .key files should be no more than 200 lines. The spreadsheet or other tool are inspiring projects with noble intentions but they live or die based on the “magic box” concept. I haven’t found working with the straight text to be overwhelming and certainly helps understanding and troubleshooting.
A control setup is a scheme for translating the physical controls in front of you to the virtual controls of the F-16. A solid understanding of both your controls and the F-16 controls is the foundation for building the connection between the two. For the X-52 you’ll want an inventory of each button or axis and what their DX identities are. The SST software can alter the identities of the controls somewhat. For example, an axis can be broken up into individual keystrokes so don’t limit your imagination when it comes to what joystick functions map to what virtual actions.
On the F-16 side the BMS Manual pages 30-34 provide an overview of the HOTAS controls. You probably don’t know every function listed in detail which comes with use. Begin by trusting that if the manufacturer decided it was important enough to put on the HOTAS that it should feature on your HOTAS. As you experience the control setup you might relegate a HOTAS feature back to the keyboard or introduce a non-HOTAS function to your joystick.
After getting to know both sides of the equation it’s time to decide which buttons are going to correspond to what simulated controls. Some are obvious like the weapon release button and others require more artistic interpretation. Soon you discover that the F-16 controls outnumber even the button and axis count of an X-52. The X-52 ships with the ability to have 6 layers, 3 mode button positions unshifted and shifted state each. For the love of God do not use all 6. The F-16 is complex enough without that noise. A doubling of controls through use of a single shift state should be more than enough. An upside is that the mode switch can be used for real controls since it isn’t being used to define mode layers. Instead of using the SST profile to do the shifting, I suggest using the F4BMS callback which gets dual use out of the pinky switch (tap v hold). So the SST profile will only have 1 layer.
The .key file should be a user’s .key file. By this I mean you should right click, create New Text Document, name it “TerryW.key”. It’s blank and it’s yours. Every line, every description in quotes, every bind will be something you added. Consider BMS.key to be a reference document that you can steal lines from on a need basis. It looks like a large task at first if you compare it to BMS.key but the number of lines your .key will need is much smaller.
My .key for reference:
SimEndFlight -1 0 0X1 0 0 0 1 "Sim-Exit" SimEject 1074 0 0X12 2 0 0 1 "Eject" SimTogglePaused -1 0 0X19 0 0 0 1 "Pause" SimOpenChatBox -1 0 0X14 1 0 0 1 "Chat" TimeAccelerateDec -1 0 0X3A 1 0 0 1 "Time Accel-" TimeAccelerateInc -1 0 0XF 1 0 0 1 "Time Accel+" OTWViewZoomIn -1 0 0XFFFFFFFF 0 0 0 1 "Zoom In" OTWViewZoomOut -1 0 0XFFFFFFFF 0 0 0 1 "Zoom Out" OTWSelectAirFriendlyMode -1 0 0X9 0 0 0 1 "V-Friendly" OTWSelect3DCockpitMode -1 0 0X4 0 0 0 1 "V-Cockpit" OTWSelectOrbitMode -1 0 0XB 0 0 0 1 "V-Orbit" OTWSelectWeaponMode -1 0 0X7 0 0 0 1 "V-Weapon" OTWTrackTargetToWeapon -1 0 0X8 0 0 0 1 "V-Weapon's Target" AFGearUp -1 0 0XFFFFFFFF 0 0 0 1 "Gear Up" AFGearDown -1 0 0XFFFFFFFF 0 0 0 1 "Gear Down" SimAVTRSwitchOff -1 0 0XFFFFFFFF 0 0 0 1 "AVTR Off" SimAVTRSwitchAuto -1 0 0XFFFFFFFF 0 0 0 1 "AVTR Auto" SimAVTRSwitchOn -1 0 0XFFFFFFFF 0 0 0 1 "AVTR On" SimProbeHeatOn -1 0 0XFFFFFFFF 0 0 0 1 "Pitot Heat On" SimProbeHeatOff -1 0 0XFFFFFFFF 0 0 0 1 "Pitot Heat Off" SimExtlMasterNorm -1 0 0XFFFFFFFF 0 0 0 1 "Ext. Master On" SimExtlMasterOff -1 0 0XFFFFFFFF 0 0 0 1 "Ext. Master Off" SimRALTON -1 0 0XFFFFFFFF 0 0 0 1 "RAlt On" SimRALTSTDBY -1 0 0XFFFFFFFF 0 0 0 1 "RAlt Standby" SimArmMasterArm -1 0 0XFFFFFFFF 0 0 0 1 "Master Arm On" SimSafeMasterArm -1 0 0XFFFFFFFF 0 0 0 1 "Master Arm Safe" SimMPO -1 0 0XFFFFFFFF 0 0 0 1 "Pitch Override (Momentary)" SimEmergencyJettison -1 0 0XFFFFFFFF 0 0 0 1 "E-J" SimRFNorm -1 0 0XFFFFFFFF 0 0 0 1 "EMCON Norm" SimRFQuiet -1 0 0XFFFFFFFF 0 0 0 1 "EMCON Quiet" SimLeftAPSwitch -1 0 0XFFFFFFFF 0 0 0 1 "AP Left (Cycle)" SimRightAPUp -1 0 0XFFFFFFFF 0 0 0 1 "AP Right Up" SimRightAPMid -1 0 0XFFFFFFFF 0 0 0 1 "AP Right Mid" SimRightAPDown -1 0 0XFFFFFFFF 0 0 0 1 "AP Right Down" SimSilenceHorn -1 0 0X23 0 0 0 1 "Horn Silencer" ToggleNVGMode -1 0 0X31 0 0 0 1 "Night Vision" AFBrakesIn -1 0 0XFFFFFFFF 0 0 0 1 "Speedbrake Close" AFBrakesOut -1 0 0XFFFFFFFF 0 0 0 1 "Speedbrake Open" SimTriggerFirstDetent -1 0 0XFFFFFFFF 0 0 0 1 "Trigger 1/2" SimAPOverride -1 0 0XFFFFFFFF 0 0 0 1 "AP Override" SimPickle -1 0 0XFFFFFFFF 0 0 0 1 "Weapons Release" SimToggleMissileCage -1 0 0XFFFFFFFF 0 0 0 1 "Uncage" SimMissileStep -1 0 0XFFFFFFFF 0 0 0 1 "Missile Step" SimPinkySwitch -1 0 0XFFFFFFFF 0 0 0 1 "Pinky" SimSelectSRMOverride -1 0 0XFFFFFFFF 0 0 0 1 "Override DGFT" SimSelectMRMOverride -1 0 0XFFFFFFFF 0 0 0 1 "Override MRM" SimTMSUp -1 0 0XFFFFFFFF 0 0 0 1 "TMS Up" SimTMSRight -1 0 0XFFFFFFFF 0 0 0 1 "TMS Right" SimTMSDown -1 0 0XFFFFFFFF 0 0 0 1 "TMS Down" SimTMSLeft -1 0 0XFFFFFFFF 0 0 0 1 "TMS Left" SimTransmitCom2 -1 0 0XFFFFFFFF 0 0 0 1 "MIC Down" SimCommsSwitchRight -1 0 0XFFFFFFFF 0 0 0 1 "MIC Right" SimTransmitCom1 -1 0 0XFFFFFFFF 0 0 0 1 "MIC Up" SimCommsSwitchLeft -1 0 0XFFFFFFFF 0 0 0 1 "MIC Left" SimCursorEnable -1 0 0XFFFFFFFF 0 0 0 1 "Cursor Enable" SimTrigger -1 0 0XFFFFFFFF 0 0 0 1 "Trigger 2/2" SimCMSUp -1 0 0XFFFFFFFF 0 0 0 1 "CMS Up" SimCMSRight -1 0 0XFFFFFFFF 0 0 0 1 "CMS Right" SimCMSDown -1 0 0XFFFFFFFF 0 0 0 1 "CMS Down" SimCmsLeft -1 0 0XFFFFFFFF 0 0 0 1 "CMS Left" SimSlapSwitch -1 0 0XFFFFFFFF 0 0 0 1 "Slap Switch" SimDMSUp -1 0 0XFFFFFFFF 0 0 0 1 "DMS Up" SimDMSRight -1 0 0XFFFFFFFF 0 0 0 1 "DMS Right" SimDMSDown -1 0 0XFFFFFFFF 0 0 0 1 "DMS Down" SimDMSLeft -1 0 0XFFFFFFFF 0 0 0 1 "DMS Left" SimTrimNoseDown -1 0 0XFFFFFFFF 0 0 0 1 "Trim Up" SimTrimRollRight -1 0 0XFFFFFFFF 0 0 0 1 "Trim Right" SimTrimNoseUp -1 0 0XFFFFFFFF 0 0 0 1 "Trim Down" SimTrimRollLeft -1 0 0XFFFFFFFF 0 0 0 1 "Trim Left" ExtinguishMasterCaution 1065 0 0X39 0 0 0 1 "Master Caution" SimICPCom1 1011 0 0XB5 0 0 0 1 "ICP-COM1" SimICPCom2 1091 0 0X37 0 0 0 1 "ICP-COM2" SimICPIFF 1105 0 0XFFFFFFFF 0 0 0 1 "ICP-IFF" SimICPLIST 1104 0 0X4A 0 0 0 1 "ICP-LIST" SimICPNav 1012 0 0XFFFFFFFF 0 0 0 1 "ICP-NAV" SimICPAA 1013 0 0XFFFFFFFF 0 0 0 1 "ICP-A-A" SimICPAG 1014 0 0X4E 0 0 0 1 "ICP-A-G" SimICPNext 1024 0 0XC9 0 0 0 1 "ICP-Next" SimICPPrevious 1023 0 0XD1 0 0 0 1 "ICP-Previous" SimICPTILS 1015 0 0X47 0 0 0 1 "ICP-1" SimICPALOW 1016 0 0X48 0 0 0 1 "ICP-2" SimICPTHREE 1107 0 0X49 0 0 0 1 "ICP-3" SimICPStpt 1018 0 0X4B 0 0 0 1 "ICP-4" SimICPCrus 1019 0 0X4C 0 0 0 1 "ICP-5" SimICPSIX 1108 0 0X4D 0 0 0 1 "ICP-6" SimICPMark 1021 0 0X4F 0 0 0 1 "ICP-7" SimICPEIGHT 1109 0 0X50 0 0 0 1 "ICP-8" SimICPNINE 1110 0 0X51 0 0 0 1 "ICP-9" SimICPZERO 1106 0 0X52 0 0 0 1 "ICP-0" SimICPCLEAR -1 0 0X53 0 0 0 1 "ICP-RCL" SimICPEnter 1022 0 0X9C 0 0 0 1 "ICP-ENTR" SimICPDEDUP 1113 0 0XC8 0 0 0 1 "ICP-DCS-Up" SimICPDEDSEQ 1115 0 0XCD 0 0 0 1 "ICP-DCS-Seq" SimICPDEDDOWN 1114 0 0XD0 0 0 0 1 "ICP-DCS-Down" SimICPResetDED 1112 0 0XCB 0 0 0 1 "ICP-DCS-Return" SimDriftCO -1 0 0XC7 0 0 0 1 "ICP-Drift C/O" SimWarnReset 1153 0 0XCF 0 0 0 1 "ICP-Warning reset" SimCATSwitch 1103 0 0XD2 0 0 0 1 "FLT CONTROL-CC/III Toggle" SimFuelDoorToggle 1145 0 0XD3 0 0 0 1 "FUEL-Air Refuel Toggle" AFIncFlap -1 0 0X41 0 0 0 1 "Flaps Increase" AFDecFlap -1 0 0X40 0 0 0 1 "Flaps Decrease" RadioAWACSCommand -1 0 0X10 0 0 0 1 "Radio-AWACS" RadioWingCommand -1 0 0X11 0 0 0 1 "Radio-Wingman Command" RadioElementCommand -1 0 0X12 0 0 0 1 "Radio-Element Command" RadioFlightCommand -1 0 0X13 0 0 0 1 "Radio-Flight Command" RadioTowerCommand -1 0 0X14 0 0 0 1 "Radio-ATC Message" RadioTankerCommand -1 0 0X15 0 0 0 1 "Radio-Tanker Message" RadioMessageSend -1 0 0X10 0 0XFFFFFFFF 0 -2 "Radio-Send Message" OTWRadioMenuStep -1 0 0X10 0 0X10 1 -2 "Radio-Next Menu" OTWRadioMenuStep -1 0 0X10 0 0X10 0 -2 "Radio-Next Menu" OTWRadioMenuStepBack -1 0 0X10 1 0X10 1 -2 "Radio-Previous Menu" OTWRadioMenuStepBack -1 0 0X10 1 0X10 0 -2 "Radio-Previous Menu" RadioMessageSend -1 0 0X11 0 0XFFFFFFFF 0 -2 "Radio-Send Message" OTWRadioMenuStep -1 0 0X11 0 0X11 0 -2 "Radio-Next Menu" OTWRadioMenuStep -1 0 0X11 0 0X11 1 -2 "Radio-Next Menu" OTWRadioMenuStepBack -1 0 0X11 1 0X11 1 -2 "Radio-Previous Menu" OTWRadioMenuStepBack -1 0 0X11 1 0X11 0 -2 "Radio-Previous Menu" RadioMessageSend -1 0 0X12 0 0XFFFFFFFF 0 -2 "Radio-Send Message" OTWRadioMenuStep -1 0 0X12 0 0X12 0 -2 "Radio-Next Menu" OTWRadioMenuStep -1 0 0X12 0 0X12 1 -2 "Radio-Next Menu" OTWRadioMenuStepBack -1 0 0X12 1 0X12 0 -2 "Radio-Previous Menu" OTWRadioMenuStepBack -1 0 0X12 1 0X12 1 -2 "Radio-Previous Menu" RadioMessageSend -1 0 0X13 0 0XFFFFFFFF 0 -2 "Radio-Send Message" OTWRadioMenuStep -1 0 0X13 0 0X13 1 -2 "Radio-Next Menu" OTWRadioMenuStep -1 0 0X13 0 0X13 0 -2 "Radio-Next Menu" OTWRadioMenuStepBack -1 0 0X13 1 0X13 0 -2 "Radio-Previous Menu" OTWRadioMenuStepBack -1 0 0X13 1 0X13 1 -2 "Radio-Previous Menu" RadioMessageSend -1 0 0X14 0 0XFFFFFFFF 0 -2 "Radio-Send Message" OTWRadioMenuStep -1 0 0X14 0 0X14 1 -2 "Radio-Next Menu" OTWRadioMenuStep -1 0 0X14 0 0X14 0 -2 "Radio-Next Menu" OTWRadioMenuStepBack -1 0 0X14 1 0X14 0 -2 "Radio-Previous Menu" OTWRadioMenuStepBack -1 0 0X14 1 0X14 1 -2 "Radio-Previous Menu" RadioMessageSend -1 0 0X15 0 0XFFFFFFFF 0 -2 "Radio-Send Message" OTWRadioMenuStep -1 0 0X15 0 0X15 1 -2 "Radio-Next Menu" OTWRadioMenuStep -1 0 0X15 0 0X15 0 -2 "Radio-Next Menu" OTWRadioMenuStepBack -1 0 0X15 1 0X15 0 -2 "Radio-Previous Menu" OTWRadioMenuStepBack -1 0 0X15 1 0X15 1 -2 "Radio-Previous Menu" SimCursorEnable 0 8 -2 0 0x0 0 SimToggleMissileCage 1 8 -2 0 0x0 0 SimAVTRSwitchAuto 2 8 -2 0 0x0 0 SimProbeHeatOn 3 8 -2 0 0x0 0 AFGearDown 4 8 -2 0 0x0 0 SimRALTSTDBY 5 8 -2 0 0x0 0 AFBrakesIn 6 8 -2 0 0x0 0 AFBrakesOut 7 8 -2 0 0x0 0 SimSelectMRMOverride 8 8 -2 0 0x0 0 SimSelectSRMOverride 9 8 -2 0 0x0 0 SimMPO 10 8 -2 0 0x0 0 SimEmergencyJettison 11 8 -2 0 0x0 0 SimArmMasterArm 12 8 -2 0 0x0 0 SimSafeMasterArm 13 8 -2 0 0x0 0 SimSlapSwitch 14 8 -2 0 0x0 0 SimProbeHeatOff 15 8 -2 0 0x0 0 SimRightAPMid 16 8 -2 0 0x0 0 SimRFNorm 17 8 -2 0 0x0 0 SimRFQuiet 18 8 -2 0 0x0 0 SimExtlMasterNorm 19 8 -2 0 0x0 0 SimExtlMasterOff 20 8 -2 0 0x0 0 SimAVTRSwitchOff 21 8 -2 0 0x0 0 SimAVTRSwitchOn 22 8 -2 0 0x0 0 AFGearUp 23 8 -2 0 0x0 0 SimRALTON 24 8 -2 0 0x0 0 SimLeftAPSwitch 25 8 -2 0 0x0 0 SimRightAPUp 26 8 -2 0 0x0 0 SimRightAPDown 27 8 -2 0 0x0 0 SimTransmitCom1 28 8 -2 0 0x0 0 SimCommsSwitchRight 29 8 -2 0 0x0 0 SimTransmitCom2 30 8 -2 0 0x0 0 SimCommsSwitchLeft 31 8 -2 0 0x0 0 SimTriggerFirstDetent 32 8 -2 0 0x0 0 SimPickle 33 8 -2 0 0x0 0 SimPinkySwitch 34 8 -2 0 0x0 0 SimAPOverride 35 8 -2 0 0x0 0 SimMissileStep 36 8 -2 0 0x0 0 SimTrigger 37 8 -2 0 0x0 0 SimTMSUp 38 8 -2 0 0x0 0 SimTMSRight 39 8 -2 0 0x0 0 SimTMSDown 40 8 -2 0 0x0 0 SimTMSLeft 41 8 -2 0 0x0 0 SimDMSUp 42 8 -2 0 0x0 0 SimDMSRight 43 8 -2 0 0x0 0 SimDMSDown 44 8 -2 0 0x0 0 SimDMSLeft 45 8 -2 0 0x0 0 SimCMSUp 46 8 -2 0 0x0 0 SimCMSRight 47 8 -2 0 0x0 0 SimCMSDown 48 8 -2 0 0x0 0 SimCmsLeft 49 8 -2 0 0x0 0 SimTrimNoseDown 0 -1 -3 0 0x0 0 SimTrimRollRight 0 -1 -3 2 0x0 0 SimTrimNoseUp 0 -1 -3 4 0x0 0 SimTrimRollLeft 0 -1 -3 6 0x0 0
-
My guess with regard to …. “Using Kolbe’s spreadsheet … The .key file produced seems to be being overridden by behaviours that can only be hard-coded into F4”:
The keyfile you’re producing with Kolbe’s spreadsheet is in conflict with programming in the Saitek SST software. You’re calling mutliple functions with one button press … on DX in BMS (Kolbe’s spreadsheet) and as a Saitek ‘keyboard emulation’. Use one or the other for each HOTAS button. I recommend DX functions (via the spreadsheet or otherwise).
I can assure you that for common functions if applied correctly (i.e. in a way BMS ‘likes’) the spreadsheet works perfectly to program the X52 and X52 Pro HOTAS.
-
Thanks for the help.
I have gone right back to very basics. No SST software use, so no profiles loaded. I have catalogued all the callback names so that I have a reference point for F16 behaviour on a per control basis. I am now implementing a minimal set of functions on the X52 (just those functions that absolutely demand hands-on access so that situation awareness isn’t compromised e.g. sidewinder cage/uncage). I can build my .key file up from there as time goes by. I am doing watching the training videos, making notes of important keys and then implementing them as I see fit. I am currently using Kolbe’s spreadsheet as the catelogue as it is an easy reference for callback names and it has a graphic of the X52. Very helpful.
I suspect my difficulties all stemmed from my initial non-structured approach to the problem and the lack of structure to the documentation. There is a lot of written material but it doesn’t start at base-zero and build up. It drops straight in at the detail without explaining the unknowns e.g. that Falcon BMS has hard coded DX behaviour built straight into the software. A seasoned software engineer wouldn’t have expected that architecture in this day and age of layered models. Once you know, it is plain sailing.
-
Terry, great. Glad you’re getting on with the HOTAS controls. Couple of possibly useful items:
-
Also reference the default BMS.key or Keystrokes.key files (via notepad or via the BMS UI) for callbacks that may not be in Kolbes spreadsheet. Also the BMS Dash-1 has callbacks as you browse the various systems/switches in the cockpit. Check here on you install: C:\Falcon BMS 4.32\Docs\Falcon BMS Manuals
-
Check the F16 HOTAS layout and callbacks in the Dash-1 on pages 25-27 and 50-52 …. C:\Falcon BMS 4.32\Docs\Falcon BMS Manuals\BMS-Dash1.pdf
-
Check on the various X52 and/or X52 Pro profiles on the forum for some example layouts. You may find something you like that you can re-purpose to the X52 in DX. Hard~Deck & Kesmonkey have profiles for X52; Scuby and I have profiles for the X52 Pro (which has pretty much an identical set of ‘main’ buttons/switches).
Existing Profile Links:
X52:
Hard~Deck - https://www.benchmarksims.org/forum/showthread.php?7909-Saitek-X-52-Profile
KesMonkey - https://www.benchmarksims.org/forum/showthread.php?5855-Saitek-X-52-Profile
Approx DX Version of the Hard~Deck Profile - https://www.benchmarksims.org/forum/showthread.php?19971-DX-Version-of-Hard-Deck-s-X52-ProfileX52 Pro:
Hard~Deck - https://www.benchmarksims.org/forum/showthread.php?6032-Saitek-X-52PRO-Profile
Agave_Blue DX Profile - https://www.benchmarksims.org/forum/showthread.php?18522-X52-Pro-DX-Profile
Scuby - https://www.benchmarksims.org/forum/showthread.php?17393-X52-PRO-Profile-by-Scuby -
-
I’m stuck again with shifting. . . so, soon!
I read Kolbe’s key file manual and the DirectX Shifting Facility dated Published on March 27th, 2010.
So, I have my pinky switch (switch 5 AKA 6):
SimHotasPinkyShift 5 -1 -2 0 0x0 0
SimHotasPinkyShift 261 -1 -2 0 0x0 0and
In falcon bms.config I have set g_nHotasPinkyShiftMagnitude 256
SimWheelBrakes 0 -1 -2 0 0x0 0
SimEject 256 -1 -2 0 0x0 0I am expecting to hold the trigger on its 1st detent for the wheel brakes to operate (and they do) but I am expecting a sudden ejection when I do a pinkyshift and trigger to 1st detent (I tried holding the position for a few seconds). All I get is the wheel brake. Bu99er. . . I thought that I had it all worked out . . .
-
FYI. My configuration:
Shift:
SimHotasPinkyShift 5 -1 -2 0 0x0 0
SimHotasPinkyShift 261 -1 -2 0 0x0 0SimWheelBrakes 0 -1 -2 0 0x0 0
SimDoNothing 256 -1 -2 0 0x0 0Not sure, but are you holding the shift while executing the shifted command? Also, I do think there is a way to have the pinky key act as a shift state AND as a call back. Again, not 100% sure, but I think it has to do with a short-press vs a long-press and there is a control value for the short/long time in the Falcon BMS cfg file.
Eject does require, I think, a short delay.
IMHO …… Eject is a bad key (for me) to have on the HOTAS. Too much risk being in the wrong mode or hitting the wrong key and going on a rocket ride. Happened to a squad mate not long ago. I prefer to have to take positive, intentional action by keeping that bound to a keyboard control only.
-
Is this the only problem with +256 shifting? SimEject is an interesting callback to use which may have unique issues. On a parallel note oh how soon is the “frakenprofile” temptation setting in. Keyboard is a beautiful 104-button controller for these things. ‘K’ / Ctrl-E or even clicking on eject handle are just fine controls.
Is +256 shifting working for other callbacks? Maybe something more normal that doesn’t have delay needs. Feel free to paste your .key file in between [ code ] tags.
-
…. Is +256 shifting working for other callbacks? …
Good question.
You’re such a clear thinker with regard to trouble-shooting.
-
Terry…
Have you seen my PM’s? -
FYI. My configuration:
Shift:
SimHotasPinkyShift 5 -1 -2 0 0x0 0
SimHotasPinkyShift 261 -1 -2 0 0x0 0SimWheelBrakes 0 -1 -2 0 0x0 0
SimDoNothing 256 -1 -2 0 0x0 0Not sure, but are you holding the shift while executing the shifted command? Also, I do think there is a way to have the pinky key act as a shift state AND as a call back. Again, not 100% sure, but I think it has to do with a short-press vs a long-press and there is a control value for the short/long time in the Falcon BMS cfg file.
Eject does require, I think, a short delay.
IMHO …… Eject is a bad key (for me) to have on the HOTAS. Too much risk being in the wrong mode or hitting the wrong key and going on a rocket ride. Happened to a squad mate not long ago. I prefer to have to take positive, intentional action by keeping that bound to a keyboard control only.
Hi,
Again, thanks for jumping in and helping. I really appreciate it. NB I only picked the eject key by way of experimentation. You don’t have to do much to realise that the shifted function worked. I don’t intend to use this key combination seriously.
Now, I am holding the pinky switch closed whilst I press the trigger to its 1st detent position. Is this right? The function is described as a “shift” so I am presuming that it follows the same paradigm as the keyboard I.e. you hold shift down to change another key’s function when it is pressed soon after the shift key. Please tell me that this isn’t me presuming something stupid like the shift behaving like “a shift”? I don’t remember, from my now extensive reading, an explanation of whether the pinky is supposed to be pressed then released or kept pressed.
Mr Confused of Basingstoke.
-
Good question.
You’re such a clear thinker with regard to trouble-shooting.
I did try +256 with another command and nothing happened.
T
-
OK …. SimEject doesn’t work on my shifted 1st detent either. Could be a BMS ‘thing’. I’ll try/test an alternate command.
Oddly though, with a command on that 1st shifted DX button, my pinky switch now works like it’s ‘supposed’ to … momentary, dual-function based on time held (i.e. short press = exp veiw; long press = DX shift).
-
OK …. SimEject doesn’t work on my shifted 1st detent either. Could be a BMS ‘thing’. I’ll try/test an alternate command.
Oddly though, with a command on that 1st shifted DX button, my pinky switch now works like it’s ‘supposed’ to … momentary, dual-function based on time held (i.e. short press = exp veiw; long press = DX shift).
I do worry that this software is a little bit “buggy”. The more the software does and the more sophisticated it gets the “buggier” it becomes. You can’t really help that.
-
I’m reluctant to call it a ‘bug’ …. more likely a feature I haven’t read/learned about, or an ‘undocumented’ feature. Complication includes things that do stuff that one doesn’t (yet) understand or expect.
However, for me, this is good. I have a new ‘free’ button for assignment … the FOV/Pinky switch.
-
I’m reluctant to call it a ‘bug’ …. more likely a feature I haven’t read/learned about, or an ‘undocumented’ feature. Complication includes things that do stuff that one doesn’t (yet) understand or expect.
However, for me, this is good. I have a new ‘free’ button for assignment … the FOV/Pinky switch.
I worked extensively in software development methods and also software quality assurance. I must have been a real pain in the 4rse. For me it would have been a bug to restrict the number of DX controls “sensed” on an input device on such an arbitrary basis. For me that should be totally dynamic. You can probably see why I don’t get employed much these days. . .
-
I did try +256 with another command and nothing happened.
T
So you’re having the same issue with failed +256 shifting using a different callback but you’re still using the trigger? Ideas for troubleshooting:
1. X52 trigger is two-stage. I believe first detent holds one button and second holds two but I’m not sure.
2. Confirm the following line in falcon bms.cfg
set g_nHotasPinkyShiftMagnitude 256 // Enable DirectX Shifting and specify button offset
3. Are you sure that you are using the .key file you edited? Make sure you save the file in the text editor, possibly as a new filename, load it into Falcon, confirm new file name in setup screen.
4. SimHotasPinkyShift should appear 3 times in your .key file. Once in the keyboard section with the text description in quotes, once to turn it on (ID+0), once to turn it off (ID+256). -
So you’re having the same issue with failed +256 shifting using a different callback but you’re still using the trigger? Ideas for troubleshooting:
1. X52 trigger is two-stage. I believe first detent holds one button and second holds two but I’m not sure.
2. Confirm the following line in falcon bms.cfg
set g_nHotasPinkyShiftMagnitude 256 // Enable DirectX Shifting and specify button offset
3. Are you sure that you are using the .key file you edited? Make sure you save the file in the text editor, possibly as a new filename, load it into Falcon, confirm new file name in setup screen.
4. SimHotasPinkyShift should appear 3 times in your .key file. Once in the keyboard section with the text description in quotes, once to turn it on (ID+0), once to turn it off (ID+256).1. 1st detent is button 1 and 2nd is button 15 from memory.
2. confirmed.
3. confirmed. I load it in the UI every time.
4. I’ll have to check this tomorrow. I am away from my desktop at the moment.Many thanks.
-
The pinky switch saga continues. . .I create an extremely cut down key file for experimental purposes only. I used the brake in and out call for visual confirmation.
Assigned pinky to button 5 - the one that is on the handle by your little pinky finger and it doesn’t work. . . I can brake out but brake in is ignored.
SimEndFlight -1 0 0X1 0 0 0 0 “SIM: Toggle Exit Sim Menu”
OTWSelectChaseMode -1 0 0XA 0 0 0 1 “VIEWEXT: Chase Camera”
SimHotasPinkyShift 5 -1 -2 0 0X0 0
SimHotasPinkyShift 261 -1 -2 0 0X0 0
AFBrakesIn 265 -1 -2 0 0X0 0 “”
AFBrakesOut 9 -1 -2 0 0X0 0 “”Change the pinky button to another button on the hotas and it works fine . . .Brake comes out. I hold the shift button (next to th emain POV) hit button 9 and in come the brakes again.
SimEndFlight -1 0 0X1 0 0 0 0 “SIM: Toggle Exit Sim Menu”
OTWSelectChaseMode -1 0 0XA 0 0 0 1 “VIEWEXT: Chase Camera”
SimHotasPinkyShift 3 -1 -2 0 0X0 0
SimHotasPinkyShift 259 -1 -2 0 0X0 0
AFBrakesIn 265 -1 -2 0 0X0 0 “”
AFBrakesOut 9 -1 -2 0 0X0 0 “”So, what the hell is wrong with my proper pinky switch. I can see it operate in the Saitek control panel and it comes up as button 6 (button 5 in game). I note that this key does not show up when using the keyfile editor. All the other buttons show up when pressed?
-
One test if the SimHotasPinkyShift is working is if you are able to use its non-shifting function. If tapped it presses the pinky switch which controls among other things expanded display of the FCR (“EXP” with highlight at the top of the MFD). If you can’t use the pinky switch this way then shifting by holding it will never happen.
As for why the callback does not show up in the list is because the list only shows “keyboard type” line entries. The DX entries are invisible lines. This is why I mentioned that SimHotasPinkyShift should appear three times in your .key file. If you look at my .key file and take an example you notice that I have the lines:
AFGearUp -1 0 0XFFFFFFFF 0 0 0 1 “Gear Up”
and
AFGearUp 23 8 -2 0 0x0 0Having the blank (0xF… is the blank code) is not just there for my health. Despite the fact that I only trigger the AFGearUp callback using DXid 23 I still have the blank keyboard entry as well. From my prior testing if I removed the top line it breaks functionality for the DX line.