Numpad 2,4,6,8 != Arrow keys!
This commit is contained in:
parent
f5014946db
commit
38422fda10
|
@ -37,6 +37,14 @@ namespace BizHawk.MultiClient
|
|||
if (control.StartsWith("J2 ")) return GetGamePad(1, control.Substring(3));
|
||||
if (control.StartsWith("J3 ")) return GetGamePad(2, control.Substring(3));
|
||||
if (control.StartsWith("J4 ")) return GetGamePad(3, control.Substring(3));
|
||||
//Key z = Key.n
|
||||
Key z = Key.NumberPad4;
|
||||
Key y = Key.LeftArrow;
|
||||
if (z == Key.LeftArrow || y == Key.LeftArrow)
|
||||
{
|
||||
int x = 0;
|
||||
x++;
|
||||
}
|
||||
Key k = (Key) Enum.Parse(typeof(Key), control, true);
|
||||
return KeyInput.IsPressed(k);
|
||||
}
|
||||
|
|
|
@ -4,80 +4,72 @@ using SlimDX.DirectInput;
|
|||
|
||||
namespace BizHawk.MultiClient
|
||||
{
|
||||
public static class KeyInput
|
||||
{
|
||||
private static DirectInput dinput;
|
||||
private static Keyboard keyboard;
|
||||
private static KeyboardState state = new KeyboardState();
|
||||
private static List<Key> unpressedKeys = new List<Key>();
|
||||
|
||||
public static void Initialize()
|
||||
{
|
||||
if (dinput == null)
|
||||
dinput = new DirectInput();
|
||||
public static class KeyInput
|
||||
{
|
||||
private static DirectInput dinput;
|
||||
private static Keyboard keyboard;
|
||||
private static KeyboardState state = new KeyboardState();
|
||||
private static List<Key> unpressedKeys = new List<Key>();
|
||||
|
||||
if (keyboard == null || keyboard.Disposed)
|
||||
keyboard = new Keyboard(dinput);
|
||||
if (Global.Config.AcceptBackgroundInput)
|
||||
keyboard.SetCooperativeLevel(Global.MainForm.Handle, CooperativeLevel.Background | CooperativeLevel.Nonexclusive);
|
||||
else
|
||||
keyboard.SetCooperativeLevel(Global.MainForm.Handle, CooperativeLevel.Foreground | CooperativeLevel.Nonexclusive);
|
||||
}
|
||||
public static void Initialize()
|
||||
{
|
||||
if (dinput == null)
|
||||
dinput = new DirectInput();
|
||||
|
||||
public static void Update()
|
||||
{
|
||||
if (keyboard.Acquire().IsFailure)
|
||||
return;
|
||||
if (keyboard.Poll().IsFailure)
|
||||
return;
|
||||
if (keyboard == null || keyboard.Disposed)
|
||||
keyboard = new Keyboard(dinput);
|
||||
if (Global.Config.AcceptBackgroundInput)
|
||||
keyboard.SetCooperativeLevel(Global.MainForm.Handle, CooperativeLevel.Background | CooperativeLevel.Nonexclusive);
|
||||
else
|
||||
keyboard.SetCooperativeLevel(Global.MainForm.Handle, CooperativeLevel.Foreground | CooperativeLevel.Nonexclusive);
|
||||
}
|
||||
|
||||
state = keyboard.GetCurrentState();
|
||||
if (Result.Last.IsFailure)
|
||||
return;
|
||||
public static void Update()
|
||||
{
|
||||
if (keyboard.Acquire().IsFailure)
|
||||
return;
|
||||
if (keyboard.Poll().IsFailure)
|
||||
return;
|
||||
|
||||
unpressedKeys.RemoveAll(key => state.IsReleased(key));
|
||||
}
|
||||
state = keyboard.GetCurrentState();
|
||||
if (Result.Last.IsFailure)
|
||||
return;
|
||||
|
||||
public static KeyboardState State { get { return state; } }
|
||||
unpressedKeys.RemoveAll(key => state.IsReleased(key));
|
||||
}
|
||||
|
||||
public static void Unpress(Key key)
|
||||
{
|
||||
if (unpressedKeys.Contains(key))
|
||||
return;
|
||||
unpressedKeys.Add(key);
|
||||
}
|
||||
public static KeyboardState State { get { return state; } }
|
||||
|
||||
public static bool IsPressed(Key key)
|
||||
{
|
||||
if (unpressedKeys.Contains(key))
|
||||
return false;
|
||||
if (state.IsPressed(key))
|
||||
return true;
|
||||
if (key == Key.UpArrow && state.IsPressed(Key.NumberPad8))
|
||||
return true;
|
||||
if (key == Key.DownArrow && state.IsPressed(Key.NumberPad2))
|
||||
return true;
|
||||
if (key == Key.LeftArrow && state.IsPressed(Key.NumberPad4))
|
||||
return true;
|
||||
if (key == Key.RightArrow && state.IsPressed(Key.NumberPad6))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
public static void Unpress(Key key)
|
||||
{
|
||||
if (unpressedKeys.Contains(key))
|
||||
return;
|
||||
unpressedKeys.Add(key);
|
||||
}
|
||||
|
||||
public static Key? GetPressedKey()
|
||||
{
|
||||
// TODO uhh this will return the same key over and over though.
|
||||
if (state.PressedKeys.Count == 0)
|
||||
return null;
|
||||
if (state.PressedKeys[0] == Key.NumberPad8)
|
||||
return Key.UpArrow;
|
||||
if (state.PressedKeys[0] == Key.NumberPad2)
|
||||
return Key.DownArrow;
|
||||
if (state.PressedKeys[0] == Key.NumberPad4)
|
||||
return Key.LeftArrow;
|
||||
if (state.PressedKeys[0] == Key.NumberPad6)
|
||||
return Key.RightArrow;
|
||||
return state.PressedKeys[0];
|
||||
}
|
||||
}
|
||||
public static bool IsPressed(Key key)
|
||||
{
|
||||
if (unpressedKeys.Contains(key))
|
||||
return false;
|
||||
if (state.IsPressed(key))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public static Key? GetPressedKey()
|
||||
{
|
||||
// TODO uhh this will return the same key over and over though.
|
||||
if (state.PressedKeys.Count == 0)
|
||||
return null;
|
||||
if (state.PressedKeys[0] == Key.NumberPad8)
|
||||
return Key.UpArrow;
|
||||
if (state.PressedKeys[0] == Key.NumberPad2)
|
||||
return Key.DownArrow;
|
||||
if (state.PressedKeys[0] == Key.NumberPad4)
|
||||
return Key.LeftArrow;
|
||||
if (state.PressedKeys[0] == Key.NumberPad6)
|
||||
return Key.RightArrow;
|
||||
return state.PressedKeys[0];
|
||||
}
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue