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"} + ] + } + ] +}