diff --git a/app/Ally/AllyControl.cs b/app/Ally/AllyControl.cs index 063bfe0c..3bddfd26 100644 --- a/app/Ally/AllyControl.cs +++ b/app/Ally/AllyControl.cs @@ -222,7 +222,7 @@ namespace GHelper.Ally settings = settingsForm; - timer = new System.Timers.Timer(500); + timer = new System.Timers.Timer(300); timer.Elapsed += Timer_Elapsed; } @@ -236,6 +236,8 @@ namespace GHelper.Ally if (_applyMode != newMode) _autoCount++; else _autoCount = 0; + if (_mode != ControllerMode.Auto) return; + if (_autoCount > 2) { _applyMode = newMode; @@ -326,63 +328,81 @@ namespace GHelper.Ally static private void MappingZone(BindingZone zone) { - int Key1, Key2; + int KeyL1, KeyR1; + int KeyL2, KeyR2; + switch (zone) { case BindingZone.DPadUpDown: - Key1 = AppConfig.Get("bind_du", MappingDU); - Key2 = AppConfig.Get("bind_dd", MappingDD); + KeyL1 = AppConfig.Get("bind_du", MappingDU); + KeyR1 = AppConfig.Get("bind_dd", MappingDD); + KeyL2 = AppConfig.Get("bind2_du"); + KeyR2 = AppConfig.Get("bind2_dd"); break; case BindingZone.DPadLeftRight: - Key1 = AppConfig.Get("bind_dl", MappingDL); - Key2 = AppConfig.Get("bind_dr", MappingDR); + KeyL1 = AppConfig.Get("bind_dl", MappingDL); + KeyR1 = AppConfig.Get("bind_dr", MappingDR); + KeyL2 = AppConfig.Get("bind2_dl"); + KeyR2 = AppConfig.Get("bind2_dr"); break; case BindingZone.StickClick: - Key1 = AppConfig.Get("bind_ls", MappingLS); - Key2 = AppConfig.Get("bind_rs", MappingRS); + KeyL1 = AppConfig.Get("bind_ls", MappingLS); + KeyR1 = AppConfig.Get("bind_rs", MappingRS); + KeyL2 = AppConfig.Get("bind2_ls"); + KeyR2 = AppConfig.Get("bind2_rs"); break; case BindingZone.Bumper: - Key1 = AppConfig.Get("bind_lb", MappingLB); - Key2 = AppConfig.Get("bind_rb", MappingRB); + KeyL1 = AppConfig.Get("bind_lb", MappingLB); + KeyR1 = AppConfig.Get("bind_rb", MappingRB); + KeyL2 = AppConfig.Get("bind2_lb"); + KeyR2 = AppConfig.Get("bind2_rb"); break; case BindingZone.AB: - Key1 = AppConfig.Get("bind_a", MappingA); - Key2 = AppConfig.Get("bind_b", MappingB); + KeyL1 = AppConfig.Get("bind_a", MappingA); + KeyR1 = AppConfig.Get("bind_b", MappingB); + KeyL2 = AppConfig.Get("bind2_a"); + KeyR2 = AppConfig.Get("bind2_b"); break; case BindingZone.XY: - Key1 = AppConfig.Get("bind_x", MappingX); - Key2 = AppConfig.Get("bind_y", MappingY); + KeyL1 = AppConfig.Get("bind_x", MappingX); + KeyR1 = AppConfig.Get("bind_y", MappingY); + KeyL2 = AppConfig.Get("bind2_x"); + KeyR2 = AppConfig.Get("bind2_y"); break; case BindingZone.ViewMenu: - Key1 = AppConfig.Get("bind_vb", MappingVB); - Key2 = AppConfig.Get("bind_mv", MappingMB); + KeyL1 = AppConfig.Get("bind_vb", MappingVB); + KeyR1 = AppConfig.Get("bind_mb", MappingMB); + KeyL2 = AppConfig.Get("bind2_vb"); + KeyR2 = AppConfig.Get("bind2_mb"); break; case BindingZone.M1M2: - Key1 = AppConfig.Get("bind_m2", MappingM2); - Key2 = AppConfig.Get("bind_m1", MappingM1); + KeyL1 = AppConfig.Get("bind_m2", MappingM2); + KeyR1 = AppConfig.Get("bind_m1", MappingM1); + KeyL2 = AppConfig.Get("bind2_m2", MappingM2); + KeyR2 = AppConfig.Get("bind2_m1", MappingM1); break; default: - Key1 = AppConfig.Get("bind_trl", MappingLT); - Key2 = AppConfig.Get("bind_trr", MappingRT); + KeyL1 = AppConfig.Get("bind_trl", MappingLT); + KeyR1 = AppConfig.Get("bind_trr", MappingRT); + KeyL2 = AppConfig.Get("bind2_trl"); + KeyR2 = AppConfig.Get("bind2_trr"); break; } - if (Key1 == -1 && Key2 == -1) return; + if (KeyL1 == -1 && KeyR1 == -1) return; byte[] bindings = new byte[64]; byte[] init = new byte[] { AsusHid.INPUT_ID, 0xd1, 0x02, (byte)zone, 0x2c }; init.CopyTo(bindings, 0); - DecodeBinding(Key1).CopyTo(bindings, 5); - DecodeBinding(Key1).CopyTo(bindings, 16); + DecodeBinding(KeyL1).CopyTo(bindings, 5); + DecodeBinding(KeyL2).CopyTo(bindings, 16); - DecodeBinding(Key2).CopyTo(bindings, 27); - DecodeBinding(Key2).CopyTo(bindings, 38); + DecodeBinding(KeyR1).CopyTo(bindings, 27); + DecodeBinding(KeyR2).CopyTo(bindings, 38); - //AsusHid.WriteInput(Encoding.ASCII.GetBytes("ZASUS Tech.Inc."), "Init"); - - AsusHid.WriteInput(MappingReady); + AsusHid.WriteInput(MappingReady, null); AsusHid.WriteInput(bindings, $"Bind{zone}"); @@ -418,7 +438,7 @@ namespace GHelper.Ally if (applyMode is not null) _applyMode = (ControllerMode)applyMode; AsusHid.WriteInput(new byte[] { AsusHid.INPUT_ID, 0xd1, 0x01, 0x01, (byte)_applyMode }, "Controller"); - AsusHid.WriteInput(MappingSave); + AsusHid.WriteInput(MappingSave, null); MappingZone(BindingZone.M1M2); @@ -434,7 +454,7 @@ namespace GHelper.Ally MappingZone(BindingZone.Trigger); } - AsusHid.WriteInput(MappingSave); + AsusHid.WriteInput(MappingSave, null); } private void SetMode(ControllerMode mode) diff --git a/app/Handheld.Designer.cs b/app/Handheld.Designer.cs index ef6dd6ca..3a429467 100644 --- a/app/Handheld.Designer.cs +++ b/app/Handheld.Designer.cs @@ -68,6 +68,8 @@ panelBindingsTitle = new Panel(); pictureBindings = new PictureBox(); labelBindings = new Label(); + labelPrimary = new Label(); + labelSecondary = new Label(); panelController.SuspendLayout(); panelVibra.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)trackVibra).BeginInit(); @@ -90,6 +92,7 @@ panelSDeadzone.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)pictureSDeadzone).BeginInit(); panelBindings.SuspendLayout(); + tableBindings.SuspendLayout(); panelBindingsTitle.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)pictureBindings).BeginInit(); SuspendLayout(); @@ -557,9 +560,9 @@ panelBindings.Controls.Add(panelBindingsTitle); panelBindings.Dock = DockStyle.Left; panelBindings.Location = new Point(570, 10); - panelBindings.MinimumSize = new Size(600, 0); + panelBindings.MinimumSize = new Size(700, 0); panelBindings.Name = "panelBindings"; - panelBindings.Size = new Size(600, 912); + panelBindings.Size = new Size(700, 912); panelBindings.TabIndex = 46; // // tableBindings @@ -568,13 +571,16 @@ tableBindings.ColumnCount = 3; tableBindings.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 20F)); tableBindings.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 40F)); - tableBindings.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 40F)); + tableBindings.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 40F)); + tableBindings.Controls.Add(labelPrimary, 1, 0); + tableBindings.Controls.Add(labelSecondary, 2, 0); + tableBindings.Dock = DockStyle.Top; tableBindings.Location = new Point(0, 60); tableBindings.Name = "tableBindings"; tableBindings.Padding = new Padding(5); tableBindings.RowCount = 1; - tableBindings.RowStyles.Add(new RowStyle(SizeType.Percent, 50F)); - tableBindings.Size = new Size(500, 10); + tableBindings.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); + tableBindings.Size = new Size(700, 52); tableBindings.TabIndex = 49; // // panelBindingsTitle @@ -587,7 +593,7 @@ panelBindingsTitle.Location = new Point(0, 0); panelBindingsTitle.Margin = new Padding(4); panelBindingsTitle.Name = "panelBindingsTitle"; - panelBindingsTitle.Size = new Size(500, 60); + panelBindingsTitle.Size = new Size(700, 60); panelBindingsTitle.TabIndex = 44; // // pictureBindings @@ -614,12 +620,36 @@ labelBindings.TabIndex = 40; labelBindings.Text = "Bindings"; // + // labelPrimary + // + labelPrimary.AutoSize = true; + labelPrimary.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point); + labelPrimary.Location = new Point(147, 5); + labelPrimary.Margin = new Padding(4, 0, 4, 0); + labelPrimary.Name = "labelPrimary"; + labelPrimary.Padding = new Padding(5); + labelPrimary.Size = new Size(115, 42); + labelPrimary.TabIndex = 41; + labelPrimary.Text = "Primary"; + // + // labelSecondary + // + labelSecondary.AutoSize = true; + labelSecondary.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point); + labelSecondary.Location = new Point(423, 5); + labelSecondary.Margin = new Padding(4, 0, 4, 0); + labelSecondary.Name = "labelSecondary"; + labelSecondary.Padding = new Padding(5); + labelSecondary.Size = new Size(144, 42); + labelSecondary.TabIndex = 42; + labelSecondary.Text = "Secondary"; + // // Handheld // AutoScaleDimensions = new SizeF(13F, 32F); AutoScaleMode = AutoScaleMode.Font; AutoSize = true; - ClientSize = new Size(1277, 932); + ClientSize = new Size(1286, 932); Controls.Add(panelBindings); Controls.Add(panelController); MaximizeBox = false; @@ -661,6 +691,8 @@ ((System.ComponentModel.ISupportInitialize)pictureSDeadzone).EndInit(); panelBindings.ResumeLayout(false); panelBindings.PerformLayout(); + tableBindings.ResumeLayout(false); + tableBindings.PerformLayout(); panelBindingsTitle.ResumeLayout(false); panelBindingsTitle.PerformLayout(); ((System.ComponentModel.ISupportInitialize)pictureBindings).EndInit(); @@ -710,5 +742,7 @@ private PictureBox pictureBindings; private Label labelBindings; private TableLayoutPanel tableBindings; + private Label labelPrimary; + private Label labelSecondary; } } \ No newline at end of file diff --git a/app/Handheld.cs b/app/Handheld.cs index 2b34ef0f..1cbd698d 100644 --- a/app/Handheld.cs +++ b/app/Handheld.cs @@ -44,36 +44,30 @@ namespace GHelper FillBinding("m1", "M1", AllyControl.MappingM1); FillBinding("m2", "M2", AllyControl.MappingM2); - FillBinding("a", "A", AllyControl.MappingA); - FillBinding("b", "B", AllyControl.MappingB); - FillBinding("x", "X", AllyControl.MappingX); - FillBinding("y", "Y", AllyControl.MappingY); + FillBinding("a", "A"); + FillBinding("b", "B"); + FillBinding("x", "X"); + FillBinding("y", "Y"); - FillBinding("du", "DPad Up", AllyControl.MappingDU); - FillBinding("dd", "DPad Down", AllyControl.MappingDD); + FillBinding("du", "DPad Up"); + FillBinding("dd", "DPad Down"); - FillBinding("dl", "DPad Left", AllyControl.MappingDL); - FillBinding("dr", "DPad Right", AllyControl.MappingDR); + FillBinding("dl", "DPad Left"); + FillBinding("dr", "DPad Right"); - FillBinding("rb", "Right Bumper", AllyControl.MappingRB); - FillBinding("lb", "Left Bumper", AllyControl.MappingLB); + FillBinding("rb", "RBumper"); + FillBinding("lb", "LBumper"); - FillBinding("rs", "Right Stick", AllyControl.MappingRS); - FillBinding("ll", "Left Stick", AllyControl.MappingLS); + FillBinding("rs", "RStick"); + FillBinding("ll", "LStick"); + FillBinding("vb", "View"); + FillBinding("mb", "Menu"); } - - - private void FillBinding(string name, string label, int defaultValue = -1) + private RComboBox ComboBinding(string name, int value) { - tableBindings.RowStyles.Add(new RowStyle(SizeType.AutoSize)); - tableBindings.Controls.Add(new Label { Text = label + ":", Anchor = AnchorStyles.Left, Dock = DockStyle.Fill, Padding = new Padding(5, 5, 5, 5) }, 0, tableBindings.RowCount - 1); - - name = "bind_" + name; - var combo = new RComboBox(); - combo.BorderColor = Color.White; combo.ButtonColor = Color.FromArgb(255, 255, 255); combo.Dock = DockStyle.Fill; @@ -83,18 +77,26 @@ namespace GHelper combo.DropDownStyle = ComboBoxStyle.DropDownList; combo.DisplayMember = "Value"; combo.ValueMember = "Key"; - - int value = AppConfig.Get(name, defaultValue); - foreach (var item in AllyControl.BindingCodes) { combo.Items.Add(new KeyValuePair(item.Key, item.Value)); if (item.Key == value) combo.SelectedItem = item; } - combo.SelectedValueChanged += Binding_SelectedValueChanged; - tableBindings.Controls.Add(combo, 1, tableBindings.RowCount - 1); + return combo; + + } + + + private void FillBinding(string binding, string label, int defaultValue = -1) + { + tableBindings.RowStyles.Add(new RowStyle(SizeType.AutoSize)); + tableBindings.Controls.Add(new Label { Text = label, Anchor = AnchorStyles.Left, Dock = DockStyle.Fill, Padding = new Padding(5, 5, 5, 5) }, 0, tableBindings.RowCount); + + tableBindings.Controls.Add(ComboBinding("bind_" + binding, AppConfig.Get("bind_" + binding, defaultValue)), 1, tableBindings.RowCount); + tableBindings.Controls.Add(ComboBinding("bind2_" + binding, AppConfig.Get("bind2_" + binding)), 2, tableBindings.RowCount); + tableBindings.RowCount++; }