Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Support for FS 2020 #8

Open
Rexeh opened this issue Sep 18, 2020 · 5 comments
Open

Add Support for FS 2020 #8

Rexeh opened this issue Sep 18, 2020 · 5 comments
Assignees
Labels
enhancement New feature or request

Comments

@Rexeh
Copy link
Owner

Rexeh commented Sep 18, 2020

Request was made to add Flight Simulator 2020 support.

Things to do:

  • Assess if this is possible (configs may be stored in cloud)
  • Get hold of a config file
@Rexeh Rexeh added the enhancement New feature or request label Sep 18, 2020
@mike8234
Copy link

mike8234 commented Apr 9, 2021

Here is the file where MSFS saves my controller profile I setup for a VKB NXT joystick. This is the folder location where it is saved: C:\Users\mike7\AppData\Local\Packages\Microsoft.FlightSimulator_8wekyb3d8bbwe\SystemAppData\wgs\000901FD59FE6970_00000000000000000000000069F80140\18369854760447D595E7B004774F8C04
If you have other devices such as a throttle device, they are stored one directory above the one listed above, each device gets its own folder. In each device folder the file with the long name of numbers seems to be the mapping, and there is also a file named container.XX which I'm not sure what it is for.
MSFSmap.zip

@twitchd8
Copy link

Interesting... I opened the File you attached, called 8EB8B7BC38BF4767AE5D694AB3A7F5EB in notepad++, and it's actually an XML file...

<?xml version="1.0" encoding="UTF-8"?>
<Version Num="1546"/>
<FriendlyName>VKB NXT - [Standard]</FriendlyName>
<Device DeviceName=" VKB-Sim Gladiator NXT R  " GUID="{57762A10-988B-11EB-8001-444553540000}" ProductID="512">
	<Axes>
		<Axis AxisName="X" AxisSensitivy="-50" AxisSensitivyMinus="-50" AxisNeutral="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisResponseRate="-1"/>
		<Axis AxisName="Y" AxisSensitivy="-49" AxisSensitivyMinus="-50" AxisNeutral="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisResponseRate="-1"/>
		<Axis AxisName="Z" AxisSensitivy="0" AxisSensitivyMinus="0" AxisNeutral="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisResponseRate="-1"/>
		<Axis AxisName="rX" AxisSensitivy="0" AxisSensitivyMinus="0" AxisNeutral="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisResponseRate="-1"/>
		<Axis AxisName="rY" AxisSensitivy="0" AxisSensitivyMinus="0" AxisNeutral="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisResponseRate="-1"/>
		<Axis AxisName="rZ" AxisSensitivy="-50" AxisSensitivyMinus="-50" AxisNeutral="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisResponseRate="-1"/>
		<Axis AxisName="SliderX" AxisSensitivy="0" AxisSensitivyMinus="0" AxisNeutral="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisResponseRate="-1"/>
		<Axis AxisName="SliderY" AxisSensitivy="0" AxisSensitivyMinus="0" AxisNeutral="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisResponseRate="-1"/>
	</Axes>
	<Context ContextName="PLANE">
		<Action ActionName="KEY_GEAR_TOGGLE" Flag="2">
			<Primary>
				<KEY Information="Joystick Button 3">2</KEY>
			</Primary>
		</Action>
		<Action ActionName="KEY_BRAKES" Flag="2">
			<Primary>
				<KEY Information="Joystick Button 1">0</KEY>
			</Primary>
		</Action>
		<Action ActionName="KEY_SPOILERS_TOGGLE" Flag="2">
			<Primary>
				<KEY Information="Joystick Button 5">4</KEY>
			</Primary>
		</Action>
		<Action ActionName="KEY_ELEV_TRIM_DN" Flag="2">
			<Primary>
				<KEY Information="Joystick Button 23">22</KEY>
			</Primary>
		</Action>
		<Action ActionName="KEY_ELEV_TRIM_UP" Flag="2">
			<Primary>
				<KEY Information="Joystick Button 24">23</KEY>
			</Primary>
		</Action>
		<Action ActionName="KEY_PARKING_BRAKES" Flag="2">
			<Primary>
				<KEY Information="Joystick Button 1">0</KEY>
				<KEY Information="Joystick Button 2">1</KEY>
			</Primary>
		</Action>
		<Action ActionName="KEY_FLAPS_INCR" Flag="2">
			<Primary>
				<KEY Information="Joystick Button 13">12</KEY>
			</Primary>
		</Action>
		<Action ActionName="KEY_FLAPS_DECR" Flag="2">
			<Primary>
				<KEY Information="Joystick Button 11">10</KEY>
			</Primary>
		</Action>
		<Action ActionName="KEY_AXIS_ELEVATOR_SET" Flag="4">
			<Primary>
				<KEY Information="Joystick L-Axis Y ">1042</KEY>
			</Primary>
		</Action>
		<Action ActionName="KEY_AXIS_AILERONS_SET" Flag="4">
			<Primary>
				<KEY Information="Joystick L-Axis X ">1026</KEY>
			</Primary>
		</Action>
		<Action ActionName="KEY_AXIS_RUDDER_SET" Flag="4">
			<Primary>
				<KEY Information="Joystick R-Axis Z ">802</KEY>
			</Primary>
		</Action>
		<Action ActionName="KEY_AILERON_TRIM_LEFT" Flag="2">
			<Primary>
				<KEY Information="Joystick Button 28">27</KEY>
			</Primary>
		</Action>
		<Action ActionName="KEY_AILERON_TRIM_RIGHT" Flag="2">
			<Primary>
				<KEY Information="Joystick Button 29">28</KEY>
			</Primary>
		</Action>
		<Action ActionName="KEY_AILERON_TRIM_DISABLED_TOGGLE" Flag="2">
			<Primary>
				<KEY Information="Joystick Button 27">26</KEY>
			</Primary>
		</Action>
		<Action ActionName="KEY_ELEVATOR_TRIM_DISABLED_SET" Flag="2">
			<Primary>
				<KEY Information="Joystick Button 4">3</KEY>
			</Primary>
		</Action>
		<Action ActionName="KEY_THROTTLE1_AXIS_SET_EX1" Flag="4">
			<Primary>
				<KEY Information="Joystick L-Axis Z ">1058</KEY>
			</Primary>
		</Action>
	</Context>
	<Context ContextName="MODES">
		<Action ActionName="KEY_COCKPIT_RESET" Flag="2">
			<Primary>
				<KEY Information="Joystick Button 15">14</KEY>
			</Primary>
		</Action>
	</Context>
	<Context ContextName="COCKPIT_GLOBAL_CAMERA">
		<Action ActionName="KEY_COCKPIT_FREELOOK_VRTC_SET" Flag="4">
			<Primary>
				<KEY Information="Joystick R-Axis Y ">786</KEY>
			</Primary>
		</Action>
		<Action ActionName="KEY_COCKPIT_FREELOOK_HRZ_SET" Flag="132">
			<Primary>
				<KEY Information="Joystick R-Axis X ">770</KEY>
			</Primary>
		</Action>
	</Context>
