diff --git a/Devices/Options/DeviceTuningParameter.cs b/Devices/Options/DeviceTuningParameter.cs
index ef5bdcf..76a4060 100644
--- a/Devices/Options/DeviceTuningParameter.cs
+++ b/Devices/Options/DeviceTuningParameter.cs
@@ -310,7 +310,7 @@ namespace SCJMapper_V2.Devices.Options
/// The XML string or an empty string
public string Options_toXML()
{
- if ( ( /*SensitivityUsed ||*/ ExponentUsed || InvertForced || NonLinCurveUsed ) == false ) return ""; // not used
+ if ( ( /*SensitivityUsed ||*/ ExponentUsed || InvertForced || InvertUsed || NonLinCurveUsed ) == false ) return ""; // not used
if ( DevInstanceNo < 1 ) return ""; // no device to assign it to..
string tmp = "";
diff --git a/FormMain.Designer.cs b/FormMain.Designer.cs
index 1849cc5..6350255 100644
--- a/FormMain.Designer.cs
+++ b/FormMain.Designer.cs
@@ -1400,6 +1400,7 @@
//
this.meShowLayoutDialog.Name = "meShowLayoutDialog";
this.meShowLayoutDialog.Size = new System.Drawing.Size(250, 22);
+ this.meShowLayoutDialog.Tag = "§";
this.meShowLayoutDialog.Text = "Show Layout Dialog...";
this.meShowLayoutDialog.Click += new System.EventHandler(this.meShowLayoutDialog_Click);
//
diff --git a/FormMain.resx b/FormMain.resx
index 6098778..4f4fbb8 100644
--- a/FormMain.resx
+++ b/FormMain.resx
@@ -128,7 +128,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAA8
- EAAAAk1TRnQBSQFMAgEBCQEAAWgBFAFoARQBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
+ EAAAAk1TRnQBSQFMAgEBCQEAAXABFAFwARQBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAATADAAEBAQABCAYAAQwYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
@@ -582,7 +582,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACy
- HQAAAk1TRnQBSQFMAgEBBAEAASgBAgEoAQIBMAEAATABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
+ HQAAAk1TRnQBSQFMAgEBBAEAATABAgEwAQIBMAEAATABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABwAMAAWADAAEBAQABCAYAAUgYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
@@ -614,7 +614,7 @@
/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AI8A
HP8JAAH/EgAD9AHzBPAB8wP0KgAB/wL0AfME8AHzAvQB/0MAAf8B8wG6HKwBugHzAf8TAAH0AfABuwGR
D2sBiwGRAbsB8QH0HwAB/wHyAQcBtAGLDGsBiwH3AbwB8wH/GgAB9AHwAQcB7wKSAe8BBwHwAfQYAAH/
- AfMBsiCsAbIB8wH/DQAB9QHuAZEZawFsAZEB8AH/GQAB8wH3FmsBuwH0FQAB/wHxAfcB7wEHArwC8QK8
+ AfMBsiCsAbIB8wH/DQAB/wG8AZEZawFsAZEB8AH/GQAB8wH3FmsBuwH0FQAB/wHxAfcB7wEHArwC8QK8
AQcB7wH3AfEB/xQAAf8BCSSsAQkB/woAAfIBkSBrAbsB9BUAAfQBuxprAbsB9BIAAfEBkgHvAfAK8QHw
Ae8BkgHxEgAB/wEJJqwBCQH/BwAB9AG7JGsBuwH/EgAB8wJrGooCawH0DwAB/wHwAe8B8A7xAfAB7wHw
Af8PAAH/AfMorAHzAf8FAAHxAmskigFrAfcB8xEAAfcBaxyKAWsBuw4AAfQBvAEHBPEB8AH3AZABiwJr
@@ -637,7 +637,7 @@
AfEBawKzAfQB/wEZAbMBawHwAvIBkgkAAf8GrAKzAQ0BQwGzAdsBiwINAWwBugHbAbMDiwG0A7oB2wG0
AUMBswHbAbMEDQKzBqwB/wUAAbsBigGzAZAfiwGQArMBigEHBQAB/wErEjIBMQFMAUoBBgmzAYoBuwHz
Af8SAAGSA/IBiwGzAfQB/wEZArMBawHyBvMB8gFrArMB9AH/ARkBswFrAfAC8gGSCQAB/wasArMCDQG0
- AdsBswINAbMD2wKQAYsBtAXbAWwBiwLbAWYCDwENArMGrAH/BgABuwEGArMekAKzAWsB7gYAAfMBKxQy
+ AdsBswINAbMD2wKQAYsBtAXbAWwBiwLbAWYCDwENArMGrAH/BgABuwEGArMekAKzAWsBvAYAAfMBKxQy
AUoBigmzAYoBuxQAAfcB8gHzAfIBiwGQAbMBugOzAYoBuwH/BPMB/wG7AYoDswG6ArMBawHyAfMB8gH3
CQAB/wasArMCDQGQAtsBZgENAbQC2wG0A4sBkAO0AtsBiwFsAtsBiwMPArMGrAH/BwABuwGKA7MZkAOz
AYoBawHxBwAB9AErFDIBbAuzAWsB/xMAAQcB8AH0AfIBkQGQBrMBiwH0BP8B9AGLAZAGswGLAfIB9AHw
@@ -646,7 +646,7 @@
BrMBgQGRAfMB9AG8AfAJAAH/BqwCswEPAQ0BZgbbAYsGDQGLA9sBswENAbQB2wG0AQ0CDwKzBqwB/woA
AfIBkQGKAYEFswqQBrMBgQGKAYsBvAH/CwABUhMyAVEBiguzAYoBuxMAAfMB7wH/AfMB8gFrAbMBuQaz
AYoCawGKCLMBigHwAfMB9AHvAfMJAAH/BqwCswEPAg0BugXbAbQBZgQNAZAD2wG0AWYBDQGRAtsBZgEK
- AQ8CswasAf8MAAH1Ae4BkQFrAooBswqQAbMBkAGKAQYBiwGRAe4B9A4AARoBMRIyAUoBkAyzAZETAAH/
+ AQ8CswasAf8MAAH/AbwBkQFrAooBswqQAbMBkAGKAQYBiwGRAbwB9A4AARoBMRIyAUoBkAyzAZETAAH/
AZIB9AH/AfMBtAGKAdoBuQ+zAdoBswGRAfMB/wH0AZIB/wkAAf8GrAG5AbMCDwENAbQC2wG0BNsBkAEN
AWYBtAPbAYsBDQEPAQoBiwLbAWwBDgEPAbMBuQasAf8QAAH0AYoMswKQAfQSAAH/ASsBMgFTEDIBbA2z
AWsB/xMAAfEBvAH/AvMBawGzAdoOuQHaAbkBawHwAfMB/wG8AfEKAAH/BqwBugGzAQ8BDgEKAYsC2wFm
@@ -674,7 +674,7 @@
AQ4CCgEOAgoCDgEKAw4CAAK6BqwB/w4AAQcBkBKzAbsYAAF0AVMMWQErAf8BAAHzAfABuwG8AfMB/xkA
AfEBBwH/AvMCvA4AArwC8wH/AQcB8QsAAf8GrAGzAdsBbBoNAWwB2wGzBqwB/w4AAbsBkBKzAfcYAAFS
DVkBMQH/IAAB9AHvAf8B9AHzAfIB7wHzDAAB8wHvAfIB8wH0Af8B7wH0CwAB/wesAbkB2xq6AdsBuQes
- Af8OAAHuAZASswG0GAABUg1ZATEB8yEAAQcB8gH/AvMB8AH3AfQKAAH0AfcB8ALzAf8B8gEHDAAB/wis
+ Af8OAAG8AZASswG0GAABUg1ZATEB8yEAAQcB8gH/AvMB8AH3AfQKAAH0AfcB8ALzAf8B8gEHDAAB/wis
AbIaswGyCKwB/w4AAfABihG5AbMBtRgAAVINWQExARshAAHzAe8C/wLzAbwB9wHzCAAB8wH3AbwC8wL/
Ae8B8wwAAf8srAH/DgAB8wEGEbkBkAG7GAABUg1ZATEBGyIAAvAB/wH0AvMB8AHvAbwB8gH0Av8B9AHy
AbwB7wHwAvMB9AH/AvAOAAG6KqwBug8AAf8BaxG5AYoB8RgAAXkBUwxZATEB9CIAAfQBkgHzAf8B9APz
diff --git a/Layout/ControllerJson.cs b/Layout/ControllerJson.cs
index e1d5348..ada1d46 100644
--- a/Layout/ControllerJson.cs
+++ b/Layout/ControllerJson.cs
@@ -54,5 +54,6 @@ namespace SCJMapper_V2.Layout
}
}
+
}
}
diff --git a/Layout/DbgActionItemList.cs b/Layout/DbgActionItemList.cs
index 830020a..bc8ef21 100644
--- a/Layout/DbgActionItemList.cs
+++ b/Layout/DbgActionItemList.cs
@@ -96,95 +96,126 @@ namespace SCJMapper_V2.Layout
{
var ail = new List( );
var ai = new ActionItem {
- ActionMap = aMap, ControlInput = $"x", DeviceName = "Debug Controller",
+ ActionMap = aMap, ControlInput = "x", DeviceName = "Debug Controller",
DeviceProdGuid = GamepadCls.DevGUIDCIG, DispText = $"GP - Button X", InputType = $"G1"
}; ail.Add( ai );
ai = new ActionItem {
- ActionMap = aMap, ControlInput = $"a", DeviceName = "Debug Controller",
+ ActionMap = aMap, ControlInput = "a", DeviceName = "Debug Controller",
DeviceProdGuid = GamepadCls.DevGUIDCIG, DispText = $"GP - Button A", InputType = $"G1"
}; ail.Add( ai );
ai = new ActionItem {
- ActionMap = aMap, ControlInput = $"b", DeviceName = "Debug Controller",
+ ActionMap = aMap, ControlInput = "b", DeviceName = "Debug Controller",
DeviceProdGuid = GamepadCls.DevGUIDCIG, DispText = $"GP - Button B", InputType = $"G1"
}; ail.Add( ai );
ai = new ActionItem {
- ActionMap = aMap, ControlInput = $"y", DeviceName = "Debug Controller",
+ ActionMap = aMap, ControlInput = "y", DeviceName = "Debug Controller",
DeviceProdGuid = GamepadCls.DevGUIDCIG, DispText = $"GP - Button Y", InputType = $"G1"
}; ail.Add( ai );
ai = new ActionItem {
- ActionMap = aMap, ControlInput = $"shoulderl", DeviceName = "Debug Controller",
+ ActionMap = aMap, ControlInput = "shoulderl", DeviceName = "Debug Controller",
DeviceProdGuid = GamepadCls.DevGUIDCIG, DispText = $"GP - Button Shoulder Left", InputType = $"G1"
}; ail.Add( ai );
ai = new ActionItem {
- ActionMap = aMap, ControlInput = $"shoulderr", DeviceName = "Debug Controller",
+ ActionMap = aMap, ControlInput = "shoulderr", DeviceName = "Debug Controller",
DeviceProdGuid = GamepadCls.DevGUIDCIG, DispText = $"GP - Button Shoulder Right", InputType = $"G1"
}; ail.Add( ai );
ai = new ActionItem {
- ActionMap = aMap, ControlInput = $"triggerl_btn", DeviceName = "Debug Controller",
+ ActionMap = aMap, ControlInput = "triggerl_btn", DeviceName = "Debug Controller",
DeviceProdGuid = GamepadCls.DevGUIDCIG, DispText = $"GP - Button Trigger Left", InputType = $"G1"
}; ail.Add( ai );
ai = new ActionItem {
- ActionMap = aMap, ControlInput = $"triggerr_btn", DeviceName = "Debug Controller",
+ ActionMap = aMap, ControlInput = "triggerr_btn", DeviceName = "Debug Controller",
DeviceProdGuid = GamepadCls.DevGUIDCIG, DispText = $"GP - Button Trigger Right", InputType = $"G1"
}; ail.Add( ai );
ai = new ActionItem {
- ActionMap = aMap, ControlInput = $"back", DeviceName = "Debug Controller",
+ ActionMap = aMap, ControlInput = "back", DeviceName = "Debug Controller",
DeviceProdGuid = GamepadCls.DevGUIDCIG, DispText = $"GP - Button Back", InputType = $"G1"
}; ail.Add( ai );
ai = new ActionItem {
- ActionMap = aMap, ControlInput = $"start", DeviceName = "Debug Controller",
+ ActionMap = aMap, ControlInput = "start", DeviceName = "Debug Controller",
DeviceProdGuid = GamepadCls.DevGUIDCIG, DispText = $"GP - Button Start", InputType = $"G1"
}; ail.Add( ai );
ai = new ActionItem {
- ActionMap = aMap, ControlInput = $"thumbl", DeviceName = "Debug Controller",
+ ActionMap = aMap, ControlInput = "thumbl", DeviceName = "Debug Controller",
DeviceProdGuid = GamepadCls.DevGUIDCIG, DispText = $"GP - Button Thumb Left", InputType = $"G1"
}; ail.Add( ai );
ai = new ActionItem {
- ActionMap = aMap, ControlInput = $"thumbr", DeviceName = "Debug Controller",
+ ActionMap = aMap, ControlInput = "thumbr", DeviceName = "Debug Controller",
DeviceProdGuid = GamepadCls.DevGUIDCIG, DispText = $"GP - Button Thumb Right", InputType = $"G1"
}; ail.Add( ai );
ai = new ActionItem {
- ActionMap = aMap, ControlInput = $"dpad_up", DeviceName = "Debug Controller",
+ ActionMap = aMap, ControlInput = "dpad_up", DeviceName = "Debug Controller",
DeviceProdGuid = GamepadCls.DevGUIDCIG, DispText = $"GP - POV Up", InputType = $"G1"
}; ail.Add( ai );
ai = new ActionItem {
- ActionMap = aMap, ControlInput = $"dpad_right", DeviceName = "Debug Controller",
+ ActionMap = aMap, ControlInput = "dpad_right", DeviceName = "Debug Controller",
DeviceProdGuid = GamepadCls.DevGUIDCIG, DispText = $"GP - POV Right", InputType = $"G1"
}; ail.Add( ai );
ai = new ActionItem {
- ActionMap = aMap, ControlInput = $"dpad_down", DeviceName = "Debug Controller",
+ ActionMap = aMap, ControlInput = "dpad_down", DeviceName = "Debug Controller",
DeviceProdGuid = GamepadCls.DevGUIDCIG, DispText = $"GP - POV Down", InputType = $"G1"
}; ail.Add( ai );
ai = new ActionItem {
- ActionMap = aMap, ControlInput = $"dpad_left", DeviceName = "Debug Controller",
+ ActionMap = aMap, ControlInput = "dpad_left", DeviceName = "Debug Controller",
DeviceProdGuid = GamepadCls.DevGUIDCIG, DispText = $"GP - POV Left", InputType = $"G1"
}; ail.Add( ai );
ai = new ActionItem {
- ActionMap = aMap, ControlInput = $"thumblx", DeviceName = "Debug Controller",
+ ActionMap = aMap, ControlInput = "thumblx", DeviceName = "Debug Controller",
DeviceProdGuid = GamepadCls.DevGUIDCIG, DispText = $"GP - X - Axis Thumb Left", InputType = $"G1"
}; ail.Add( ai );
ai = new ActionItem {
- ActionMap = aMap, ControlInput = $"thumbly", DeviceName = "Debug Controller",
+ ActionMap = aMap, ControlInput = "thumbly", DeviceName = "Debug Controller",
DeviceProdGuid = GamepadCls.DevGUIDCIG, DispText = $"GP - Y - Axis Thumb Left", InputType = $"G1"
}; ail.Add( ai );
ai = new ActionItem {
- ActionMap = aMap, ControlInput = $"thumbrx", DeviceName = "Debug Controller",
+ ActionMap = aMap, ControlInput = "thumbrx", DeviceName = "Debug Controller",
DeviceProdGuid = GamepadCls.DevGUIDCIG, DispText = $"GP - X - Axis Thumb Right", InputType = $"G1"
}; ail.Add( ai );
ai = new ActionItem {
- ActionMap = aMap, ControlInput = $"thumbry", DeviceName = "Debug Controller",
+ ActionMap = aMap, ControlInput = "thumbry", DeviceName = "Debug Controller",
DeviceProdGuid = GamepadCls.DevGUIDCIG, DispText = $"GP - Y - Axis Thumb Right", InputType = $"G1"
}; ail.Add( ai );
return ail;
}
+ private List AI_GamepadMods( string aMap )
+ {
+ var ail = new List( );
+ var ai = new ActionItem {
+ ActionMap = aMap, ControlInput = "shoulderl+x", DeviceName = "Debug Controller",
+ DeviceProdGuid = GamepadCls.DevGUIDCIG, DispText = $"GP - ShLeft + Button X", InputType = $"G1"
+ }; ail.Add( ai );
+ ai = new ActionItem {
+ ActionMap = aMap, ControlInput = "shoulderl+a", DeviceName = "Debug Controller",
+ DeviceProdGuid = GamepadCls.DevGUIDCIG, DispText = $"GP - ShLeft + Button A", InputType = $"G1"
+ }; ail.Add( ai );
+ ai = new ActionItem {
+ ActionMap = aMap, ControlInput = "shoulderl+b", DeviceName = "Debug Controller",
+ DeviceProdGuid = GamepadCls.DevGUIDCIG, DispText = $"GP - ShLeft + Button B", InputType = $"G1"
+ }; ail.Add( ai );
+ ai = new ActionItem {
+ ActionMap = aMap, ControlInput = "shoulderl+y", DeviceName = "Debug Controller",
+ DeviceProdGuid = GamepadCls.DevGUIDCIG, DispText = $"GP - ShLeft + Button Y", InputType = $"G1"
+ }; ail.Add( ai );
+
+ ai = new ActionItem {
+ ActionMap = aMap, ControlInput = "shoulderl+triggerl_btn", DeviceName = "Debug Controller",
+ DeviceProdGuid = GamepadCls.DevGUIDCIG, DispText = $"GP - ShLeft + Trigger Left", InputType = $"G1"
+ }; ail.Add( ai );
+ ai = new ActionItem {
+ ActionMap = aMap, ControlInput = "shoulderl+triggerr_btn", DeviceName = "Debug Controller",
+ DeviceProdGuid = GamepadCls.DevGUIDCIG, DispText = $"GP - ShLeft + Trigger Right", InputType = $"G1"
+ }; ail.Add( ai );
+
+ return ail;
+ }
@@ -197,7 +228,7 @@ namespace SCJMapper_V2.Layout
// create Joysticks js1..js4 for the provided GUIDs
for ( int joy = 0; joy < guids.Length; joy++ ) {
// Joy Buttons are in "spaceship_general"
- for ( int i = 1; i <= 32; i++ ) {
+ for ( int i = 1; i <= 60; i++ ) { // Max BUTTONS = 60
m_actionItems.Add( AI_Button( "spaceship_general", (short)i, (short)( joy + 1 ), guids[joy] ) );
}
// Joy POVs are in "spaceship_view"
@@ -209,10 +240,12 @@ namespace SCJMapper_V2.Layout
}
// Create Gamepad
- // Joy Analogs are in "spaceship_targeting"
+ // Gamepads are in "spaceship_targeting"
m_actionItems.AddRange( AI_Gamepad( "spaceship_targeting" ) );
// Create Gamepad modified
+ // Gamepads Mods are in "spaceship_target_hailing"
+ m_actionItems.AddRange( AI_GamepadMods( "spaceship_target_hailing" ) );
// Create Keyboard
}
diff --git a/Layout/DeviceFile.cs b/Layout/DeviceFile.cs
index 83597eb..0e0260b 100644
--- a/Layout/DeviceFile.cs
+++ b/Layout/DeviceFile.cs
@@ -66,18 +66,34 @@ namespace SCJMapper_V2.Layout
for ( int i = 0; i < InputDevices.Count; i++ ) {
if ( InputDevices[i].DevicePIDVID.Contains( pidVid ) ) { // can have multiple PID VIDs for a device (alternates)
+ // input can be: {modifier+}Input
+ string[] e = input.Split( new char[] { '+' } );
+ string effInput = e[e.Length - 1]; // last item is the real input
// returns if we are asked for the first instance and it is the first one (default)
if ( firstInstance && ( InputDevices[i].InputTypeNumber == 1 ) ) {
- return InputDevices[i].FindItem( input );
+ return InputDevices[i].FindItem( effInput );
}
- else if (!firstInstance && InputDevices[i].InputTypeNumber > 1 ) {
- return InputDevices[i].FindItem( input ); // not first and J2.. - return any other (more than 2 not supported)
+ else if ( !firstInstance && InputDevices[i].InputTypeNumber > 1 ) {
+ return InputDevices[i].FindItem( effInput ); // not first and J2.. - return any other (more than 2 not supported)
}
}
}
return null;
}
+ ///
+ /// Get all devices with Name (only first GUID is returned)
+ ///
+ ///
+ public List Devices()
+ {
+ var ret = new List( );
+ for ( int i = 0; i < InputDevices.Count; i++ ) {
+ if ( !ret.Exists( x => x.DevGuid == InputDevices[i].DevDescriptor.DevGuid ) )
+ ret.Add( InputDevices[i].DevDescriptor );
+ }
+ return ret;
+ }
}
///
@@ -97,6 +113,28 @@ namespace SCJMapper_V2.Layout
// non Json
+ ///
+ /// Describes a known device
+ /// Used for the Layout Debug Mode
+ ///
+ public class DeviceDescriptor
+ {
+ public string DevGuid { get; set; } = "";
+ public string DevName { get; set; } = "";
+ public override string ToString()
+ {
+ return DevName;
+ }
+ }
+
+ public DeviceDescriptor DevDescriptor
+ {
+ get {
+ return new DeviceDescriptor( ) { DevGuid = DeviceProdGuid[0], DevName = DeviceName };
+ }
+ }
+
+
public string InputTypeLetter { get => InputType.Substring( 0, 1 ); }
public int InputTypeNumber
{
@@ -132,9 +170,6 @@ namespace SCJMapper_V2.Layout
/// The found Control or Null
public Control FindItem( string input )
{
- // input can be: {modifier+}Input
- string[] e = input.Split( new char[] { '+' } );
- string effInput = e[e.Length - 1]; // last item is the real input
for ( int i = 0; i < Controls.Count; i++ ) {
if ( input == Controls[i].Input ) {
return Controls[i];
@@ -153,6 +188,7 @@ namespace SCJMapper_V2.Layout
Controls[i].CreateShapes( );
}
}
+
}
///
@@ -209,7 +245,7 @@ namespace SCJMapper_V2.Layout
for ( int c = 0; c < nCols; c++ ) {
var sh = new ShapeItem {
X = X + c * baseWidth,
- Y = Y + l * baseHeight,
+ Y = Y + l * baseHeight + 2, // offset Y by 2 pix to have it more centered
Width = baseWidth,
Height = baseHeight
};
diff --git a/Layout/FormLayout.Designer.cs b/Layout/FormLayout.Designer.cs
index e8d06c2..909b4fd 100644
--- a/Layout/FormLayout.Designer.cs
+++ b/Layout/FormLayout.Designer.cs
@@ -32,34 +32,42 @@
this.chkLbActionGroups = new System.Windows.Forms.ListView();
this.chkLbActionMaps = new System.Windows.Forms.ListView();
this.pnlInput = new System.Windows.Forms.Panel();
+ this.btClose = new System.Windows.Forms.Button();
+ this.pnlDebug = new System.Windows.Forms.Panel();
+ this.cbxJs3 = new System.Windows.Forms.ComboBox();
+ this.cbxJs2 = new System.Windows.Forms.ComboBox();
+ this.cbxJs1 = new System.Windows.Forms.ComboBox();
+ this.label4 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.label1 = new System.Windows.Forms.Label();
+ this.btCreateDbgList = new System.Windows.Forms.Button();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
- this.btColors = new System.Windows.Forms.Button();
- this.btSave = new System.Windows.Forms.Button();
this.btLayout = new System.Windows.Forms.Button();
this.cbxLayouts = new System.Windows.Forms.ComboBox();
this.drawPanel = new System.Windows.Forms.Panel();
this.gbxColors = new System.Windows.Forms.GroupBox();
this.lblFontSize = new System.Windows.Forms.Label();
this.tbFontSize = new System.Windows.Forms.TrackBar();
- this.label2 = new System.Windows.Forms.Label();
- this.btAcceptColors = new System.Windows.Forms.Button();
+ this.lblLayoutNote = new System.Windows.Forms.Label();
+ this.btAccept = new System.Windows.Forms.Button();
this.lblTextColor = new System.Windows.Forms.Label();
this.lblTest = new System.Windows.Forms.Label();
this.lblBackColor = new System.Windows.Forms.Label();
this.chkLbActionGroupsColor = new System.Windows.Forms.ListView();
- this.btCancelColors = new System.Windows.Forms.Button();
+ this.btCancel = new System.Windows.Forms.Button();
+ this.panel1 = new System.Windows.Forms.Panel();
+ this.btSave = new System.Windows.Forms.Button();
+ this.btColors = new System.Windows.Forms.Button();
this.SFD = new System.Windows.Forms.SaveFileDialog();
this.colDlg = new System.Windows.Forms.ColorDialog();
- this.txGuid1 = new System.Windows.Forms.TextBox();
- this.txGuid2 = new System.Windows.Forms.TextBox();
- this.txGuid3 = new System.Windows.Forms.TextBox();
- this.btCreateDbgList = new System.Windows.Forms.Button();
this.tlPanel.SuspendLayout();
this.pnlInput.SuspendLayout();
+ this.pnlDebug.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.drawPanel.SuspendLayout();
this.gbxColors.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.tbFontSize)).BeginInit();
+ this.panel1.SuspendLayout();
this.SuspendLayout();
//
// tlPanel
@@ -71,14 +79,16 @@
this.tlPanel.Controls.Add(this.chkLbActionMaps, 0, 2);
this.tlPanel.Controls.Add(this.pnlInput, 0, 0);
this.tlPanel.Controls.Add(this.drawPanel, 1, 1);
+ this.tlPanel.Controls.Add(this.panel1, 0, 3);
this.tlPanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.tlPanel.Location = new System.Drawing.Point(0, 0);
this.tlPanel.Name = "tlPanel";
- this.tlPanel.RowCount = 3;
+ this.tlPanel.RowCount = 4;
this.tlPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 80F));
this.tlPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tlPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 75F));
- this.tlPanel.Size = new System.Drawing.Size(1298, 640);
+ this.tlPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 80F));
+ this.tlPanel.Size = new System.Drawing.Size(1271, 681);
this.tlPanel.TabIndex = 0;
//
// chkLbActionGroups
@@ -95,7 +105,7 @@
this.chkLbActionGroups.MultiSelect = false;
this.chkLbActionGroups.Name = "chkLbActionGroups";
this.chkLbActionGroups.ShowGroups = false;
- this.chkLbActionGroups.Size = new System.Drawing.Size(174, 134);
+ this.chkLbActionGroups.Size = new System.Drawing.Size(174, 124);
this.chkLbActionGroups.TabIndex = 5;
this.chkLbActionGroups.UseCompatibleStateImageBehavior = false;
this.chkLbActionGroups.View = System.Windows.Forms.View.Details;
@@ -111,12 +121,12 @@
this.chkLbActionMaps.HideSelection = false;
this.chkLbActionMaps.HoverSelection = true;
this.chkLbActionMaps.LabelWrap = false;
- this.chkLbActionMaps.Location = new System.Drawing.Point(3, 223);
+ this.chkLbActionMaps.Location = new System.Drawing.Point(3, 213);
this.chkLbActionMaps.MultiSelect = false;
this.chkLbActionMaps.Name = "chkLbActionMaps";
this.chkLbActionMaps.ShowGroups = false;
this.chkLbActionMaps.ShowItemToolTips = true;
- this.chkLbActionMaps.Size = new System.Drawing.Size(174, 414);
+ this.chkLbActionMaps.Size = new System.Drawing.Size(174, 384);
this.chkLbActionMaps.TabIndex = 6;
this.chkLbActionMaps.UseCompatibleStateImageBehavior = false;
this.chkLbActionMaps.View = System.Windows.Forms.View.Details;
@@ -124,21 +134,108 @@
// pnlInput
//
this.tlPanel.SetColumnSpan(this.pnlInput, 2);
- this.pnlInput.Controls.Add(this.btCreateDbgList);
- this.pnlInput.Controls.Add(this.txGuid3);
- this.pnlInput.Controls.Add(this.txGuid2);
- this.pnlInput.Controls.Add(this.txGuid1);
+ this.pnlInput.Controls.Add(this.btClose);
+ this.pnlInput.Controls.Add(this.pnlDebug);
this.pnlInput.Controls.Add(this.pictureBox1);
- this.pnlInput.Controls.Add(this.btColors);
- this.pnlInput.Controls.Add(this.btSave);
this.pnlInput.Controls.Add(this.btLayout);
this.pnlInput.Controls.Add(this.cbxLayouts);
this.pnlInput.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlInput.Location = new System.Drawing.Point(3, 3);
this.pnlInput.Name = "pnlInput";
- this.pnlInput.Size = new System.Drawing.Size(1292, 74);
+ this.pnlInput.Size = new System.Drawing.Size(1265, 74);
this.pnlInput.TabIndex = 1;
//
+ // btClose
+ //
+ this.btClose.Image = ((System.Drawing.Image)(resources.GetObject("btClose.Image")));
+ this.btClose.Location = new System.Drawing.Point(651, 16);
+ this.btClose.Name = "btClose";
+ this.btClose.Size = new System.Drawing.Size(80, 53);
+ this.btClose.TabIndex = 8;
+ this.btClose.UseVisualStyleBackColor = true;
+ this.btClose.Click += new System.EventHandler(this.btClose_Click);
+ //
+ // pnlDebug
+ //
+ this.pnlDebug.BackColor = System.Drawing.Color.Honeydew;
+ this.pnlDebug.Controls.Add(this.cbxJs3);
+ this.pnlDebug.Controls.Add(this.cbxJs2);
+ this.pnlDebug.Controls.Add(this.cbxJs1);
+ this.pnlDebug.Controls.Add(this.label4);
+ this.pnlDebug.Controls.Add(this.label3);
+ this.pnlDebug.Controls.Add(this.label1);
+ this.pnlDebug.Controls.Add(this.btCreateDbgList);
+ this.pnlDebug.Dock = System.Windows.Forms.DockStyle.Right;
+ this.pnlDebug.Location = new System.Drawing.Point(748, 0);
+ this.pnlDebug.Name = "pnlDebug";
+ this.pnlDebug.Size = new System.Drawing.Size(517, 74);
+ this.pnlDebug.TabIndex = 7;
+ this.pnlDebug.Visible = false;
+ //
+ // cbxJs3
+ //
+ this.cbxJs3.FormattingEnabled = true;
+ this.cbxJs3.Location = new System.Drawing.Point(42, 49);
+ this.cbxJs3.Name = "cbxJs3";
+ this.cbxJs3.Size = new System.Drawing.Size(376, 21);
+ this.cbxJs3.Sorted = true;
+ this.cbxJs3.TabIndex = 16;
+ //
+ // cbxJs2
+ //
+ this.cbxJs2.FormattingEnabled = true;
+ this.cbxJs2.Location = new System.Drawing.Point(42, 26);
+ this.cbxJs2.Name = "cbxJs2";
+ this.cbxJs2.Size = new System.Drawing.Size(376, 21);
+ this.cbxJs2.Sorted = true;
+ this.cbxJs2.TabIndex = 15;
+ //
+ // cbxJs1
+ //
+ this.cbxJs1.FormattingEnabled = true;
+ this.cbxJs1.Location = new System.Drawing.Point(42, 3);
+ this.cbxJs1.Name = "cbxJs1";
+ this.cbxJs1.Size = new System.Drawing.Size(376, 21);
+ this.cbxJs1.Sorted = true;
+ this.cbxJs1.TabIndex = 14;
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Location = new System.Drawing.Point(14, 52);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(22, 13);
+ this.label4.TabIndex = 13;
+ this.label4.Text = "Js3";
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(14, 29);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(22, 13);
+ this.label3.TabIndex = 12;
+ this.label3.Text = "Js2";
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(14, 6);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(22, 13);
+ this.label1.TabIndex = 11;
+ this.label1.Text = "Js1";
+ //
+ // btCreateDbgList
+ //
+ this.btCreateDbgList.Location = new System.Drawing.Point(424, 9);
+ this.btCreateDbgList.Name = "btCreateDbgList";
+ this.btCreateDbgList.Size = new System.Drawing.Size(74, 56);
+ this.btCreateDbgList.TabIndex = 10;
+ this.btCreateDbgList.Text = "Create Debug List";
+ this.btCreateDbgList.UseVisualStyleBackColor = true;
+ this.btCreateDbgList.Click += new System.EventHandler(this.btCreateDbgList_Click);
+ //
// pictureBox1
//
this.pictureBox1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("pictureBox1.BackgroundImage")));
@@ -151,30 +248,10 @@
this.pictureBox1.TabStop = false;
this.pictureBox1.DoubleClick += new System.EventHandler(this.pictureBox1_DoubleClick);
//
- // btColors
- //
- this.btColors.Image = global::SCJMapper_V2.Properties.Resources.Settings;
- this.btColors.Location = new System.Drawing.Point(651, 15);
- this.btColors.Name = "btColors";
- this.btColors.Size = new System.Drawing.Size(80, 54);
- this.btColors.TabIndex = 5;
- this.btColors.UseVisualStyleBackColor = true;
- this.btColors.Click += new System.EventHandler(this.btColors_Click);
- //
- // btSave
- //
- this.btSave.Image = ((System.Drawing.Image)(resources.GetObject("btSave.Image")));
- this.btSave.Location = new System.Drawing.Point(534, 15);
- this.btSave.Name = "btSave";
- this.btSave.Size = new System.Drawing.Size(80, 54);
- this.btSave.TabIndex = 4;
- this.btSave.UseVisualStyleBackColor = true;
- this.btSave.Click += new System.EventHandler(this.btSave_Click);
- //
// btLayout
//
this.btLayout.Image = ((System.Drawing.Image)(resources.GetObject("btLayout.Image")));
- this.btLayout.Location = new System.Drawing.Point(383, 16);
+ this.btLayout.Location = new System.Drawing.Point(431, 16);
this.btLayout.Name = "btLayout";
this.btLayout.Size = new System.Drawing.Size(80, 53);
this.btLayout.TabIndex = 3;
@@ -187,7 +264,8 @@
this.cbxLayouts.FormattingEnabled = true;
this.cbxLayouts.Location = new System.Drawing.Point(91, 30);
this.cbxLayouts.Name = "cbxLayouts";
- this.cbxLayouts.Size = new System.Drawing.Size(269, 25);
+ this.cbxLayouts.Size = new System.Drawing.Size(334, 25);
+ this.cbxLayouts.Sorted = true;
this.cbxLayouts.TabIndex = 1;
this.cbxLayouts.SelectedIndexChanged += new System.EventHandler(this.cbxLayouts_SelectedIndexChanged);
//
@@ -199,8 +277,8 @@
this.drawPanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.drawPanel.Location = new System.Drawing.Point(183, 83);
this.drawPanel.Name = "drawPanel";
- this.tlPanel.SetRowSpan(this.drawPanel, 2);
- this.drawPanel.Size = new System.Drawing.Size(1112, 554);
+ this.tlPanel.SetRowSpan(this.drawPanel, 3);
+ this.drawPanel.Size = new System.Drawing.Size(1085, 595);
this.drawPanel.TabIndex = 2;
//
// gbxColors
@@ -208,17 +286,17 @@
this.gbxColors.BackColor = System.Drawing.Color.Gray;
this.gbxColors.Controls.Add(this.lblFontSize);
this.gbxColors.Controls.Add(this.tbFontSize);
- this.gbxColors.Controls.Add(this.label2);
- this.gbxColors.Controls.Add(this.btAcceptColors);
+ this.gbxColors.Controls.Add(this.lblLayoutNote);
+ this.gbxColors.Controls.Add(this.btAccept);
this.gbxColors.Controls.Add(this.lblTextColor);
this.gbxColors.Controls.Add(this.lblTest);
this.gbxColors.Controls.Add(this.lblBackColor);
this.gbxColors.Controls.Add(this.chkLbActionGroupsColor);
- this.gbxColors.Controls.Add(this.btCancelColors);
+ this.gbxColors.Controls.Add(this.btCancel);
this.gbxColors.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.gbxColors.Location = new System.Drawing.Point(17, 16);
this.gbxColors.Name = "gbxColors";
- this.gbxColors.Size = new System.Drawing.Size(534, 418);
+ this.gbxColors.Size = new System.Drawing.Size(534, 455);
this.gbxColors.TabIndex = 0;
this.gbxColors.TabStop = false;
this.gbxColors.Text = "Layout Settings";
@@ -228,6 +306,7 @@
//
this.lblFontSize.AutoSize = true;
this.lblFontSize.Font = new System.Drawing.Font("Segoe UI", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.lblFontSize.ForeColor = System.Drawing.Color.LightCyan;
this.lblFontSize.Location = new System.Drawing.Point(428, 35);
this.lblFontSize.Name = "lblFontSize";
this.lblFontSize.Size = new System.Drawing.Size(37, 30);
@@ -249,25 +328,27 @@
this.tbFontSize.Value = 16;
this.tbFontSize.Scroll += new System.EventHandler(this.tbFontSize_Scroll);
//
- // label2
+ // lblLayoutNote
//
- this.label2.AutoSize = true;
- this.label2.Location = new System.Drawing.Point(248, 243);
- this.label2.Name = "label2";
- this.label2.Size = new System.Drawing.Size(247, 78);
- this.label2.TabIndex = 12;
- this.label2.Text = "Select an entry in the list and then click above \r\nto assing colors.\r\n\r\nNote: \r\nW" +
+ this.lblLayoutNote.ForeColor = System.Drawing.Color.LightCyan;
+ this.lblLayoutNote.Location = new System.Drawing.Point(248, 246);
+ this.lblLayoutNote.Name = "lblLayoutNote";
+ this.lblLayoutNote.Size = new System.Drawing.Size(247, 141);
+ this.lblLayoutNote.TabIndex = 12;
+ this.lblLayoutNote.Tag = "§";
+ this.lblLayoutNote.Text = "Select an entry in the list and then click above \r\nto assign colors.\r\n\r\nNote: \r\nW" +
"hite background is treated as Transparent\r\nwhile drawing items to the image.";
//
- // btAcceptColors
+ // btAccept
//
- this.btAcceptColors.Location = new System.Drawing.Point(234, 370);
- this.btAcceptColors.Name = "btAcceptColors";
- this.btAcceptColors.Size = new System.Drawing.Size(129, 26);
- this.btAcceptColors.TabIndex = 11;
- this.btAcceptColors.Text = "Accept";
- this.btAcceptColors.UseVisualStyleBackColor = true;
- this.btAcceptColors.Click += new System.EventHandler(this.btAcceptColors_Click);
+ this.btAccept.Location = new System.Drawing.Point(229, 407);
+ this.btAccept.Name = "btAccept";
+ this.btAccept.Size = new System.Drawing.Size(129, 26);
+ this.btAccept.TabIndex = 11;
+ this.btAccept.Tag = "§";
+ this.btAccept.Text = "Accept";
+ this.btAccept.UseVisualStyleBackColor = true;
+ this.btAccept.Click += new System.EventHandler(this.btAcceptColors_Click);
//
// lblTextColor
//
@@ -323,15 +404,46 @@
this.chkLbActionGroupsColor.View = System.Windows.Forms.View.Details;
this.chkLbActionGroupsColor.ItemActivate += new System.EventHandler(this.chkLbActionGroupsColor_ItemActivate);
//
- // btCancelColors
+ // btCancel
//
- this.btCancelColors.Location = new System.Drawing.Point(382, 370);
- this.btCancelColors.Name = "btCancelColors";
- this.btCancelColors.Size = new System.Drawing.Size(129, 26);
- this.btCancelColors.TabIndex = 6;
- this.btCancelColors.Text = "Cancel";
- this.btCancelColors.UseVisualStyleBackColor = true;
- this.btCancelColors.Click += new System.EventHandler(this.btCloseColors_Click);
+ this.btCancel.Location = new System.Drawing.Point(377, 407);
+ this.btCancel.Name = "btCancel";
+ this.btCancel.Size = new System.Drawing.Size(129, 26);
+ this.btCancel.TabIndex = 6;
+ this.btCancel.Tag = "§";
+ this.btCancel.Text = "Cancel";
+ this.btCancel.UseVisualStyleBackColor = true;
+ this.btCancel.Click += new System.EventHandler(this.btCloseColors_Click);
+ //
+ // panel1
+ //
+ this.panel1.Controls.Add(this.btSave);
+ this.panel1.Controls.Add(this.btColors);
+ this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.panel1.Location = new System.Drawing.Point(3, 603);
+ this.panel1.Name = "panel1";
+ this.panel1.Size = new System.Drawing.Size(174, 75);
+ this.panel1.TabIndex = 7;
+ //
+ // btSave
+ //
+ this.btSave.Image = ((System.Drawing.Image)(resources.GetObject("btSave.Image")));
+ this.btSave.Location = new System.Drawing.Point(3, 11);
+ this.btSave.Name = "btSave";
+ this.btSave.Size = new System.Drawing.Size(62, 54);
+ this.btSave.TabIndex = 4;
+ this.btSave.UseVisualStyleBackColor = true;
+ this.btSave.Click += new System.EventHandler(this.btSave_Click);
+ //
+ // btColors
+ //
+ this.btColors.Image = global::SCJMapper_V2.Properties.Resources.Settings;
+ this.btColors.Location = new System.Drawing.Point(109, 11);
+ this.btColors.Name = "btColors";
+ this.btColors.Size = new System.Drawing.Size(62, 54);
+ this.btColors.TabIndex = 5;
+ this.btColors.UseVisualStyleBackColor = true;
+ this.btColors.Click += new System.EventHandler(this.btColors_Click);
//
// SFD
//
@@ -344,50 +456,16 @@
this.colDlg.AnyColor = true;
this.colDlg.FullOpen = true;
//
- // txGuid1
- //
- this.txGuid1.Location = new System.Drawing.Point(842, 2);
- this.txGuid1.Name = "txGuid1";
- this.txGuid1.Size = new System.Drawing.Size(338, 22);
- this.txGuid1.TabIndex = 7;
- this.txGuid1.Visible = false;
- //
- // txGuid2
- //
- this.txGuid2.Location = new System.Drawing.Point(842, 25);
- this.txGuid2.Name = "txGuid2";
- this.txGuid2.Size = new System.Drawing.Size(338, 22);
- this.txGuid2.TabIndex = 8;
- this.txGuid2.Visible = false;
- //
- // txGuid3
- //
- this.txGuid3.Location = new System.Drawing.Point(842, 48);
- this.txGuid3.Name = "txGuid3";
- this.txGuid3.Size = new System.Drawing.Size(338, 22);
- this.txGuid3.TabIndex = 9;
- this.txGuid3.Visible = false;
- //
- // btCreateDbgList
- //
- this.btCreateDbgList.Location = new System.Drawing.Point(1190, 24);
- this.btCreateDbgList.Name = "btCreateDbgList";
- this.btCreateDbgList.Size = new System.Drawing.Size(74, 24);
- this.btCreateDbgList.TabIndex = 10;
- this.btCreateDbgList.Text = "Create List";
- this.btCreateDbgList.UseVisualStyleBackColor = true;
- this.btCreateDbgList.Visible = false;
- this.btCreateDbgList.Click += new System.EventHandler(this.btCreateDbgList_Click);
- //
// FormLayout
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(1298, 640);
+ this.ClientSize = new System.Drawing.Size(1271, 681);
this.Controls.Add(this.tlPanel);
this.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MinimizeBox = false;
+ this.MinimumSize = new System.Drawing.Size(770, 720);
this.Name = "FormLayout";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Device Layout";
@@ -395,12 +473,14 @@
this.Load += new System.EventHandler(this.FormLayout_Load);
this.tlPanel.ResumeLayout(false);
this.pnlInput.ResumeLayout(false);
- this.pnlInput.PerformLayout();
+ this.pnlDebug.ResumeLayout(false);
+ this.pnlDebug.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.drawPanel.ResumeLayout(false);
this.gbxColors.ResumeLayout(false);
this.gbxColors.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.tbFontSize)).EndInit();
+ this.panel1.ResumeLayout(false);
this.ResumeLayout(false);
}
@@ -418,20 +498,26 @@
private System.Windows.Forms.SaveFileDialog SFD;
private System.Windows.Forms.Button btColors;
private System.Windows.Forms.GroupBox gbxColors;
- private System.Windows.Forms.Button btCancelColors;
+ private System.Windows.Forms.Button btCancel;
private System.Windows.Forms.Label lblTest;
private System.Windows.Forms.ListView chkLbActionGroupsColor;
private System.Windows.Forms.Label lblBackColor;
private System.Windows.Forms.Label lblTextColor;
private System.Windows.Forms.ColorDialog colDlg;
- private System.Windows.Forms.Button btAcceptColors;
- private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.Button btAccept;
+ private System.Windows.Forms.Label lblLayoutNote;
private System.Windows.Forms.TrackBar tbFontSize;
private System.Windows.Forms.Label lblFontSize;
private System.Windows.Forms.PictureBox pictureBox1;
- private System.Windows.Forms.TextBox txGuid3;
- private System.Windows.Forms.TextBox txGuid2;
- private System.Windows.Forms.TextBox txGuid1;
private System.Windows.Forms.Button btCreateDbgList;
+ private System.Windows.Forms.Panel pnlDebug;
+ private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Button btClose;
+ private System.Windows.Forms.Panel panel1;
+ private System.Windows.Forms.ComboBox cbxJs1;
+ private System.Windows.Forms.ComboBox cbxJs3;
+ private System.Windows.Forms.ComboBox cbxJs2;
}
}
\ No newline at end of file
diff --git a/Layout/FormLayout.cs b/Layout/FormLayout.cs
index a3ddc2a..0b94fb2 100644
--- a/Layout/FormLayout.cs
+++ b/Layout/FormLayout.cs
@@ -28,6 +28,7 @@ namespace SCJMapper_V2.Layout
private readonly Color COL_ERR = Color.Gold;
private Layouts m_layouts = null;
+ private List m_devices = null; // for debug allocated only
internal ActionItemList ActionList { get; set; } = null;
@@ -40,13 +41,8 @@ namespace SCJMapper_V2.Layout
{
InitializeComponent( );
- if ( IsDebug( ) ) {
- // Show Debug items at startup
- txGuid1.Visible = true;
- txGuid2.Visible = true;
- txGuid3.Visible = true;
- btCreateDbgList.Visible = true;
- }
+ // Show Debug items at startup
+ if ( IsDebug( ) ) pnlDebug.Visible = true;
}
///
@@ -141,6 +137,23 @@ namespace SCJMapper_V2.Layout
m_sPanel.Dock = DockStyle.Fill;
m_sPanel.BackgroundImageLayout = ImageLayout.Zoom;
+ if ( IsDebug( ) ) {
+ // get an empty on top
+ cbxJs1.Items.Add( new Device.DeviceDescriptor( ) );
+ cbxJs2.Items.Add( new Device.DeviceDescriptor( ) );
+ cbxJs3.Items.Add( new Device.DeviceDescriptor( ) );
+ // get all devices know in the layout folder
+ m_devices = m_layouts.Devices( );
+ foreach ( var dev in m_devices ) {
+ cbxJs1.Items.Add( dev );
+ cbxJs2.Items.Add( dev );
+ cbxJs3.Items.Add( dev );
+ }
+ cbxJs1.SelectedIndex = 0;
+ cbxJs2.SelectedIndex = 0;
+ cbxJs3.SelectedIndex = 0;
+ }
+
RefreshPanel( );
}
@@ -196,11 +209,12 @@ namespace SCJMapper_V2.Layout
///
private void Populate()
{
+ bool errorShown = false;
+
// for all actions found from action tree
m_displayList.Clear( );
( cbxLayouts.SelectedItem as DeviceLayout ).DeviceController.CreateShapes( );
foreach ( var si in ActionList ) {
- // if ( si.DeviceName == cbxDevices.SelectedItem.ToString( ) ) {
// matches the selected device
if ( MatchCriteria( si ) ) {
bool firstInstance = ActionList.IsFirstInstance( si.DevicePidVid, si.InputTypeNumber );
@@ -213,9 +227,17 @@ namespace SCJMapper_V2.Layout
shape.BackColor = MapProps.MapBackColor( si.ActionMap );
m_displayList.Add( shape );
}
+ else {
+ // Display elements exhausted...
+ if ( ! errorShown ) {
+ string msg = $"No more display elements left for device: {si.DeviceName}";
+ msg += $"\n\nTry to use a smaller font to show all actions!";
+ MessageBox.Show( msg, "Layout - Cannot show all actions", MessageBoxButtons.OK, MessageBoxIcon.Warning );
+ errorShown = true; // only once
+ }
+ }
}
}
- // }
}
}
@@ -369,6 +391,11 @@ namespace SCJMapper_V2.Layout
m_checkAllToggle = !m_checkAllToggle; // toggle
}
+ private void btClose_Click( object sender, EventArgs e )
+ {
+ this.Close( );
+ }
+
#endregion
#region DEBUG LIST
@@ -378,16 +405,15 @@ namespace SCJMapper_V2.Layout
{
DBG_LIST = new DbgActionItemList( );
List guids = new List( );
- if ( !string.IsNullOrEmpty( txGuid1.Text ) ) guids.Add( txGuid1.Text );
- if ( !string.IsNullOrEmpty( txGuid2.Text ) ) guids.Add( txGuid2.Text );
- if ( !string.IsNullOrEmpty( txGuid3.Text ) ) guids.Add( txGuid3.Text );
+ if ( !string.IsNullOrEmpty( ( cbxJs1.SelectedItem as Device.DeviceDescriptor ).DevGuid ) ) guids.Add( ( cbxJs1.SelectedItem as Device.DeviceDescriptor ).DevGuid );
+ if ( !string.IsNullOrEmpty( ( cbxJs2.SelectedItem as Device.DeviceDescriptor ).DevGuid ) ) guids.Add( ( cbxJs2.SelectedItem as Device.DeviceDescriptor ).DevGuid );
+ if ( !string.IsNullOrEmpty( ( cbxJs3.SelectedItem as Device.DeviceDescriptor ).DevGuid ) ) guids.Add( ( cbxJs3.SelectedItem as Device.DeviceDescriptor ).DevGuid );
DBG_LIST.CreateDebugList( guids.ToArray( ) );
ActionList = DBG_LIST.DbgList;
}
- #endregion
-
+ #endregion
}
}
diff --git a/Layout/FormLayout.resx b/Layout/FormLayout.resx
index ad46bd5..f9bf8fe 100644
--- a/Layout/FormLayout.resx
+++ b/Layout/FormLayout.resx
@@ -118,6 +118,37 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABGdBTUEAALGPC/xhBQAABgdJREFUaEPV
+ melvVGUUxm9cCqUDCLK0M1JB2tJlOjNtAZG9LSVAkUUIxCqixp1IcEGJRdkLFCSIxOhn/TfsCh1A1AiE
+ tRSwUKB0px8mEXN8zjtzrzPT07l3pi3JfPgl933eszzP3EnbpBoRxTWiGE+IYjwhivGEKJpRNd+eCKbw
+ c9chz4AIzJsCxgfvsIooRgKL1tYUOaihNJXwXP7w2zzRmBW4l2fwrPrFk3jeh9LOSIhifyjzhQ7qOJpP
+ vl9mkXe5P0TPYY/WWemOCu7hXp7h+3kW9f40AyGeizqEKEpg8GplvsJNhGWM7/h0I0R3pUfrOOC2BNca
+ 5jGDfsQ80HskP+oQohiObr59j4vohwLqrXRT1wEE+R5v4lgBeQNfJ2hae4UrIlyjzKOHe3kGz+o5iHnH
+ MftwXlQhRDEYw/xumD+eTw8PuKhtb66iswLa0TzyAT0ENA13InxnmEcP9/IM3Cm692PesXx8QB7LIURR
+ BwNWKPM7nUTf5VFPRS492O0MoQOL6YiHfEAPAU3DXQisGeZRyz3cyzOC6dqHeQjWi7dSX2IeQhQZw/z2
+ HLWse4+TWnfkiLTvQsBDbvIB7zL106QcmoY7BT8r87jjGq7lnuAZwXQiCB12Uy/ejlkIUTTMl2djkIu6
+ dmXT/a+zItL2TRbRwVzyHXQZIaBpjGEed1zDtdKMYDp2YndlLvXig4sUoo+AwoTqhXZq3ZJBtB9fEQy7
+ +1WmJVrLM+nfCif58FXzLvWHUObxzBrfcY3UK9G2PYse7XNS2xeZVL/IwfP6/LILOTAoSuXEt7akU8uX
+ 06Lm/rZp9Gh3Dvn25Kg3oT55PLPGd1KPGeylzh/AEe435KCDwm0c4ubmdLrzeUbU3NuaQf/syCYfBwH8
+ zJpUa8bNj9N081slr30EHQ7BjTc2TaXmT9KipuXTNLr3WbqCn6UaM5o+mkp1xf2bZ0RRRw9x/YMX6Nbm
+ qY+VRuw0M8+IYjAqBAY1vjeZbm6a8lhofHeyJfOMKIajh7j69vPU9P7kIYV31OKvXSvmGVGUUCGK7HT5
+ zVRqfGdouLxxEszbLZtnRLE/OAQvuLxhEl17a3C59Hr05hlRjIQe4uKrDrqyYXDgWbWF0ZtnRNEMFQIL
+ L6y306WygXFhnT1m84womoFle08uslPza3a6sj6ZLq6LDe5tRogTxSrALmmXGaIYCTZ/usRODzc6qKUs
+ hS6unUgX1sQG997FjJ43HHQKH0gsIUSxP5R5LOouS6bb62Bi1Xg6t3Jg8Iw7mNWFmd4Y3oQoSrD5U8Up
+ 1Illza9MoPMvj6O/lg8OPOv2mglqttf/k8hyCFEMR5kvSqH2NePp1kosXTaW/lw6uPDMv1eNUzu82GU1
+ hCgGw+Z5YBuMN5Vi2eIx9HvJ0MCzb5Q+Sw+wq6HQWghR1FHmC5PpwfKxdH3JM/RH8Wg6WzS08I4m7GrF
+ zoaF5iFEkVHmFybTvSVj6NoiDF8wis48JnhXY8louovdDfAQKYQosnlubMGQK4Uj6cxcG52KAe/cUQrp
+ zgzeeRW778DDyQX9h+gjoHBa7fxk+m22jc5hyOmXksgbAw2zR1L1vGQFP0s1ZvDu8/Bwdo6NauAJ3tLC
+ /YYcGBQlVs1PoROzRlPDzBExcfJFmzKOWdsYfmZNqrUCe8EcJiHcb8hBB4UrOETdzFF0oiAxKuqnJxnm
+ cdYYPQTfBddagT0EzJdKXvsIOkaIGTaqzxtmiTosrJ7rN4+zFowKgTuu4Vor8G72wF4kj4wo6qgQ81Ko
+ tsBGda6EyHiGw/xEZR5nTYLvqjgEanGOSG1+EvHuSOYZUQxGD1GTl0S1zqdlXMOoKmAeZy0SegjuwVmE
+ dwXMr5Y8BSOK4eghqj0jqCb7qVCcMD/Hbx5nzQr+EBNVL86huBMtm2dEUcII4cL3PPNJPzkJhnmctWhQ
+ IdDLM3D2k2uYXy95kBDF/tBDVPGirP/NV2XAUCwEQqhZzuFRm2dEMRJGiID5X9Of0AaCEcJvvkzaGQlR
+ NAOL+N+sqfwsmYqGwLxUYAveYRVRjCdEMZ4QxXhCFOMH0v4DN4thMT89blIAAAAASUVORK5CYII=
+
+
iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAABGdBTUEAALGPC/xhBQAATuVJREFUeF7t
@@ -458,31 +489,6 @@
u1fvwvlzX6ckJ3VbsdzJYYL5uK09unXZR+BeJ0I8VlNu/Zxk/YmmusqNTh3aHTU2GpJpM9t6bWCAv0VR
UaHO1StXGhHw9Z88eVwb4/+bxxovry/d3dzqrlixooGzs1OjBQvsv7axmdNyzpzZrW3mzG5lZ2f7jdOy
ZY1cli9vuHLlyvoeHh51vL29a2N77fj/cfzP//w/nccJ4FnUh2gAAAAASUVORK5CYII=
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABGdBTUEAALGPC/xhBQAABJpJREFUaEPV
- mf1PW1UYx4tG46KLWYwxJgKL7ya+oFFjfN2YaIxL/MGf/Ud0vxjB+YJDw9xwIcy4GI1bWJzo4guG0K1s
- FUpbWzsYAUJkl5aXthZkXRsez/dkd557zrl3x1pu2pt8Qnt4+n2+H1LWjgaIqK7RHtYT2sN6QntYT2gP
- 6wnlIPpmwOYFxteMPxlkM9KxjYY6GzcN5Iv7GNiPHujDu4l9HXfA5aH25N4tlI0/R5fyr7PjN66AJcvL
- y+x29a9cLsfzxX3Yjx7og14mAq2pD2+isrWbyHqNKPkKlSMvU3H0JQ4WRCIRisVilEwmaWJigmZmZmh+
- fp4ymQwvsba2RsVikcrlMm1sbHBwG2f4HmYWFxf5Y/DYyclJnoVM5Nu7sBf70aO8sJvOdW6FRJvY11Ee
- sIGjuR9aiM6/SqUxFvRbm4NKBPAYGU8BaSd6oE/u5KMQ6Bf7OsoDNpBbP72DKMbKh19UwIJKBOQMTwFh
- 1gZ91kM7IVAQ+zrKAzZAxTO76NLZXfyrTMUCUoangDBrY/dBP7HvlRs2XGBkpysVC0gZngLCrIyRwEX2
- FHKjUgE5w0tAnJUxEwg+70rFAlKGp4AwK2MmMPysKxULSBmeAsKsjJnA0NOuBLuaaSx86r8LCBluAtHI
- WQrua3LMypgJ/PqUK/Heeyn84wFjAVwoLFMqlRSB0Z97eL5ur42ZwC9PupI+/ggNH2Q/idFTxgJulyiQ
- iJ6h4MFneL5ur42ZwE+Pe3L+i/tpuLuFIoM9lIqPeArgKQRwG2f4Hmbsp9BUaoxiQ700vL+F5+r2iZgJ
- nHzsqmSOPUTxQ3fT6Y+btU8RU/B45CBPt0fGSGD9+5aaxUzgu4drFjOBbx+sWcwE+h+oWcwEjt1Xs5gJ
- fHOPK+kjd9HvB7ZTqKtJ+69KpSAPucjX7bUxEvj7qzu1TH7WTCM9T1Dm3Am6WLDYePUu5CEX+dij2w/M
- BL7crrBwuJnCfTuotJ5lY8RflPL5PGWz2f8NcpCHC/nhw61k9TEJTQ8zgSNNCvH9jTSfOM5fVfFKurKy
- UnWQi/wLyRMU627U9jAT+PwOheBHjZS+MEuFQoGWlpY2DeRnrDm+T9fDTKDvdgX8ouG9Dt7D4OtmYedj
- n66HmUDvbQoITKfTHMuyKBQKVR07H3ABTQ8jgbVDtyogEMX9Avt0PcwEem5RQCDe/voFF9D0MBP4dJsC
- Aufm5nyDC2h6mAl036yAwNnZWd/gApoeZgKfbFVA4PT0NGdqaooGBwerjp0PuICmh5lA140KCERxv+AC
- mh5mAvu2KCAQ/4H3Cy6g6WEm0HmDAgJTqZRvcAFNDyOB1Q+uV0Ag/oziF9in62EikPvrveto9X0nCEwk
- Epx4PE4DAwNVx84HXEDqgF6s31U/H+hPv3MNre691gECUdwvuIDUAb3QT+zrKA/YQNsfewKU72AS7/4L
- AqPRqG9wAWE/+qAX+ol9HeUBGwDtibcCtPB2A+XbG2i1o4EHjo+P+wYXYHuxHz3QB73QT+zruAMuC4BW
- xlGGxdj0z4dlhM+LsR890Id3E/s67tQj2sP6gQL/AOmff2gdyzkRAAAAAElFTkSuQmCC
@@ -530,6 +536,31 @@
I2gMEmRyc3OTQi3x8PBoJJ6he3ahnt8IGoME+Tk4OMDd3V0jvlevXrriGbMQo6jnN4LGeCNqDgfBK8GB
8B8ibJN/iVm0GloZu1DPbwSNoRLmT2whiojlhCOhvq+gJ8oW1PMbQdf5NqHrfJvQdb49QPwXRx18RWhL
CIsAAAAASUVORK5CYII=
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABGdBTUEAALGPC/xhBQAABJpJREFUaEPV
+ mf1PW1UYx4tG46KLWYwxJgKL7ya+oFFjfN2YaIxL/MGf/Ud0vxjB+YJDw9xwIcy4GI1bWJzo4guG0K1s
+ FUpbWzsYAUJkl5aXthZkXRsez/dkd557zrl3x1pu2pt8Qnt4+n2+H1LWjgaIqK7RHtYT2sN6QntYT2gP
+ 6wnlIPpmwOYFxteMPxlkM9KxjYY6GzcN5Iv7GNiPHujDu4l9HXfA5aH25N4tlI0/R5fyr7PjN66AJcvL
+ y+x29a9cLsfzxX3Yjx7og14mAq2pD2+isrWbyHqNKPkKlSMvU3H0JQ4WRCIRisVilEwmaWJigmZmZmh+
+ fp4ymQwvsba2RsVikcrlMm1sbHBwG2f4HmYWFxf5Y/DYyclJnoVM5Nu7sBf70aO8sJvOdW6FRJvY11Ee
+ sIGjuR9aiM6/SqUxFvRbm4NKBPAYGU8BaSd6oE/u5KMQ6Bf7OsoDNpBbP72DKMbKh19UwIJKBOQMTwFh
+ 1gZ91kM7IVAQ+zrKAzZAxTO76NLZXfyrTMUCUoangDBrY/dBP7HvlRs2XGBkpysVC0gZngLCrIyRwEX2
+ FHKjUgE5w0tAnJUxEwg+70rFAlKGp4AwK2MmMPysKxULSBmeAsKsjJnA0NOuBLuaaSx86r8LCBluAtHI
+ WQrua3LMypgJ/PqUK/Heeyn84wFjAVwoLFMqlRSB0Z97eL5ur42ZwC9PupI+/ggNH2Q/idFTxgJulyiQ
+ iJ6h4MFneL5ur42ZwE+Pe3L+i/tpuLuFIoM9lIqPeArgKQRwG2f4Hmbsp9BUaoxiQ700vL+F5+r2iZgJ
+ nHzsqmSOPUTxQ3fT6Y+btU8RU/B45CBPt0fGSGD9+5aaxUzgu4drFjOBbx+sWcwE+h+oWcwEjt1Xs5gJ
+ fHOPK+kjd9HvB7ZTqKtJ+69KpSAPucjX7bUxEvj7qzu1TH7WTCM9T1Dm3Am6WLDYePUu5CEX+dij2w/M
+ BL7crrBwuJnCfTuotJ5lY8RflPL5PGWz2f8NcpCHC/nhw61k9TEJTQ8zgSNNCvH9jTSfOM5fVfFKurKy
+ UnWQi/wLyRMU627U9jAT+PwOheBHjZS+MEuFQoGWlpY2DeRnrDm+T9fDTKDvdgX8ouG9Dt7D4OtmYedj
+ n66HmUDvbQoITKfTHMuyKBQKVR07H3ABTQ8jgbVDtyogEMX9Avt0PcwEem5RQCDe/voFF9D0MBP4dJsC
+ Aufm5nyDC2h6mAl036yAwNnZWd/gApoeZgKfbFVA4PT0NGdqaooGBwerjp0PuICmh5lA140KCERxv+AC
+ mh5mAvu2KCAQ/4H3Cy6g6WEm0HmDAgJTqZRvcAFNDyOB1Q+uV0Ag/oziF9in62EikPvrveto9X0nCEwk
+ Epx4PE4DAwNVx84HXEDqgF6s31U/H+hPv3MNre691gECUdwvuIDUAb3QT+zrKA/YQNsfewKU72AS7/4L
+ AqPRqG9wAWE/+qAX+ol9HeUBGwDtibcCtPB2A+XbG2i1o4EHjo+P+wYXYHuxHz3QB73QT+zruAMuC4BW
+ xlGGxdj0z4dlhM+LsR890Id3E/s67tQj2sP6gQL/AOmff2gdyzkRAAAAAElFTkSuQmCC
diff --git a/Layout/Layouts.cs b/Layout/Layouts.cs
index 6d7c739..1276a6d 100644
--- a/Layout/Layouts.cs
+++ b/Layout/Layouts.cs
@@ -17,7 +17,7 @@ namespace SCJMapper_V2.Layout
this.Clear( );
if ( !Directory.Exists( TheUser.LayoutsDir ) ) return;
- var jsons = Directory.EnumerateFiles( TheUser.LayoutsDir, "*.json" );
+ var jsons = Directory.EnumerateFiles( TheUser.LayoutsDir, "*.json", SearchOption.TopDirectoryOnly );
foreach ( var f in jsons ) {
var devLayout = new DeviceLayout {
Filename = f,
@@ -29,6 +29,24 @@ namespace SCJMapper_V2.Layout
}
}
+ ///
+ /// Collect all known devices (key is GUID), value is Name
+ ///
+ /// Dict. of all known devices
+ public List Devices()
+ {
+ var ret = new List( );
+ foreach ( var dlayout in this ) {
+ var devs = dlayout.DeviceController.Devices( );
+ foreach ( var dev in devs ) {
+ if ( !ret.Exists( x => x.DevGuid == dev.DevGuid ) ) {
+ ret.Add( dev );
+ }
+ }
+ }
+ return ret;
+ }
+
}
}
diff --git a/ReadMe.txt b/ReadMe.txt
index 308c31d..896240f 100644
--- a/ReadMe.txt
+++ b/ReadMe.txt
@@ -1,5 +1,5 @@
SC Joystick Mapper V 2.45 - Build 80 BETA
-(c) Cassini, StandardToaster - 07-Mar-2020
+(c) Cassini, StandardToaster - 09-Mar-2020
Contains 14 files + graphics:
@@ -50,6 +50,7 @@ Changelog:
V 2.45 - BETA Build 80
- add Some more Layout files for devices
- update Layout to work with dual Joysticks of the same type and Gamepads
+- fix for Invert mod writing to XML (#90)
- fix for some Layout files and general fixes in the layout part
V 2.44 - BETA Build 79
- added Input device layout dialog and some layouts for the most common device controllers
diff --git a/Translation/Strings.Designer.cs b/Translation/Strings.Designer.cs
index d80ec83..c2d5dd4 100644
--- a/Translation/Strings.Designer.cs
+++ b/Translation/Strings.Designer.cs
@@ -573,6 +573,18 @@ namespace SCJMapper_V2.Translation {
}
}
+ ///
+ /// Looks up a localized string similar to Select an entry in the list and then click above to assign colors.
+ ///
+ ///Note:
+ ///White background is treated as Transparent while drawing items to the image..
+ ///
+ public static string lblLayoutNote {
+ get {
+ return ResourceManager.GetString("lblLayoutNote", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Loading data....
///
@@ -916,6 +928,15 @@ namespace SCJMapper_V2.Translation {
}
}
+ ///
+ /// Looks up a localized string similar to Show Layout Dialog....
+ ///
+ public static string meShowLayoutDialog {
+ get {
+ return ResourceManager.GetString("meShowLayoutDialog", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Show Options Dialog....
///
diff --git a/Translation/Strings.de.resx b/Translation/Strings.de.resx
index 3e9cbaa..8115e65 100644
--- a/Translation/Strings.de.resx
+++ b/Translation/Strings.de.resx
@@ -774,4 +774,15 @@ benutzen sie Abbrechen um die Arbeit erst zu speichern.
Ja
0-General
+
+ Geräte Layout...
+ 1-Main
+
+
+ Wählen Sie einen Eintrag in der Liste aus und klicken Sie oben Farben zuweisen.
+
+Hinweis:
+Weißer Hintergrund wird beim Zeichnen von Elementen auf das Bild als transparent behandelt.
+ 9-Layout
+
\ No newline at end of file
diff --git a/Translation/Strings.fr.resx b/Translation/Strings.fr.resx
index 76a11f5..7b4b10d 100644
--- a/Translation/Strings.fr.resx
+++ b/Translation/Strings.fr.resx
@@ -774,4 +774,15 @@ Annulez maintenant si vous voulez d'abord enregistrer votre travail.
Oui
0-General
+
+ Disposition de l'appareil...
+ 1-Main
+
+
+ Sélectionnez une entrée dans la liste puis cliquez dessus pour attribuer des couleurs.
+
+Remarque:
+Le fond blanc est traité comme transparent tout en dessinant des éléments sur l'image.
+ 9-Layout
+
\ No newline at end of file
diff --git a/Translation/Strings.resx b/Translation/Strings.resx
index 311eb7c..192ab3e 100644
--- a/Translation/Strings.resx
+++ b/Translation/Strings.resx
@@ -774,4 +774,15 @@ Cancel now if you want to save your work first.
Yes
0-General
+
+ Select an entry in the list and then click above to assign colors.
+
+Note:
+White background is treated as Transparent while drawing items to the image.
+ 9-Layout
+
+
+ Show Layout Dialog...
+ 1-Main
+
\ No newline at end of file
diff --git a/graphics/layouts/MapToolbox.xlsx b/graphics/layouts/MapToolbox.xlsx
index 1245fe7..298d4fd 100644
Binary files a/graphics/layouts/MapToolbox.xlsx and b/graphics/layouts/MapToolbox.xlsx differ
diff --git a/graphics/layouts/f710.jpg b/graphics/layouts/f710.jpg
deleted file mode 100644
index 8e5f467..0000000
Binary files a/graphics/layouts/f710.jpg and /dev/null differ
diff --git a/graphics/layouts/gp-jcu3613m.jpg b/graphics/layouts/gp-jcu3613m.jpg
deleted file mode 100644
index 5dea485..0000000
Binary files a/graphics/layouts/gp-jcu3613m.jpg and /dev/null differ
diff --git a/graphics/layouts/gp-logif710.jpg b/graphics/layouts/gp-logif710.jpg
deleted file mode 100644
index 3fd7f64..0000000
Binary files a/graphics/layouts/gp-logif710.jpg and /dev/null differ
diff --git a/graphics/layouts/gpad-jc-u3613m.jpg b/graphics/layouts/gpad-jc-u3613m.jpg
new file mode 100644
index 0000000..ebbb1f9
Binary files /dev/null and b/graphics/layouts/gpad-jc-u3613m.jpg differ
diff --git a/graphics/layouts/gpad-jc-u3613m.json b/graphics/layouts/gpad-jc-u3613m.json
index 1245b3a..2286c37 100644
--- a/graphics/layouts/gpad-jc-u3613m.json
+++ b/graphics/layouts/gpad-jc-u3613m.json
@@ -1,32 +1,33 @@
{
- "MapName" : "Elecom JC-U3613M (X-Input)",
- "MapImage" : "gp-jcu3613m.jpg",
+ "MapName" : "XPad Elecom JC-U3613M (X-Input)",
+ "MapImage" : "gpad-jc-u3613m.jpg",
"InputDevices" :[
{
"InputType": "G1",
"DeviceName": "Elecom JC-U3613M",
"DeviceProdGuid": ["{028E045E-0000-0000-0000-504944564944}"],
"Controls": [
- { "Input":"x", "Type": "Digital", "X":2625, "Y":1178, "Width":1192, "Height":54, "Cmt": "X"},
- { "Input":"a", "Type": "Digital", "X":2625, "Y":1083, "Width":1192, "Height":54, "Cmt": "A"},
- { "Input":"b", "Type": "Digital", "X":2625, "Y":988, "Width":1192, "Height":54, "Cmt": "B"},
- { "Input":"y", "Type": "Digital", "X":2625, "Y":894, "Width":1192, "Height":54, "Cmt": "Y"},
- { "Input":"shoulderl", "Type": "Digital", "X":74, "Y":510, "Width":1392, "Height":108, "Cmt": "Left bumper - shoulderl"},
- { "Input":"shoulderr", "Type": "Digital", "X":2368, "Y":510, "Width":1442, "Height":108, "Cmt": "Right bumper - shoulderr"},
- { "Input":"triggerl_btn", "Type": "Digital", "X":74, "Y":406, "Width":1392, "Height":54, "Cmt": "Left trigger - triggerl_btn"},
- { "Input":"triggerr_btn", "Type": "Digital", "X":2368, "Y":406, "Width":1442, "Height":54, "Cmt": "Right trigger - triggerr_btn"},
- { "Input":"back", "Type": "Digital", "X":74, "Y":706, "Width":1192, "Height":54, "Cmt": "Back"},
- { "Input":"start", "Type": "Digital", "X":2625, "Y":706, "Width":1192, "Height":54, "Cmt": "Start"},
- { "Input":"thumbl", "Type": "Digital", "X":134, "Y":1542, "Width":1032, "Height":108, "Cmt": "Left stick button thumbl"},
- { "Input":"thumbr", "Type": "Digital", "X":2765, "Y":1542, "Width":1052, "Height":108, "Cmt": "Right stick button - thumbr"},
- { "Input":"dpad_up", "Type": "Digital", "X":134, "Y":864, "Width":1032, "Height":108, "Cmt": "dpad_up"},
- { "Input":"dpad_right", "Type": "Digital", "X":134, "Y":974, "Width":1032, "Height":108, "Cmt": "dpad_right"},
- { "Input":"dpad_down", "Type": "Digital", "X":134, "Y":1084, "Width":1032, "Height":108, "Cmt": "dpad_down"},
- { "Input":"dpad_left", "Type": "Digital", "X":134, "Y":1194, "Width":1032, "Height":108, "Cmt": "dpad_left"},
- { "Input":"thumblx", "Type": "Analogue", "X":2765, "Y":1322, "Width":1052, "Height":108, "Cmt": "thumbry"},
- { "Input":"thumbly", "Type": "Analogue", "X":2765, "Y":1432, "Width":1052, "Height":108, "Cmt": "thumbrx"},
- { "Input":"thumbrx", "Type": "Analogue", "X":134, "Y":1322, "Width":1032, "Height":108, "Cmt": "thumbly"},
- { "Input":"thumbry", "Type": "Analogue", "X":134, "Y":1432, "Width":1032, "Height":108, "Cmt": "thumblx"} ]
+ { "Input":"x", "Type": "Digital", "X":2586, "Y":1254, "Width":770, "Height":108, "Cmt": "X"},
+ { "Input":"a", "Type": "Digital", "X":2586, "Y":1132, "Width":770, "Height":108, "Cmt": "A"},
+ { "Input":"b", "Type": "Digital", "X":2586, "Y":1010, "Width":770, "Height":108, "Cmt": "B"},
+ { "Input":"y", "Type": "Digital", "X":2586, "Y":888, "Width":770, "Height":108, "Cmt": "Y"},
+ { "Input":"shoulderl", "Type": "Digital", "X":784, "Y":632, "Width":770, "Height":108, "Cmt": "Left bumper - shoulderl"},
+ { "Input":"shoulderr", "Type": "Digital", "X":2342, "Y":630, "Width":770, "Height":108, "Cmt": "Right bumper - shoulderr"},
+ { "Input":"triggerl_btn", "Type": "Digital", "X":1049, "Y":492, "Width":770, "Height":108, "Cmt": "Left trigger - triggerl_btn"},
+ { "Input":"triggerr_btn", "Type": "Digital", "X":2045, "Y":492, "Width":770, "Height":108, "Cmt": "Right trigger - triggerr_btn"},
+ { "Input":"back", "Type": "Digital", "X":343, "Y":806, "Width":1000, "Height":54, "Cmt": "Back"},
+ { "Input":"start", "Type": "Digital", "X":2431, "Y":806, "Width":1000, "Height":54, "Cmt": "Start"},
+ { "Input":"thumbl", "Type": "Digital", "X":232, "Y":1035, "Width":1000, "Height":54, "Cmt": "Left stick button thumbl"},
+ { "Input":"thumbr", "Type": "Digital", "X":2675, "Y":1567, "Width":1000, "Height":54, "Cmt": "Right stick button - thumbr"},
+ { "Input":"dpad_up", "Type": "Digital", "X":274, "Y":1212, "Width":1000, "Height":54, "Cmt": "dpad_up"},
+ { "Input":"dpad_right", "Type": "Digital", "X":274, "Y":1262, "Width":1000, "Height":54, "Cmt": "dpad_right"},
+ { "Input":"dpad_down", "Type": "Digital", "X":274, "Y":1315, "Width":1000, "Height":54, "Cmt": "dpad_down"},
+ { "Input":"dpad_left", "Type": "Digital", "X":274, "Y":1366, "Width":1000, "Height":54, "Cmt": "dpad_left"},
+ { "Input":"thumbry", "Type": "Analogue", "X":2675, "Y":1465, "Width":1000, "Height":54, "Cmt": "thumbry"},
+ { "Input":"thumbrx", "Type": "Analogue", "X":2675, "Y":1515, "Width":1000, "Height":54, "Cmt": "thumbrx"},
+ { "Input":"thumbly", "Type": "Analogue", "X":232, "Y":932, "Width":1000, "Height":54, "Cmt": "thumbly"},
+ { "Input":"thumblx", "Type": "Analogue", "X":232, "Y":984, "Width":1000, "Height":54, "Cmt": "thumblx"}
+ ]
}
]
}
diff --git a/graphics/layouts/gpad-logi-f710.jpg b/graphics/layouts/gpad-logi-f710.jpg
new file mode 100644
index 0000000..cac6940
Binary files /dev/null and b/graphics/layouts/gpad-logi-f710.jpg differ
diff --git a/graphics/layouts/gpad-logi-f710.json b/graphics/layouts/gpad-logi-f710.json
index 5a4bb06..3c7fbb4 100644
--- a/graphics/layouts/gpad-logi-f710.json
+++ b/graphics/layouts/gpad-logi-f710.json
@@ -1,32 +1,33 @@
{
"MapName" : "XPad Logitech F710",
- "MapImage" : "f710.jpg",
+ "MapImage" : "gpad-logi-f710.jpg",
"InputDevices" :[
{
"InputType": "G1",
"DeviceName": "Logitech F710",
"DeviceProdGuid": ["{028E045E-0000-0000-0000-504944564944}"],
"Controls": [
- { "Input":"x", "Type": "Digital", "X":2625, "Y":1178, "Width":1192, "Height":54, "Cmt": "X"},
- { "Input":"a", "Type": "Digital", "X":2625, "Y":1083, "Width":1192, "Height":54, "Cmt": "A"},
- { "Input":"b", "Type": "Digital", "X":2625, "Y":988, "Width":1192, "Height":54, "Cmt": "B"},
- { "Input":"y", "Type": "Digital", "X":2625, "Y":894, "Width":1192, "Height":54, "Cmt": "Y"},
- { "Input":"shoulderl", "Type": "Digital", "X":74, "Y":510, "Width":1392, "Height":108, "Cmt": "Left bumper - shoulderl"},
- { "Input":"shoulderr", "Type": "Digital", "X":2368, "Y":510, "Width":1442, "Height":108, "Cmt": "Right bumper - shoulderr"},
- { "Input":"triggerl_btn", "Type": "Digital", "X":74, "Y":406, "Width":1392, "Height":54, "Cmt": "Left trigger - triggerl_btn"},
- { "Input":"triggerr_btn", "Type": "Digital", "X":2368, "Y":406, "Width":1442, "Height":54, "Cmt": "Right trigger - triggerr_btn"},
- { "Input":"back", "Type": "Digital", "X":74, "Y":706, "Width":1192, "Height":54, "Cmt": "Back"},
- { "Input":"start", "Type": "Digital", "X":2625, "Y":706, "Width":1192, "Height":54, "Cmt": "Start"},
- { "Input":"thumbl", "Type": "Digital", "X":134, "Y":1542, "Width":1032, "Height":108, "Cmt": "Left stick button thumbl"},
- { "Input":"thumbr", "Type": "Digital", "X":2765, "Y":1542, "Width":1052, "Height":108, "Cmt": "Right stick button - thumbr"},
- { "Input":"dpad_up", "Type": "Digital", "X":134, "Y":864, "Width":1032, "Height":108, "Cmt": "dpad_up"},
- { "Input":"dpad_right", "Type": "Digital", "X":134, "Y":974, "Width":1032, "Height":108, "Cmt": "dpad_right"},
- { "Input":"dpad_down", "Type": "Digital", "X":134, "Y":1084, "Width":1032, "Height":108, "Cmt": "dpad_down"},
- { "Input":"dpad_left", "Type": "Digital", "X":134, "Y":1194, "Width":1032, "Height":108, "Cmt": "dpad_left"},
- { "Input":"thumbry", "Type": "Analogue", "X":2765, "Y":1322, "Width":1052, "Height":108, "Cmt": "thumbry"},
- { "Input":"thumbrx", "Type": "Analogue", "X":2765, "Y":1432, "Width":1052, "Height":108, "Cmt": "thumbrx"},
- { "Input":"thumbly", "Type": "Analogue", "X":134, "Y":1322, "Width":1032, "Height":108, "Cmt": "thumbly"},
- { "Input":"thumblx", "Type": "Analogue", "X":134, "Y":1432, "Width":1032, "Height":108, "Cmt": "thumblx"} ]
+ { "Input":"x", "Type": "Digital", "X":2624, "Y":1299, "Width":770, "Height":108, "Cmt": "X"},
+ { "Input":"a", "Type": "Digital", "X":2624, "Y":1169, "Width":770, "Height":108, "Cmt": "A"},
+ { "Input":"b", "Type": "Digital", "X":2624, "Y":1041, "Width":770, "Height":108, "Cmt": "B"},
+ { "Input":"y", "Type": "Digital", "X":2624, "Y":913, "Width":770, "Height":108, "Cmt": "Y"},
+ { "Input":"shoulderl", "Type": "Digital", "X":784, "Y":632, "Width":770, "Height":108, "Cmt": "Left bumper - shoulderl"},
+ { "Input":"shoulderr", "Type": "Digital", "X":2342, "Y":630, "Width":770, "Height":108, "Cmt": "Right bumper - shoulderr"},
+ { "Input":"triggerl_btn", "Type": "Digital", "X":1051, "Y":494, "Width":770, "Height":108, "Cmt": "Left trigger - triggerl_btn"},
+ { "Input":"triggerr_btn", "Type": "Digital", "X":2051, "Y":492, "Width":770, "Height":108, "Cmt": "Right trigger - triggerr_btn"},
+ { "Input":"back", "Type": "Digital", "X":343, "Y":806, "Width":1000, "Height":54, "Cmt": "Back"},
+ { "Input":"start", "Type": "Digital", "X":2537, "Y":820, "Width":1000, "Height":54, "Cmt": "Start"},
+ { "Input":"thumbl", "Type": "Digital", "X":208, "Y":1517, "Width":1000, "Height":54, "Cmt": "Left stick button thumbl"},
+ { "Input":"thumbr", "Type": "Digital", "X":2655, "Y":1619, "Width":1000, "Height":54, "Cmt": "Right stick button - thumbr"},
+ { "Input":"dpad_up", "Type": "Digital", "X":231, "Y":947, "Width":1000, "Height":54, "Cmt": "dpad_up"},
+ { "Input":"dpad_right", "Type": "Digital", "X":231, "Y":997, "Width":1000, "Height":54, "Cmt": "dpad_right"},
+ { "Input":"dpad_down", "Type": "Digital", "X":231, "Y":1051, "Width":1000, "Height":54, "Cmt": "dpad_down"},
+ { "Input":"dpad_left", "Type": "Digital", "X":231, "Y":1103, "Width":1000, "Height":54, "Cmt": "dpad_left"},
+ { "Input":"thumbry", "Type": "Analogue", "X":2655, "Y":1517, "Width":1000, "Height":54, "Cmt": "thumbry"},
+ { "Input":"thumbrx", "Type": "Analogue", "X":2655, "Y":1569, "Width":1000, "Height":54, "Cmt": "thumbrx"},
+ { "Input":"thumbly", "Type": "Analogue", "X":208, "Y":1415, "Width":1000, "Height":54, "Cmt": "thumbly"},
+ { "Input":"thumblx", "Type": "Analogue", "X":208, "Y":1465, "Width":1000, "Height":54, "Cmt": "thumblx"}
+ ]
}
]
}
diff --git a/graphics/layouts/proflightpedals.json b/graphics/layouts/proflightpedals.json
index 866a31b..65acdd7 100644
--- a/graphics/layouts/proflightpedals.json
+++ b/graphics/layouts/proflightpedals.json
@@ -1,10 +1,10 @@
{
- "MapName" : "Saitek ProFlight Combat Rudder Pedals",
+ "MapName" : "Saitek ProFlight Rudder Pedals",
"MapImage" : "proflightpedals.jpg",
"InputDevices" :[
{
"InputType": "J",
- "DeviceName": "Saitek ProFlight Combat Rudder Pedals",
+ "DeviceName": "Saitek ProFlight Rudder Pedals",
"DeviceProdGuid": ["{076306A3-0000-0000-0000-504944564944}",
"{076506A3-0000-0000-0000-504944564944}"],
"Controls": [
diff --git a/graphics/layouts/t16000m.json b/graphics/layouts/t16000m.json
index ea02b2d..4f98c60 100644
--- a/graphics/layouts/t16000m.json
+++ b/graphics/layouts/t16000m.json
@@ -4,7 +4,7 @@
"InputDevices" :[
{
"InputType": "J",
- "DeviceName": "T16000M",
+ "DeviceName": "T.16000M Joystick ",
"DeviceProdGuid": ["{B10A044F-0000-0000-0000-504944564944}"],
"Controls": [
{ "Input": "button1", "Type": "Digital", "X":2124, "Y":624, "Width":1092, "Height":54, "Cmt": "Primary trigger" },
diff --git a/graphics/layouts/t16000mduo-left-right.json b/graphics/layouts/t16000mduo-left-right.json
index d9ffaaf..bcff3c6 100644
--- a/graphics/layouts/t16000mduo-left-right.json
+++ b/graphics/layouts/t16000mduo-left-right.json
@@ -4,7 +4,7 @@
"InputDevices" :[
{
"InputType": "J1",
- "DeviceName": "T16000M-left",
+ "DeviceName": "T.16000M Joystick - left",
"DeviceProdGuid": ["{B10A044F-0000-0000-0000-504944564944}"],
"Controls": [
{ "Input": "button1", "Type": "Digital", "X":1299, "Y":792, "Width":660, "Height":108, "Cmt": "Primary trigger" },
@@ -35,7 +35,7 @@
},
{
"InputType": "J2",
- "DeviceName": "T16000M-right",
+ "DeviceName": "T.16000M Joystick - right",
"DeviceProdGuid": ["{B10A044F-0000-0000-0000-504944564944}"],
"Controls": [
{ "Input": "button1", "Type": "Digital", "X":1997, "Y":792, "Width":660, "Height":108, "Cmt": "Primary trigger" },
diff --git a/graphics/layouts/t16000mduo-right-left.json b/graphics/layouts/t16000mduo-right-left.json
index 0707a38..6822b5e 100644
--- a/graphics/layouts/t16000mduo-right-left.json
+++ b/graphics/layouts/t16000mduo-right-left.json
@@ -4,7 +4,7 @@
"InputDevices" :[
{
"InputType": "J2",
- "DeviceName": "T16000M-left",
+ "DeviceName": "T.16000M Joystick - left",
"DeviceProdGuid": ["{B10A044F-0000-0000-0000-504944564944}"],
"Controls": [
{ "Input": "button1", "Type": "Digital", "X":1299, "Y":792, "Width":660, "Height":108, "Cmt": "Primary trigger" },
@@ -35,7 +35,7 @@
},
{
"InputType": "J1",
- "DeviceName": "T16000M-right",
+ "DeviceName": "T.16000M Joystick -right",
"DeviceProdGuid": ["{B10A044F-0000-0000-0000-504944564944}"],
"Controls": [
{ "Input": "button1", "Type": "Digital", "X":1997, "Y":792, "Width":660, "Height":108, "Cmt": "Primary trigger" },
diff --git a/graphics/layouts/t16000mfcs.json b/graphics/layouts/t16000mfcs.json
index cd67639..44e38ae 100644
--- a/graphics/layouts/t16000mfcs.json
+++ b/graphics/layouts/t16000mfcs.json
@@ -4,7 +4,7 @@
"InputDevices" :[
{
"InputType": "J",
- "DeviceName": "T16000M Stick",
+ "DeviceName": "T.16000M Joystick ",
"DeviceProdGuid": ["{B10A044F-0000-0000-0000-504944564944}"],
"Controls": [
{ "Input": "button1", "Type": "Digital", "X":1804, "Y":844, "Width":642, "Height":54, "Cmt": "Primary trigger" },
diff --git a/graphics/layouts/vpc-wb-delta-left-right.jpg b/graphics/layouts/vpc-wb-delta-left-right.jpg
index 4ec3fe1..612ff3a 100644
Binary files a/graphics/layouts/vpc-wb-delta-left-right.jpg and b/graphics/layouts/vpc-wb-delta-left-right.jpg differ
diff --git a/graphics/layouts/vpc-wb-delta-left-right.json b/graphics/layouts/vpc-wb-delta-left-right.json
new file mode 100644
index 0000000..3a497b5
--- /dev/null
+++ b/graphics/layouts/vpc-wb-delta-left-right.json
@@ -0,0 +1,74 @@
+{
+ "MapName" : "VPC WarBRD Delta DUO (left - right)",
+ "MapImage" : "vpc-wb-delta-left-right.jpg",
+ "InputDevices" :[
+ {
+ "InputType": "J1",
+ "DeviceName": "VPC WarBRD Delta left",
+ "DeviceProdGuid": ["{204203EB-0000-0000-0000-504944564944}"],
+ "Controls": [
+ { "Input": "button1", "Type": "Digital", "X":1200, "Y":1282, "Width":770, "Height":54, "Cmt":"Trigger first stage"},
+ { "Input": "button2", "Type": "Digital", "X":1200, "Y":1330, "Width":770, "Height":54, "Cmt":"Trigger second stage"},
+ { "Input": "button3", "Type": "Digital", "X":1092, "Y":1488, "Width":770, "Height":54, "Cmt":"Trigger button"},
+ { "Input": "button4", "Type": "Digital", "X":82, "Y":1319, "Width":770, "Height":54, "Cmt":"Wheel up"},
+ { "Input": "button5", "Type": "Digital", "X":82, "Y":1369, "Width":770, "Height":54, "Cmt":"Wheel down"},
+ { "Input": "button6", "Type": "Digital", "X":82, "Y":1420, "Width":770, "Height":54, "Cmt":"Wheel push"},
+ { "Input": "button7", "Type": "Digital", "X":77, "Y":1131, "Width":770, "Height":54, "Cmt":"Mini-joystick push"},
+ { "Input": "button8", "Type": "Digital", "X":1319, "Y":651, "Width":770, "Height":54, "Cmt":"4-way hat right up"},
+ { "Input": "button9", "Type": "Digital", "X":1319, "Y":704, "Width":770, "Height":54, "Cmt":"4-way hat right righ"},
+ { "Input": "button10", "Type": "Digital", "X":1319, "Y":756, "Width":770, "Height":54, "Cmt":"4-way hat right down"},
+ { "Input": "button11", "Type": "Digital", "X":1319, "Y":809, "Width":770, "Height":54, "Cmt":"4-way hat right left"},
+ { "Input": "button12", "Type": "Digital", "X":1319, "Y":860, "Width":770, "Height":54, "Cmt":"4-way hat right push?"},
+ { "Input": "button13", "Type": "Digital", "X":100, "Y":434, "Width":770, "Height":54, "Cmt":"4-way hat left up"},
+ { "Input": "button14", "Type": "Digital", "X":100, "Y":487, "Width":770, "Height":54, "Cmt":"4-way hat left righ"},
+ { "Input": "button15", "Type": "Digital", "X":100, "Y":540, "Width":770, "Height":54, "Cmt":"4-way hat left down"},
+ { "Input": "button16", "Type": "Digital", "X":100, "Y":593, "Width":770, "Height":54, "Cmt":"4-way hat left left"},
+ { "Input": "button17", "Type": "Digital", "X":100, "Y":645, "Width":770, "Height":54, "Cmt":"4-way hat left push?"},
+ { "Input": "button18", "Type": "Digital", "X":970, "Y":317, "Width":770, "Height":54, "Cmt":"8-way hat LED up"},
+ { "Input": "button19", "Type": "Digital", "X":970, "Y":370, "Width":770, "Height":54, "Cmt":"8-way hat LED righ"},
+ { "Input": "button20", "Type": "Digital", "X":970, "Y":423, "Width":770, "Height":54, "Cmt":"8-way hat LED down"},
+ { "Input": "button21", "Type": "Digital", "X":970, "Y":476, "Width":770, "Height":54, "Cmt":"8-way hat LED left"},
+ { "Input": "button22", "Type": "Digital", "X":970, "Y":528, "Width":770, "Height":54, "Cmt":"8-way hat LED push?"},
+ { "Input": "x", "Type": "Analogue", "X":1150, "Y":1917, "Width":770, "Height":54, "Cmt":"Joystick axis X"},
+ { "Input": "y", "Type": "Analogue", "X":1150, "Y":1867, "Width":770, "Height":54, "Cmt":"Joystick axis Y"},
+ { "Input": "z", "Type": "Analogue", "X":1150, "Y":1967, "Width":770, "Height":54, "Cmt":"Joystick axis Rot"},
+ { "Input": "rotx", "Type": "Analogue", "X":77, "Y":1081, "Width":770, "Height":54, "Cmt":"Mini-joysticks axis X"},
+ { "Input": "roty", "Type": "Analogue", "X":77, "Y":1029, "Width":770, "Height":54, "Cmt":"Mini-joysticks axis Y"}
+ ]
+ },
+ {
+ "InputType": "J1",
+ "DeviceName": "VPC WarBRD Delta right",
+ "DeviceProdGuid": ["{204403EB-0000-0000-0000-504944564944}"],
+ "Controls": [
+ { "Input": "button1", "Type": "Digital", "X":2035, "Y":1282, "Width":770, "Height":54, "Cmt":"Trigger first stage"},
+ { "Input": "button2", "Type": "Digital", "X":2035, "Y":1330, "Width":770, "Height":54, "Cmt":"Trigger second stage"},
+ { "Input": "button3", "Type": "Digital", "X":2102, "Y":1488, "Width":770, "Height":54, "Cmt":"Trigger button"},
+ { "Input": "button4", "Type": "Digital", "X":3178, "Y":1375, "Width":660, "Height":54, "Cmt":"Wheel up"},
+ { "Input": "button5", "Type": "Digital", "X":3178, "Y":1425, "Width":660, "Height":54, "Cmt":"Wheel down"},
+ { "Input": "button6", "Type": "Digital", "X":3178, "Y":1476, "Width":660, "Height":54, "Cmt":"Wheel push"},
+ { "Input": "button7", "Type": "Digital", "X":3178, "Y":1216, "Width":660, "Height":54, "Cmt":"Mini-joystick push"},
+ { "Input": "button8", "Type": "Digital", "X":3069, "Y":593, "Width":770, "Height":54, "Cmt":"4-way hat right up"},
+ { "Input": "button9", "Type": "Digital", "X":3069, "Y":648, "Width":770, "Height":54, "Cmt":"4-way hat right righ"},
+ { "Input": "button10", "Type": "Digital", "X":3069, "Y":700, "Width":770, "Height":54, "Cmt":"4-way hat right down"},
+ { "Input": "button11", "Type": "Digital", "X":3069, "Y":753, "Width":770, "Height":54, "Cmt":"4-way hat right left"},
+ { "Input": "button12", "Type": "Digital", "X":3069, "Y":804, "Width":770, "Height":54, "Cmt":"4-way hat right push?"},
+ { "Input": "button13", "Type": "Digital", "X":1859, "Y":939, "Width":770, "Height":54, "Cmt":"4-way hat left up"},
+ { "Input": "button14", "Type": "Digital", "X":1859, "Y":992, "Width":770, "Height":54, "Cmt":"4-way hat left righ"},
+ { "Input": "button15", "Type": "Digital", "X":1859, "Y":1045, "Width":770, "Height":54, "Cmt":"4-way hat left down"},
+ { "Input": "button16", "Type": "Digital", "X":1859, "Y":1098, "Width":770, "Height":54, "Cmt":"4-way hat left left"},
+ { "Input": "button17", "Type": "Digital", "X":1859, "Y":1150, "Width":770, "Height":54, "Cmt":"4-way hat left push?"},
+ { "Input": "button18", "Type": "Digital", "X":2276, "Y":288, "Width":770, "Height":54, "Cmt":"8-way hat LED up"},
+ { "Input": "button19", "Type": "Digital", "X":2276, "Y":341, "Width":770, "Height":54, "Cmt":"8-way hat LED righ"},
+ { "Input": "button20", "Type": "Digital", "X":2276, "Y":394, "Width":770, "Height":54, "Cmt":"8-way hat LED down"},
+ { "Input": "button21", "Type": "Digital", "X":2276, "Y":446, "Width":770, "Height":54, "Cmt":"8-way hat LED left"},
+ { "Input": "button22", "Type": "Digital", "X":2276, "Y":497, "Width":770, "Height":54, "Cmt":"8-way hat LED push?"},
+ { "Input": "x", "Type": "Analogue", "X":2080, "Y":1917, "Width":770, "Height":54, "Cmt":"Joystick axis X"},
+ { "Input": "y", "Type": "Analogue", "X":2080, "Y":1867, "Width":770, "Height":54, "Cmt":"Joystick axis Y"},
+ { "Input": "z", "Type": "Analogue", "X":2080, "Y":1969, "Width":770, "Height":54, "Cmt":"Joystick axis Rot"},
+ { "Input": "rotx", "Type": "Analogue", "X":3178, "Y":1164, "Width":660, "Height":54, "Cmt":"Mini-joysticks axis X"},
+ { "Input": "roty", "Type": "Analogue", "X":3178, "Y":1115, "Width":660, "Height":54, "Cmt":"Mini-joysticks axis Y"}
+ ]
+ }
+ ]
+}