diff --git a/BetterJoyForCemu/BetterJoy.csproj b/BetterJoyForCemu/BetterJoy.csproj index 732acce..292a02b 100644 --- a/BetterJoyForCemu/BetterJoy.csproj +++ b/BetterJoyForCemu/BetterJoy.csproj @@ -119,8 +119,8 @@ - - ..\packages\WindowsInput.6.1.1\lib\net461\WindowsInput.dll + + ..\packages\WindowsInput.6.1.0\lib\net461\WindowsInput.dll diff --git a/BetterJoyForCemu/Joycon.cs b/BetterJoyForCemu/Joycon.cs index b3a79ea..68ae0fd 100644 --- a/BetterJoyForCemu/Joycon.cs +++ b/BetterJoyForCemu/Joycon.cs @@ -244,10 +244,11 @@ namespace BetterJoyForCemu { public byte LED = 0x0; public string serial_number; + bool thirdParty = false; private float[] activeData; - public Joycon(IntPtr handle_, bool imu, bool localize, float alpha, bool left, string path, string serialNum, int id = 0, bool isPro = false, bool isSnes = false) { + public Joycon(IntPtr handle_, bool imu, bool localize, float alpha, bool left, string path, string serialNum, int id = 0, bool isPro = false, bool isSnes = false, bool thirdParty = false) { serial_number = serialNum; activeData = new float[6]; handle = handle_; @@ -264,6 +265,7 @@ namespace BetterJoyForCemu { this.isPro = isPro || isSnes; this.isSnes = isSnes; isUSB = serialNum == "000000000001"; + thirdParty = thirdParty; this.path = path; @@ -1030,7 +1032,7 @@ namespace BetterJoyForCemu { } private void dump_calibration_data() { - if (isSnes) + if (isSnes || thirdParty) return; HIDapi.hid_set_nonblocking(handle, 0); byte[] buf_ = ReadSPI(0x80, (isLeft ? (byte)0x12 : (byte)0x1d), 9); // get user calibration data if possible diff --git a/BetterJoyForCemu/Program.cs b/BetterJoyForCemu/Program.cs index 5503d40..ef912d2 100644 --- a/BetterJoyForCemu/Program.cs +++ b/BetterJoyForCemu/Program.cs @@ -194,7 +194,7 @@ namespace BetterJoyForCemu { bool isPro = prod_id == product_pro; bool isSnes = prod_id == product_snes; - j.Add(new Joycon(handle, EnableIMU, EnableLocalize & EnableIMU, 0.05f, isLeft, enumerate.path, enumerate.serial_number, j.Count, isPro, isSnes)); + j.Add(new Joycon(handle, EnableIMU, EnableLocalize & EnableIMU, 0.05f, isLeft, enumerate.path, enumerate.serial_number, j.Count, isPro, isSnes, thirdParty != null)); foundNew = true; j.Last().form = form; @@ -362,8 +362,8 @@ namespace BetterJoyForCemu { public static List thirdPartyCons = new List(); - private static WindowsInput.Events.Sources.IKeyboardEventSource keyboard; - private static WindowsInput.Events.Sources.IMouseEventSource mouse; + private static WindowsInput.EventSources.IKeyboardEventSource keyboard; + private static WindowsInput.EventSources.IMouseEventSource mouse; public static void Start() { pid = Process.GetCurrentProcess().Id.ToString(); // get current process id for HidCerberus.Srv @@ -446,7 +446,7 @@ namespace BetterJoyForCemu { form.console.AppendText("All systems go\r\n"); } - private static void Mouse_MouseEvent(object sender, WindowsInput.Events.Sources.EventSourceEventArgs e) { + private static void Mouse_MouseEvent(object sender, WindowsInput.EventSources.EventSourceEventArgs e) { if (e.Data.ButtonDown != null) { string res_val = Config.Value("reset_mouse"); if (res_val.StartsWith("mse_")) @@ -469,7 +469,7 @@ namespace BetterJoyForCemu { } } - private static void Keyboard_KeyEvent(object sender, WindowsInput.Events.Sources.EventSourceEventArgs e) { + private static void Keyboard_KeyEvent(object sender, WindowsInput.EventSources.EventSourceEventArgs e) { if (e.Data.KeyDown != null) { string res_val = Config.Value("reset_mouse"); if (res_val.StartsWith("key_")) diff --git a/BetterJoyForCemu/Reassign.cs b/BetterJoyForCemu/Reassign.cs index df60f53..ad83ac7 100644 --- a/BetterJoyForCemu/Reassign.cs +++ b/BetterJoyForCemu/Reassign.cs @@ -10,123 +10,123 @@ using System.Threading.Tasks; using System.Windows.Forms; namespace BetterJoyForCemu { - public partial class Reassign : Form { - private WindowsInput.Events.Sources.IKeyboardEventSource keyboard; - private WindowsInput.Events.Sources.IMouseEventSource mouse; + public partial class Reassign : Form { + private WindowsInput.EventSources.IKeyboardEventSource keyboard; + private WindowsInput.EventSources.IMouseEventSource mouse; - ContextMenuStrip menu_joy_buttons = new ContextMenuStrip(); + ContextMenuStrip menu_joy_buttons = new ContextMenuStrip(); - private Control curAssignment; + private Control curAssignment; - public Reassign() { - InitializeComponent(); + public Reassign() { + InitializeComponent(); - foreach (int i in Enum.GetValues(typeof(Joycon.Button))) { - ToolStripMenuItem temp = new ToolStripMenuItem(Enum.GetName(typeof(Joycon.Button), i)); - temp.Tag = i; - menu_joy_buttons.Items.Add(temp); - } + foreach (int i in Enum.GetValues(typeof(Joycon.Button))) { + ToolStripMenuItem temp = new ToolStripMenuItem(Enum.GetName(typeof(Joycon.Button), i)); + temp.Tag = i; + menu_joy_buttons.Items.Add(temp); + } - menu_joy_buttons.ItemClicked += Menu_joy_buttons_ItemClicked; + menu_joy_buttons.ItemClicked += Menu_joy_buttons_ItemClicked; - foreach (SplitButton c in new SplitButton[] { btn_capture, btn_home, btn_sl_l, btn_sl_r, btn_sr_l, btn_sr_r, btn_reset_mouse, btn_active_gyro }) { - c.Tag = c.Name.Substring(4); - GetPrettyName(c); + foreach (SplitButton c in new SplitButton[] { btn_capture, btn_home, btn_sl_l, btn_sl_r, btn_sr_l, btn_sr_r, btn_reset_mouse, btn_active_gyro }) { + c.Tag = c.Name.Substring(4); + GetPrettyName(c); - tip_reassign.SetToolTip(c, "Left-click to detect input.\r\nMiddle-click to clear to default.\r\nRight-click to see more options."); - c.MouseDown += Remap; - c.Menu = menu_joy_buttons; - c.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - } - } + tip_reassign.SetToolTip(c, "Left-click to detect input.\r\nMiddle-click to clear to default.\r\nRight-click to see more options."); + c.MouseDown += Remap; + c.Menu = menu_joy_buttons; + c.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + } + } - private void Menu_joy_buttons_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { - Control c = sender as Control; + private void Menu_joy_buttons_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { + Control c = sender as Control; - ToolStripItem clickedItem = e.ClickedItem; + ToolStripItem clickedItem = e.ClickedItem; - SplitButton caller = (SplitButton)c.Tag; - Config.SetValue((string)caller.Tag, "joy_" + (clickedItem.Tag)); - GetPrettyName(caller); - } + SplitButton caller = (SplitButton)c.Tag; + Config.SetValue((string)caller.Tag, "joy_" + (clickedItem.Tag)); + GetPrettyName(caller); + } - private void Remap(object sender, MouseEventArgs e) { - SplitButton c = sender as SplitButton; - switch (e.Button) { - case MouseButtons.Left: - c.Text = "..."; - curAssignment = c; - break; - case MouseButtons.Middle: - Config.SetValue((string)c.Tag, Config.GetDefaultValue((string)c.Tag)); - GetPrettyName(c); - break; - case MouseButtons.Right: - break; - } - } + private void Remap(object sender, MouseEventArgs e) { + SplitButton c = sender as SplitButton; + switch (e.Button) { + case MouseButtons.Left: + c.Text = "..."; + curAssignment = c; + break; + case MouseButtons.Middle: + Config.SetValue((string)c.Tag, Config.GetDefaultValue((string)c.Tag)); + GetPrettyName(c); + break; + case MouseButtons.Right: + break; + } + } - private void Reassign_Load(object sender, EventArgs e) { - keyboard = WindowsInput.Capture.Global.KeyboardAsync(); - keyboard.KeyEvent += Keyboard_KeyEvent; - mouse = WindowsInput.Capture.Global.MouseAsync(); - mouse.MouseEvent += Mouse_MouseEvent; - } + private void Reassign_Load(object sender, EventArgs e) { + keyboard = WindowsInput.Capture.Global.KeyboardAsync(); + keyboard.KeyEvent += Keyboard_KeyEvent; + mouse = WindowsInput.Capture.Global.MouseAsync(); + mouse.MouseEvent += Mouse_MouseEvent; + } - private void Mouse_MouseEvent(object sender, WindowsInput.Events.Sources.EventSourceEventArgs e) { - if (curAssignment != null && e.Data.ButtonDown != null) { - Config.SetValue((string)curAssignment.Tag, "mse_" + ((int)e.Data.ButtonDown.Button)); - AsyncPrettyName(curAssignment); - curAssignment = null; - e.Next_Hook_Enabled = false; - } - } + private void Mouse_MouseEvent(object sender, WindowsInput.EventSources.EventSourceEventArgs e) { + if (curAssignment != null && e.Data.ButtonDown != null) { + Config.SetValue((string)curAssignment.Tag, "mse_" + ((int)e.Data.ButtonDown.Button)); + AsyncPrettyName(curAssignment); + curAssignment = null; + e.Next_Hook_Enabled = false; + } + } - private void Keyboard_KeyEvent(object sender, WindowsInput.Events.Sources.EventSourceEventArgs e) { - if (curAssignment != null && e.Data.KeyDown != null) { - Config.SetValue((string)curAssignment.Tag, "key_" + ((int)e.Data.KeyDown.Key)); - AsyncPrettyName(curAssignment); - curAssignment = null; - e.Next_Hook_Enabled = false; - } - } + private void Keyboard_KeyEvent(object sender, WindowsInput.EventSources.EventSourceEventArgs e) { + if (curAssignment != null && e.Data.KeyDown != null) { + Config.SetValue((string)curAssignment.Tag, "key_" + ((int)e.Data.KeyDown.Key)); + AsyncPrettyName(curAssignment); + curAssignment = null; + e.Next_Hook_Enabled = false; + } + } - private void Reassign_FormClosing(object sender, FormClosingEventArgs e) { - keyboard.Dispose(); - mouse.Dispose(); - } + private void Reassign_FormClosing(object sender, FormClosingEventArgs e) { + keyboard.Dispose(); + mouse.Dispose(); + } - private void AsyncPrettyName(Control c) { - if (InvokeRequired) { - this.Invoke(new Action(AsyncPrettyName), new object[] { c }); - return; - } - GetPrettyName(c); - } + private void AsyncPrettyName(Control c) { + if (InvokeRequired) { + this.Invoke(new Action(AsyncPrettyName), new object[] { c }); + return; + } + GetPrettyName(c); + } - private void GetPrettyName(Control c) { - string val; - switch (val = Config.Value((string)c.Tag)) { - case "0": - if (c == btn_home) - c.Text = "Guide"; - else - c.Text = ""; - break; - default: - Type t = val.StartsWith("joy_") ? typeof(Joycon.Button) : (val.StartsWith("key_") ? typeof(WindowsInput.Events.KeyCode) : typeof(WindowsInput.Events.ButtonCode)); - c.Text = Enum.GetName(t, Int32.Parse(val.Substring(4))); - break; - } - } + private void GetPrettyName(Control c) { + string val; + switch (val = Config.Value((string)c.Tag)) { + case "0": + if (c == btn_home) + c.Text = "Guide"; + else + c.Text = ""; + break; + default: + Type t = val.StartsWith("joy_") ? typeof(Joycon.Button) : (val.StartsWith("key_") ? typeof(WindowsInput.Events.KeyCode) : typeof(WindowsInput.Events.ButtonCode)); + c.Text = Enum.GetName(t, Int32.Parse(val.Substring(4))); + break; + } + } - private void btn_apply_Click(object sender, EventArgs e) { - Config.Save(); - } + private void btn_apply_Click(object sender, EventArgs e) { + Config.Save(); + } - private void btn_close_Click(object sender, EventArgs e) { - btn_apply_Click(sender, e); - Close(); - } - } + private void btn_close_Click(object sender, EventArgs e) { + btn_apply_Click(sender, e); + Close(); + } + } } diff --git a/BetterJoyForCemu/packages.config b/BetterJoyForCemu/packages.config index 2d15399..c46fb29 100644 --- a/BetterJoyForCemu/packages.config +++ b/BetterJoyForCemu/packages.config @@ -3,5 +3,5 @@ - + \ No newline at end of file