mirror of
https://github.com/Ryujinx/Opentk.git
synced 2025-02-24 04:16:50 +00:00
[Examples] Test key events for consistency
This commit is contained in:
parent
8b7d5bc7e4
commit
b53d4a6554
|
@ -26,16 +26,26 @@ namespace Examples.Tests
|
||||||
bool mouse_in_window = false;
|
bool mouse_in_window = false;
|
||||||
bool viewport_changed = true;
|
bool viewport_changed = true;
|
||||||
|
|
||||||
// legacy NativeWindow.MouseDevice events
|
// legacy GameWindow.Mouse.* events
|
||||||
Vector4 mousedevice_pos;
|
Vector4 mousedevice_pos;
|
||||||
int mousedevice_buttons;
|
int mousedevice_buttons;
|
||||||
MouseState mousedevice_state;
|
MouseState mousedevice_state;
|
||||||
|
|
||||||
// new NativeWindow.Mouse* events
|
// new GameWindow.Mouse* events
|
||||||
Vector4 mouse_pos;
|
Vector4 mouse_pos;
|
||||||
int mouse_buttons;
|
int mouse_buttons;
|
||||||
MouseState mouse_state;
|
MouseState mouse_state;
|
||||||
|
|
||||||
|
// legacy GameWindow.Keyboard.Key* events
|
||||||
|
Dictionary<Key, int> legacy_keyboard_keys = new Dictionary<Key, int>();
|
||||||
|
KeyboardState legacy_keyboard_state;
|
||||||
|
KeyModifiers legacy_keyboard_modifiers;
|
||||||
|
|
||||||
|
//new GameWindow.Key* events
|
||||||
|
Dictionary<Key, int> keyboard_keys = new Dictionary<Key, int>();
|
||||||
|
KeyboardState keyboard_state;
|
||||||
|
KeyModifiers keyboard_modifiers;
|
||||||
|
|
||||||
// time drift
|
// time drift
|
||||||
Stopwatch watch = new Stopwatch();
|
Stopwatch watch = new Stopwatch();
|
||||||
double update_time, render_time;
|
double update_time, render_time;
|
||||||
|
@ -52,8 +62,6 @@ namespace Examples.Tests
|
||||||
double variable_refresh_timestep_pos = -1;
|
double variable_refresh_timestep_pos = -1;
|
||||||
double fixed_update_timestep_pos = -1;
|
double fixed_update_timestep_pos = -1;
|
||||||
|
|
||||||
KeyModifiers modifiers;
|
|
||||||
|
|
||||||
public GameWindowStates()
|
public GameWindowStates()
|
||||||
: base(800, 600, GraphicsMode.Default)
|
: base(800, 600, GraphicsMode.Default)
|
||||||
{
|
{
|
||||||
|
@ -62,6 +70,8 @@ namespace Examples.Tests
|
||||||
KeyDown += KeyDownHandler;
|
KeyDown += KeyDownHandler;
|
||||||
KeyUp += KeyUpHandler;
|
KeyUp += KeyUpHandler;
|
||||||
KeyPress += KeyPressHandler;
|
KeyPress += KeyPressHandler;
|
||||||
|
Keyboard.KeyDown += KeyboardDeviceDownHandler;
|
||||||
|
Keyboard.KeyUp += KeyboardDeviceUpHandler;
|
||||||
|
|
||||||
MouseEnter += delegate { mouse_in_window = true; };
|
MouseEnter += delegate { mouse_in_window = true; };
|
||||||
MouseLeave += delegate { mouse_in_window = false; };
|
MouseLeave += delegate { mouse_in_window = false; };
|
||||||
|
@ -77,7 +87,9 @@ namespace Examples.Tests
|
||||||
MouseUp += MouseButtonHandler;
|
MouseUp += MouseButtonHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void KeyPressHandler(object sender, KeyPressEventArgs e)
|
#region Keyboard Events
|
||||||
|
|
||||||
|
void KeyPressHandler(object sender, KeyPressEventArgs e)
|
||||||
{
|
{
|
||||||
if (TypedText.Length > 32)
|
if (TypedText.Length > 32)
|
||||||
TypedText.Remove(0, 1);
|
TypedText.Remove(0, 1);
|
||||||
|
@ -125,14 +137,43 @@ namespace Examples.Tests
|
||||||
case Key.Comma: TargetRenderFrequency--; break;
|
case Key.Comma: TargetRenderFrequency--; break;
|
||||||
case Key.Period: TargetRenderFrequency++; break;
|
case Key.Period: TargetRenderFrequency++; break;
|
||||||
}
|
}
|
||||||
modifiers = e.Modifiers;
|
|
||||||
|
if (!keyboard_keys.ContainsKey(e.Key))
|
||||||
|
{
|
||||||
|
keyboard_keys.Add(e.Key, 0);
|
||||||
|
}
|
||||||
|
keyboard_keys[e.Key] = e.IsRepeat ? 1 : 0;
|
||||||
|
keyboard_modifiers = e.Modifiers;
|
||||||
|
keyboard_state = e.Keyboard;
|
||||||
}
|
}
|
||||||
|
|
||||||
void KeyUpHandler(object sender, KeyboardKeyEventArgs e)
|
void KeyUpHandler(object sender, KeyboardKeyEventArgs e)
|
||||||
{
|
{
|
||||||
modifiers = e.Modifiers;
|
keyboard_keys.Remove(e.Key);
|
||||||
|
keyboard_modifiers = e.Modifiers;
|
||||||
|
keyboard_state = e.Keyboard;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void KeyboardDeviceDownHandler(object sender, KeyboardKeyEventArgs e)
|
||||||
|
{
|
||||||
|
if (!legacy_keyboard_keys.ContainsKey(e.Key))
|
||||||
|
{
|
||||||
|
legacy_keyboard_keys.Add(e.Key, 0);
|
||||||
|
}
|
||||||
|
legacy_keyboard_keys[e.Key] = e.IsRepeat ? 1 : 0;
|
||||||
|
legacy_keyboard_modifiers = e.Modifiers;
|
||||||
|
legacy_keyboard_state = e.Keyboard;
|
||||||
|
}
|
||||||
|
|
||||||
|
void KeyboardDeviceUpHandler(object sender, KeyboardKeyEventArgs e)
|
||||||
|
{
|
||||||
|
legacy_keyboard_keys.Remove(e.Key);
|
||||||
|
legacy_keyboard_modifiers = e.Modifiers;
|
||||||
|
legacy_keyboard_state = e.Keyboard;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region MouseDevice events
|
#region MouseDevice events
|
||||||
|
|
||||||
void MouseDeviceMoveHandler(object sender, MouseMoveEventArgs e)
|
void MouseDeviceMoveHandler(object sender, MouseMoveEventArgs e)
|
||||||
|
@ -209,6 +250,8 @@ namespace Examples.Tests
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Private Members
|
||||||
|
|
||||||
static int Clamp(int val, int min, int max)
|
static int Clamp(int val, int min, int max)
|
||||||
{
|
{
|
||||||
return val > max ? max : val < min ? min : val;
|
return val > max ? max : val < min ? min : val;
|
||||||
|
@ -228,7 +271,7 @@ namespace Examples.Tests
|
||||||
int DrawKeyboards(Graphics gfx, int line)
|
int DrawKeyboards(Graphics gfx, int line)
|
||||||
{
|
{
|
||||||
line++;
|
line++;
|
||||||
DrawString(gfx, String.Format("Keyboard ({0}):", modifiers), line++);
|
DrawString(gfx, "Keyboard:", line++);
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
var state = OpenTK.Input.Keyboard.GetState(i);
|
var state = OpenTK.Input.Keyboard.GetState(i);
|
||||||
|
@ -281,6 +324,59 @@ namespace Examples.Tests
|
||||||
return line;
|
return line;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int DrawKeyboardDevice(Graphics gfx, int line)
|
||||||
|
{
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
sb.Append("KeyboardDevice: ");
|
||||||
|
for (Key key = 0; key < Key.LastKey; key++)
|
||||||
|
{
|
||||||
|
if (Keyboard[key])
|
||||||
|
{
|
||||||
|
sb.Append(key);
|
||||||
|
sb.Append(" ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
DrawString(gfx, sb.ToString(), line++);
|
||||||
|
|
||||||
|
sb.Remove(0, sb.Length);
|
||||||
|
sb.Append("KeyboardDevice events: [");
|
||||||
|
sb.Append(legacy_keyboard_modifiers);
|
||||||
|
sb.Append("] ");
|
||||||
|
foreach (var pair in legacy_keyboard_keys)
|
||||||
|
{
|
||||||
|
sb.Append(pair.Key);
|
||||||
|
sb.Append(":");
|
||||||
|
sb.Append(pair.Value);
|
||||||
|
sb.Append(" ");
|
||||||
|
}
|
||||||
|
DrawString(gfx, sb.ToString(), line++);
|
||||||
|
|
||||||
|
sb.Remove(0, sb.Length);
|
||||||
|
sb.Append("KeyboardDevice state: ");
|
||||||
|
sb.Append(legacy_keyboard_state);
|
||||||
|
DrawString(gfx, sb.ToString(), line++);
|
||||||
|
|
||||||
|
sb.Remove(0, sb.Length);
|
||||||
|
sb.Append("Keyboard events: [");
|
||||||
|
sb.Append(keyboard_modifiers);
|
||||||
|
sb.Append("] ");
|
||||||
|
foreach (var pair in keyboard_keys)
|
||||||
|
{
|
||||||
|
sb.Append(pair.Key);
|
||||||
|
sb.Append(":");
|
||||||
|
sb.Append(pair.Value);
|
||||||
|
sb.Append(" ");
|
||||||
|
}
|
||||||
|
DrawString(gfx, sb.ToString(), line++);
|
||||||
|
|
||||||
|
sb.Remove(0, sb.Length);
|
||||||
|
sb.Append("Keyboard state: ");
|
||||||
|
sb.Append(keyboard_state);
|
||||||
|
DrawString(gfx, sb.ToString(), line++);
|
||||||
|
|
||||||
|
return line;
|
||||||
|
}
|
||||||
|
|
||||||
int DrawMouseDevice(Graphics gfx, int line)
|
int DrawMouseDevice(Graphics gfx, int line)
|
||||||
{
|
{
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
|
@ -369,6 +465,8 @@ namespace Examples.Tests
|
||||||
return line;
|
return line;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
protected override void OnUpdateFrame(FrameEventArgs e)
|
protected override void OnUpdateFrame(FrameEventArgs e)
|
||||||
{
|
{
|
||||||
double clock_time = watch.Elapsed.TotalSeconds;
|
double clock_time = watch.Elapsed.TotalSeconds;
|
||||||
|
@ -401,6 +499,7 @@ namespace Examples.Tests
|
||||||
CursorVisible ? "visible" : "hidden",
|
CursorVisible ? "visible" : "hidden",
|
||||||
Focused ? "Focused" : "Not focused"), line++);
|
Focused ? "Focused" : "Not focused"), line++);
|
||||||
|
|
||||||
|
line = DrawKeyboardDevice(gfx, line);
|
||||||
line = DrawMouseDevice(gfx, line);
|
line = DrawMouseDevice(gfx, line);
|
||||||
|
|
||||||
// Timing information
|
// Timing information
|
||||||
|
|
Loading…
Reference in a new issue