</Device>

@Rexeh
Copy link
Owner Author

Rexeh commented Dec 30, 2023

Thanks @twitchd8 if that is the case then it will be easy to add support in the next version.

Do you know the significance of the key values for each action? In the one below 770

<KEY Information="Joystick R-Axis X ">770</KEY>

Update
These seem insignificant on second look. All but buttons can be parsed from the information item, the button will be "value" as appears to be the "real" number, string value is offset1 (or could be flipped but not a major issue to fix)

Hardest part here is navigating users to that awful folder structure!

With the plugin system now live, anyone can pick this up.

@Rexeh Rexeh self-assigned this Mar 21, 2024
@Rexeh
Copy link
Owner Author

Rexeh commented Mar 22, 2024

Rough POC of this is now almost completed, will be on the hunt for testers before release.

Some nuances exist which cannot be modelled in Joystick Diagrams, such as X+ X-, the software does not split these distinctions nor many of the games I've looked at. As such these instances will be merged into something like X+ Action | X- Action for X AXIS out in diagrams.

@Rexeh Rexeh modified the milestone: FS 2020 Support Mar 22, 2024
@Rexeh
Copy link
Owner Author

Rexeh commented Mar 22, 2024

Version working with modifiers, a fair bit of testing will be required as some assumptions have had to be made such as single POV only being supported. I lack the test cases to verify the behaviour with multi POV as no numbering is given in single POV configs.

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

When branches are created from issues, their pull requests are automatically linked.

3 participants