diff --git a/src/BizHawk.Client.Common/input/ClientInputFocus.cs b/src/BizHawk.Client.Common/input/ClientInputFocus.cs
new file mode 100644
index 0000000000..94578ba98d
--- /dev/null
+++ b/src/BizHawk.Client.Common/input/ClientInputFocus.cs
@@ -0,0 +1,15 @@
+#nullable enable
+
+using System;
+
+namespace BizHawk.Client.Common
+{
+ [Flags]
+ public enum ClientInputFocus
+ {
+ None = 0,
+ Mouse = 1,
+ Keyboard = 2,
+ Pad = 4
+ }
+}
diff --git a/src/BizHawk.Client.Common/input/HostInputAdapter.cs b/src/BizHawk.Client.Common/input/HostInputAdapter.cs
new file mode 100644
index 0000000000..dda30a7f44
--- /dev/null
+++ b/src/BizHawk.Client.Common/input/HostInputAdapter.cs
@@ -0,0 +1,23 @@
+#nullable enable
+
+using System;
+using System.Collections.Generic;
+
+namespace BizHawk.Client.Common
+{
+ /// this was easier than trying to make static classes instantiable...
+ public interface HostInputAdapter
+ {
+ void DeInitAll();
+
+ void FirstInitAll(IntPtr mainFormHandle);
+
+ void ReInitGamepads(IntPtr mainFormHandle);
+
+ void PreprocessHostGamepads();
+
+ void ProcessHostGamepads(Action handleButton, Action handleAxis);
+
+ IEnumerable ProcessHostKeyboards();
+ }
+}
diff --git a/src/BizHawk.Client.Common/input/KeyEvent.cs b/src/BizHawk.Client.Common/input/KeyEvent.cs
new file mode 100644
index 0000000000..84ef594322
--- /dev/null
+++ b/src/BizHawk.Client.Common/input/KeyEvent.cs
@@ -0,0 +1,13 @@
+#nullable enable
+
+using OpenTK.Input;
+
+namespace BizHawk.Client.Common
+{
+ public struct KeyEvent
+ {
+ public Key Key;
+
+ public bool Pressed;
+ }
+}
diff --git a/src/BizHawk.Client.EmuHawk/Input/HostInputAdapters.cs b/src/BizHawk.Client.EmuHawk/Input/HostInputAdapters.cs
index 1deb46b213..70f41a8e4e 100644
--- a/src/BizHawk.Client.EmuHawk/Input/HostInputAdapters.cs
+++ b/src/BizHawk.Client.EmuHawk/Input/HostInputAdapters.cs
@@ -4,26 +4,10 @@ using System;
using System.Collections.Generic;
using System.Linq;
-using static BizHawk.Client.EmuHawk.Input;
+using BizHawk.Client.Common;
namespace BizHawk.Client.EmuHawk
{
- /// this was easier than trying to make static classes instantiable...
- public interface HostInputAdapter
- {
- void DeInitAll();
-
- void FirstInitAll(IntPtr mainFormHandle);
-
- void ReInitGamepads(IntPtr mainFormHandle);
-
- void PreprocessHostGamepads();
-
- void ProcessHostGamepads(Action handleButton, Action handleAxis);
-
- IEnumerable ProcessHostKeyboards();
- }
-
internal sealed class DirectInputAdapter : HostInputAdapter
{
public void DeInitAll()
@@ -51,18 +35,18 @@ namespace BizHawk.Client.EmuHawk
GamePad360.UpdateAll();
}
- public void ProcessHostGamepads(Action handleButton, Action handleAxis)
+ public void ProcessHostGamepads(Action handleButton, Action handleAxis)
{
foreach (var pad in GamePad360.EnumerateDevices())
{
var inputNamePrefix = $"X{pad.PlayerNumber} ";
- for (int b = 0, n = pad.NumButtons; b < n; b++) handleButton(inputNamePrefix + pad.ButtonName(b), pad.Pressed(b), InputFocus.Pad);
+ for (int b = 0, n = pad.NumButtons; b < n; b++) handleButton(inputNamePrefix + pad.ButtonName(b), pad.Pressed(b), ClientInputFocus.Pad);
foreach (var (axisName, f) in pad.GetAxes()) handleAxis(inputNamePrefix + axisName, (int) f);
}
foreach (var pad in GamePad.EnumerateDevices())
{
var inputNamePrefix = $"J{pad.PlayerNumber} ";
- for (int b = 0, n = pad.NumButtons; b < n; b++) handleButton(inputNamePrefix + pad.ButtonName(b), pad.Pressed(b), InputFocus.Pad);
+ for (int b = 0, n = pad.NumButtons; b < n; b++) handleButton(inputNamePrefix + pad.ButtonName(b), pad.Pressed(b), ClientInputFocus.Pad);
foreach (var (axisName, f) in pad.GetAxes()) handleAxis(inputNamePrefix + axisName, (int) f);
}
}
@@ -84,11 +68,11 @@ namespace BizHawk.Client.EmuHawk
public void PreprocessHostGamepads() => OTK_GamePad.UpdateAll();
- public void ProcessHostGamepads(Action handleButton, Action handleAxis)
+ public void ProcessHostGamepads(Action handleButton, Action handleAxis)
{
foreach (var pad in OTK_GamePad.EnumerateDevices())
{
- foreach (var but in pad.buttonObjects) handleButton(pad.InputNamePrefix + but.ButtonName, but.ButtonAction(), InputFocus.Pad);
+ foreach (var but in pad.buttonObjects) handleButton(pad.InputNamePrefix + but.ButtonName, but.ButtonAction(), ClientInputFocus.Pad);
foreach (var (axisID, f) in pad.GetAxes()) handleAxis($"{pad.InputNamePrefix}{axisID} Axis", (int) f);
}
}
diff --git a/src/BizHawk.Client.EmuHawk/Input/IPCKeyInput.cs b/src/BizHawk.Client.EmuHawk/Input/IPCKeyInput.cs
index b4389ce871..c9c65c3698 100644
--- a/src/BizHawk.Client.EmuHawk/Input/IPCKeyInput.cs
+++ b/src/BizHawk.Client.EmuHawk/Input/IPCKeyInput.cs
@@ -2,6 +2,9 @@
using System.IO;
using System.Threading;
using System.IO.Pipes;
+
+using BizHawk.Client.Common;
+
using SlimDX.DirectInput;
// this is not a very safe or pretty protocol, I'm not proud of it
diff --git a/src/BizHawk.Client.EmuHawk/Input/Input.cs b/src/BizHawk.Client.EmuHawk/Input/Input.cs
index a3685b1443..392d5d2b65 100644
--- a/src/BizHawk.Client.EmuHawk/Input/Input.cs
+++ b/src/BizHawk.Client.EmuHawk/Input/Input.cs
@@ -60,15 +60,6 @@ namespace BizHawk.Client.EmuHawk
public class Input
{
- [Flags]
- public enum InputFocus
- {
- None = 0,
- Mouse = 1,
- Keyboard = 2,
- Pad = 4
- }
-
public enum AllowInput
{
None = 0,
@@ -82,10 +73,10 @@ namespace BizHawk.Client.EmuHawk
/// Why is this receiving a control, but actually using it as a Form (where the WantingMouseFocus is checked?)
/// Because later we might change it to work off the control, specifically, if a control is supplied (normally actually a Form will be supplied)
///
- public void ControlInputFocus(Control c, InputFocus types, bool wants)
+ public void ControlInputFocus(Control c, ClientInputFocus types, bool wants)
{
- if (types.HasFlag(InputFocus.Mouse) && wants) _wantingMouseFocus.Add(c);
- if (types.HasFlag(InputFocus.Mouse) && !wants) _wantingMouseFocus.Remove(c);
+ if (types.HasFlag(ClientInputFocus.Mouse) && wants) _wantingMouseFocus.Add(c);
+ if (types.HasFlag(ClientInputFocus.Mouse) && !wants) _wantingMouseFocus.Remove(c);
}
private readonly HashSet _wantingMouseFocus = new HashSet();
@@ -191,7 +182,7 @@ namespace BizHawk.Client.EmuHawk
{
public LogicalButton LogicalButton;
public InputEventType EventType;
- public InputFocus Source;
+ public ClientInputFocus Source;
public override string ToString()
{
return $"{EventType}:{LogicalButton}";
@@ -205,7 +196,7 @@ namespace BizHawk.Client.EmuHawk
private bool _trackDeltas;
private bool _ignoreEventsNextPoll;
- private void HandleButton(string button, bool newState, InputFocus source)
+ private void HandleButton(string button, bool newState, ClientInputFocus source)
{
ModifierKey currentModifier = ButtonToModifierKey(button);
if (EnableIgnoreModifiers && currentModifier != ModifierKey.None) return;
@@ -350,7 +341,7 @@ namespace BizHawk.Client.EmuHawk
//analyze keys
foreach (var ke in keyEvents)
- HandleButton(ke.Key.ToString(), ke.Pressed, InputFocus.Keyboard);
+ HandleButton(ke.Key.ToString(), ke.Pressed, ClientInputFocus.Keyboard);
lock (_axisValues)
{
@@ -373,21 +364,21 @@ namespace BizHawk.Client.EmuHawk
_axisValues["WMouse Y"] = mousePos.Y;
var mouseBtns = Control.MouseButtons;
- HandleButton("WMouse L", (mouseBtns & MouseButtons.Left) != 0, InputFocus.Mouse);
- HandleButton("WMouse C", (mouseBtns & MouseButtons.Middle) != 0, InputFocus.Mouse);
- HandleButton("WMouse R", (mouseBtns & MouseButtons.Right) != 0, InputFocus.Mouse);
- HandleButton("WMouse 1", (mouseBtns & MouseButtons.XButton1) != 0, InputFocus.Mouse);
- HandleButton("WMouse 2", (mouseBtns & MouseButtons.XButton2) != 0, InputFocus.Mouse);
+ HandleButton("WMouse L", (mouseBtns & MouseButtons.Left) != 0, ClientInputFocus.Mouse);
+ HandleButton("WMouse C", (mouseBtns & MouseButtons.Middle) != 0, ClientInputFocus.Mouse);
+ HandleButton("WMouse R", (mouseBtns & MouseButtons.Right) != 0, ClientInputFocus.Mouse);
+ HandleButton("WMouse 1", (mouseBtns & MouseButtons.XButton1) != 0, ClientInputFocus.Mouse);
+ HandleButton("WMouse 2", (mouseBtns & MouseButtons.XButton2) != 0, ClientInputFocus.Mouse);
}
else
{
#if false // don't do this: for now, it will interfere with the virtualpad. don't do something similar for the mouse position either
// unpress all buttons
- HandleButton("WMouse L", false, InputFocus.Mouse);
- HandleButton("WMouse C", false, InputFocus.Mouse);
- HandleButton("WMouse R", false, InputFocus.Mouse);
- HandleButton("WMouse 1", false, InputFocus.Mouse);
- HandleButton("WMouse 2", false, InputFocus.Mouse);
+ HandleButton("WMouse L", false, ClientInputFocus.Mouse);
+ HandleButton("WMouse C", false, ClientInputFocus.Mouse);
+ HandleButton("WMouse R", false, ClientInputFocus.Mouse);
+ HandleButton("WMouse 1", false, ClientInputFocus.Mouse);
+ HandleButton("WMouse 2", false, ClientInputFocus.Mouse);
#endif
}
}
@@ -419,7 +410,7 @@ namespace BizHawk.Client.EmuHawk
private static bool ShouldSwallow(AllowInput allowInput, InputEvent inputEvent)
{
- return allowInput == AllowInput.None || (allowInput == AllowInput.OnlyController && inputEvent.Source != InputFocus.Pad);
+ return allowInput == AllowInput.None || (allowInput == AllowInput.OnlyController && inputEvent.Source != ClientInputFocus.Pad);
}
public void StartListeningForAxisEvents()
diff --git a/src/BizHawk.Client.EmuHawk/Input/Keyboard.cs b/src/BizHawk.Client.EmuHawk/Input/Keyboard.cs
index dbd3aed819..1b75b4aeaf 100644
--- a/src/BizHawk.Client.EmuHawk/Input/Keyboard.cs
+++ b/src/BizHawk.Client.EmuHawk/Input/Keyboard.cs
@@ -1,6 +1,8 @@
using System;
using System.Collections.Generic;
+using BizHawk.Client.Common;
+
using SlimDX;
using SlimDX.DirectInput;
diff --git a/src/BizHawk.Client.EmuHawk/Input/OTK_Keyboard.cs b/src/BizHawk.Client.EmuHawk/Input/OTK_Keyboard.cs
index 4353860c3e..98375a427f 100644
--- a/src/BizHawk.Client.EmuHawk/Input/OTK_Keyboard.cs
+++ b/src/BizHawk.Client.EmuHawk/Input/OTK_Keyboard.cs
@@ -1,4 +1,7 @@
using System.Collections.Generic;
+
+using BizHawk.Client.Common;
+
using OpenTK.Input;
namespace BizHawk.Client.EmuHawk
@@ -102,10 +105,4 @@ namespace BizHawk.Client.EmuHawk
}
}
}
-
- public struct KeyEvent
- {
- public Key Key;
- public bool Pressed;
- }
}
diff --git a/src/BizHawk.Client.EmuHawk/MainForm.cs b/src/BizHawk.Client.EmuHawk/MainForm.cs
index 12d1130da5..b26b2119ff 100644
--- a/src/BizHawk.Client.EmuHawk/MainForm.cs
+++ b/src/BizHawk.Client.EmuHawk/MainForm.cs
@@ -891,12 +891,12 @@ namespace BizHawk.Client.EmuHawk
protected override void OnActivated(EventArgs e)
{
base.OnActivated(e);
- Input.Instance.ControlInputFocus(this, Input.InputFocus.Mouse, true);
+ Input.Instance.ControlInputFocus(this, ClientInputFocus.Mouse, true);
}
protected override void OnDeactivate(EventArgs e)
{
- Input.Instance.ControlInputFocus(this, Input.InputFocus.Mouse, false);
+ Input.Instance.ControlInputFocus(this, ClientInputFocus.Mouse, false);
base.OnDeactivate(e);
}
diff --git a/src/BizHawk.Client.EmuHawk/config/ControllerConfig.cs b/src/BizHawk.Client.EmuHawk/config/ControllerConfig.cs
index 4c08eec0f0..4cd2798f23 100644
--- a/src/BizHawk.Client.EmuHawk/config/ControllerConfig.cs
+++ b/src/BizHawk.Client.EmuHawk/config/ControllerConfig.cs
@@ -54,13 +54,13 @@ namespace BizHawk.Client.EmuHawk
protected override void OnActivated(EventArgs e)
{
base.OnActivated(e);
- Input.Instance.ControlInputFocus(this, Input.InputFocus.Mouse, true);
+ Input.Instance.ControlInputFocus(this, ClientInputFocus.Mouse, true);
}
protected override void OnDeactivate(EventArgs e)
{
base.OnDeactivate(e);
- Input.Instance.ControlInputFocus(this, Input.InputFocus.Mouse, false);
+ Input.Instance.ControlInputFocus(this, ClientInputFocus.Mouse, false);
}
private void ControllerConfig_Load(object sender, EventArgs e)
diff --git a/src/BizHawk.Client.EmuHawk/config/HotkeyConfig.cs b/src/BizHawk.Client.EmuHawk/config/HotkeyConfig.cs
index 15f402f15f..3fd2078788 100644
--- a/src/BizHawk.Client.EmuHawk/config/HotkeyConfig.cs
+++ b/src/BizHawk.Client.EmuHawk/config/HotkeyConfig.cs
@@ -23,13 +23,13 @@ namespace BizHawk.Client.EmuHawk
protected override void OnActivated(EventArgs e)
{
base.OnActivated(e);
- Input.Instance.ControlInputFocus(this, Input.InputFocus.Mouse, true);
+ Input.Instance.ControlInputFocus(this, ClientInputFocus.Mouse, true);
}
protected override void OnDeactivate(EventArgs e)
{
base.OnDeactivate(e);
- Input.Instance.ControlInputFocus(this, Input.InputFocus.Mouse, false);
+ Input.Instance.ControlInputFocus(this, ClientInputFocus.Mouse, false);
}
private void HotkeyConfig_Load(object sender, EventArgs e)