Move modifier and scan code tables to an ext class.
This commit is contained in:
@@ -29,7 +29,7 @@ namespace Dashboard.Events
|
|||||||
|
|
||||||
public enum KeyCode
|
public enum KeyCode
|
||||||
{
|
{
|
||||||
// TODO:
|
// TODO: Keycode table. Keycodes are subject to change upstream. SeeAlso: Extensions.cs@KeyCode ToDashboard(this Key key)
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum ScanCode
|
public enum ScanCode
|
||||||
@@ -160,10 +160,18 @@ namespace Dashboard.Events
|
|||||||
International4 = 0x79,
|
International4 = 0x79,
|
||||||
International5 = 0x7B,
|
International5 = 0x7B,
|
||||||
International6 = 0x5C,
|
International6 = 0x5C,
|
||||||
|
International7,
|
||||||
|
International8,
|
||||||
|
International9,
|
||||||
Lang1 = 0x72,
|
Lang1 = 0x72,
|
||||||
Lang2 = 0x71,
|
Lang2 = 0x71,
|
||||||
Lang3 = 0x78,
|
Lang3 = 0x78,
|
||||||
Lang4 = 0x77,
|
Lang4 = 0x77,
|
||||||
|
Lang5,
|
||||||
|
Lang6,
|
||||||
|
Lang7,
|
||||||
|
Lang8,
|
||||||
|
Lang9,
|
||||||
LCtrl = 0x1D,
|
LCtrl = 0x1D,
|
||||||
LShift = 0x2A,
|
LShift = 0x2A,
|
||||||
LWin = 0xE05B,
|
LWin = 0xE05B,
|
||||||
@@ -189,6 +197,9 @@ namespace Dashboard.Events
|
|||||||
Halt = 0xE068,
|
Halt = 0xE068,
|
||||||
Refresh = 0xE67,
|
Refresh = 0xE67,
|
||||||
Bookmarks = 0xE066,
|
Bookmarks = 0xE066,
|
||||||
|
|
||||||
|
NonUsSlashBar = 0xFF01,
|
||||||
|
Mute,
|
||||||
}
|
}
|
||||||
|
|
||||||
public class KeyboardButtonEventArgs(KeyCode keyCode, ScanCode scanCode, ModifierKeys modifierKeys, bool up)
|
public class KeyboardButtonEventArgs(KeyCode keyCode, ScanCode scanCode, ModifierKeys modifierKeys, bool up)
|
||||||
|
|||||||
@@ -0,0 +1,204 @@
|
|||||||
|
using Dashboard.Events;
|
||||||
|
using OpenTK.Platform;
|
||||||
|
|
||||||
|
namespace Dashboard.OpenTK.PAL2
|
||||||
|
{
|
||||||
|
public static class Extensions
|
||||||
|
{
|
||||||
|
public static ModifierKeys ToDashboard(this KeyModifier modifier)
|
||||||
|
{
|
||||||
|
ModifierKeys keys = 0;
|
||||||
|
|
||||||
|
keys |= modifier.HasFlag(KeyModifier.NumLock) ? ModifierKeys.NumLock : 0;
|
||||||
|
keys |= modifier.HasFlag(KeyModifier.CapsLock) ? ModifierKeys.CapsLock : 0;
|
||||||
|
keys |= modifier.HasFlag(KeyModifier.ScrollLock) ? ModifierKeys.ScrollLock : 0;
|
||||||
|
|
||||||
|
keys |= modifier.HasFlag(KeyModifier.LeftShift) ? ModifierKeys.LeftShift : 0;
|
||||||
|
keys |= modifier.HasFlag(KeyModifier.LeftControl) ? ModifierKeys.LeftControl : 0;
|
||||||
|
keys |= modifier.HasFlag(KeyModifier.LeftAlt) ? ModifierKeys.LeftAlt : 0;
|
||||||
|
keys |= modifier.HasFlag(KeyModifier.LeftGUI) ? ModifierKeys.LeftMeta : 0;
|
||||||
|
|
||||||
|
keys |= modifier.HasFlag(KeyModifier.RightShift) ? ModifierKeys.RightShift : 0;
|
||||||
|
keys |= modifier.HasFlag(KeyModifier.RightControl) ? ModifierKeys.RightControl : 0;
|
||||||
|
keys |= modifier.HasFlag(KeyModifier.RightAlt) ? ModifierKeys.RightAlt : 0;
|
||||||
|
keys |= modifier.HasFlag(KeyModifier.RightGUI) ? ModifierKeys.RightMeta : 0;
|
||||||
|
|
||||||
|
keys |= modifier.HasFlag(KeyModifier.Shift) ? ModifierKeys.Shift : 0;
|
||||||
|
keys |= modifier.HasFlag(KeyModifier.Control) ? ModifierKeys.Control : 0;
|
||||||
|
keys |= modifier.HasFlag(KeyModifier.Alt) ? ModifierKeys.Alt : 0;
|
||||||
|
keys |= modifier.HasFlag(KeyModifier.GUI) ? ModifierKeys.Meta : 0;
|
||||||
|
|
||||||
|
// C# makes this cast as annoying as possible.
|
||||||
|
keys |= (ModifierKeys)((((int)keys >> (int)ModifierKeys.RightBitPos) & 0xF) |
|
||||||
|
(((int)keys >> (int)ModifierKeys.LeftBitPos) & 0xF));
|
||||||
|
|
||||||
|
return keys;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static KeyCode ToDashboard(this Key key) => key switch
|
||||||
|
{
|
||||||
|
// TODO: Keycode table. Keycodes are subject to change upstream.
|
||||||
|
_ => (KeyCode)0,
|
||||||
|
};
|
||||||
|
|
||||||
|
public static ScanCode ToDashboard(this Scancode scanCode) => scanCode switch
|
||||||
|
{
|
||||||
|
// TODO: Revise this array.
|
||||||
|
Scancode.Unknown => ScanCode.Error,
|
||||||
|
|
||||||
|
Scancode.A => ScanCode.A,
|
||||||
|
Scancode.B => ScanCode.B,
|
||||||
|
Scancode.C => ScanCode.C,
|
||||||
|
Scancode.D => ScanCode.D,
|
||||||
|
Scancode.E => ScanCode.E,
|
||||||
|
Scancode.F => ScanCode.F,
|
||||||
|
Scancode.G => ScanCode.G,
|
||||||
|
Scancode.H => ScanCode.H,
|
||||||
|
Scancode.I => ScanCode.I,
|
||||||
|
Scancode.J => ScanCode.J,
|
||||||
|
Scancode.K => ScanCode.K,
|
||||||
|
Scancode.L => ScanCode.L,
|
||||||
|
Scancode.M => ScanCode.M,
|
||||||
|
Scancode.N => ScanCode.N,
|
||||||
|
Scancode.O => ScanCode.O,
|
||||||
|
Scancode.P => ScanCode.P,
|
||||||
|
Scancode.Q => ScanCode.Q,
|
||||||
|
Scancode.R => ScanCode.R,
|
||||||
|
Scancode.S => ScanCode.S,
|
||||||
|
Scancode.T => ScanCode.T,
|
||||||
|
Scancode.U => ScanCode.U,
|
||||||
|
Scancode.V => ScanCode.V,
|
||||||
|
Scancode.W => ScanCode.W,
|
||||||
|
Scancode.X => ScanCode.X,
|
||||||
|
Scancode.Y => ScanCode.Y,
|
||||||
|
Scancode.Z => ScanCode.Z,
|
||||||
|
|
||||||
|
Scancode.D0 => ScanCode.D0,
|
||||||
|
Scancode.D1 => ScanCode.D1,
|
||||||
|
Scancode.D2 => ScanCode.D2,
|
||||||
|
Scancode.D3 => ScanCode.D3,
|
||||||
|
Scancode.D4 => ScanCode.D4,
|
||||||
|
Scancode.D5 => ScanCode.D5,
|
||||||
|
Scancode.D6 => ScanCode.D6,
|
||||||
|
Scancode.D7 => ScanCode.D7,
|
||||||
|
Scancode.D8 => ScanCode.D8,
|
||||||
|
Scancode.D9 => ScanCode.D9,
|
||||||
|
|
||||||
|
Scancode.Return => ScanCode.Return,
|
||||||
|
Scancode.Escape => ScanCode.Esc,
|
||||||
|
Scancode.Backspace => ScanCode.Backspace,
|
||||||
|
Scancode.Tab => ScanCode.Tab,
|
||||||
|
Scancode.Spacebar => ScanCode.Space,
|
||||||
|
Scancode.Dash => ScanCode.Dash,
|
||||||
|
Scancode.Equals => ScanCode.Equals,
|
||||||
|
Scancode.LeftBrace => ScanCode.LBracket,
|
||||||
|
Scancode.RightBrace => ScanCode.RBracket,
|
||||||
|
Scancode.SemiColon => ScanCode.Semicolon,
|
||||||
|
Scancode.LeftApostrophe => ScanCode.Apostrophe,
|
||||||
|
Scancode.GraveAccent => ScanCode.Grave,
|
||||||
|
Scancode.Comma => ScanCode.Comma,
|
||||||
|
Scancode.Period => ScanCode.Period,
|
||||||
|
Scancode.CapsLock => ScanCode.CapsLock,
|
||||||
|
|
||||||
|
Scancode.F1 => ScanCode.F1,
|
||||||
|
Scancode.F2 => ScanCode.F2,
|
||||||
|
Scancode.F3 => ScanCode.F3,
|
||||||
|
Scancode.F4 => ScanCode.F4,
|
||||||
|
Scancode.F5 => ScanCode.F5,
|
||||||
|
Scancode.F6 => ScanCode.F6,
|
||||||
|
Scancode.F7 => ScanCode.F7,
|
||||||
|
Scancode.F8 => ScanCode.F8,
|
||||||
|
Scancode.F9 => ScanCode.F9,
|
||||||
|
Scancode.F10 => ScanCode.F10,
|
||||||
|
Scancode.F11 => ScanCode.F11,
|
||||||
|
Scancode.F12 => ScanCode.F12,
|
||||||
|
Scancode.F13 => ScanCode.F13,
|
||||||
|
Scancode.F14 => ScanCode.F14,
|
||||||
|
Scancode.F15 => ScanCode.F15,
|
||||||
|
Scancode.F16 => ScanCode.F16,
|
||||||
|
Scancode.F17 => ScanCode.F17,
|
||||||
|
Scancode.F18 => ScanCode.F18,
|
||||||
|
Scancode.F19 => ScanCode.F19,
|
||||||
|
Scancode.F20 => ScanCode.F20,
|
||||||
|
Scancode.F21 => ScanCode.F21,
|
||||||
|
Scancode.F22 => ScanCode.F22,
|
||||||
|
Scancode.F23 => ScanCode.F23,
|
||||||
|
Scancode.F24 => ScanCode.F24,
|
||||||
|
|
||||||
|
Scancode.PrintScreen => ScanCode.PrintScr,
|
||||||
|
Scancode.ScrollLock => ScanCode.ScrollLock,
|
||||||
|
Scancode.Pause => ScanCode.Pause,
|
||||||
|
Scancode.Insert => ScanCode.Insert,
|
||||||
|
Scancode.Home => ScanCode.Home,
|
||||||
|
Scancode.PageUp => ScanCode.PageUp,
|
||||||
|
Scancode.Delete => ScanCode.Delete,
|
||||||
|
Scancode.End => ScanCode.End,
|
||||||
|
Scancode.PageDown => ScanCode.PageDown,
|
||||||
|
Scancode.RightArrow => ScanCode.RightArrow,
|
||||||
|
Scancode.LeftArrow => ScanCode.LeftArrow,
|
||||||
|
Scancode.DownArrow => ScanCode.DownArrow,
|
||||||
|
Scancode.UpArrow => ScanCode.UpArrow,
|
||||||
|
|
||||||
|
Scancode.NumLock => ScanCode.NumLock,
|
||||||
|
Scancode.KeypadEnter => ScanCode.NumEnter,
|
||||||
|
Scancode.Keypad1 => ScanCode.Num1,
|
||||||
|
Scancode.Keypad2 => ScanCode.Num2,
|
||||||
|
Scancode.Keypad3 => ScanCode.Num3,
|
||||||
|
Scancode.Keypad4 => ScanCode.Num4,
|
||||||
|
Scancode.Keypad5 => ScanCode.Num5,
|
||||||
|
Scancode.Keypad6 => ScanCode.Num6,
|
||||||
|
Scancode.Keypad7 => ScanCode.Num7,
|
||||||
|
Scancode.Keypad8 => ScanCode.Num8,
|
||||||
|
Scancode.Keypad9 => ScanCode.Num9,
|
||||||
|
Scancode.Keypad0 => ScanCode.Num0,
|
||||||
|
Scancode.KeypadForwardSlash => ScanCode.NumDiv,
|
||||||
|
Scancode.KeypadPeriod => ScanCode.NumDecimal,
|
||||||
|
Scancode.KeypadStar => ScanCode.NumMul,
|
||||||
|
Scancode.KeypadDash => ScanCode.NumSub,
|
||||||
|
Scancode.KeypadPlus => ScanCode.NumAdd,
|
||||||
|
Scancode.KeypadEquals => ScanCode.NumEquals,
|
||||||
|
Scancode.KeypadComma => ScanCode.NumComma,
|
||||||
|
Scancode.Application => ScanCode.Application,
|
||||||
|
|
||||||
|
Scancode.International1 => ScanCode.International1,
|
||||||
|
Scancode.International2 => ScanCode.International2,
|
||||||
|
Scancode.International3 => ScanCode.International3,
|
||||||
|
Scancode.International4 => ScanCode.International4,
|
||||||
|
Scancode.International5 => ScanCode.International5,
|
||||||
|
Scancode.International6 => ScanCode.International6,
|
||||||
|
|
||||||
|
Scancode.LANG1 => ScanCode.Lang1,
|
||||||
|
Scancode.LANG2 => ScanCode.Lang2,
|
||||||
|
Scancode.LANG3 => ScanCode.Lang3,
|
||||||
|
Scancode.LANG4 => ScanCode.Lang4,
|
||||||
|
Scancode.LANG5 => ScanCode.Lang5,
|
||||||
|
|
||||||
|
Scancode.LeftControl => ScanCode.LCtrl,
|
||||||
|
Scancode.LeftShift => ScanCode.LShift,
|
||||||
|
Scancode.LeftAlt => ScanCode.LAlt,
|
||||||
|
Scancode.LeftGUI => ScanCode.LWin,
|
||||||
|
|
||||||
|
Scancode.RightControl => ScanCode.RCtrl,
|
||||||
|
Scancode.RightShift => ScanCode.RShift,
|
||||||
|
Scancode.RightAlt => ScanCode.RAlt,
|
||||||
|
Scancode.RightGUI => ScanCode.RWin,
|
||||||
|
|
||||||
|
Scancode.SystemPowerDown => ScanCode.SystemPowerDown,
|
||||||
|
Scancode.SystemSleep => ScanCode.SystemSleep,
|
||||||
|
Scancode.SystemWakeUp => ScanCode.SystemWakeUp,
|
||||||
|
|
||||||
|
Scancode.ScanNextTrack => ScanCode.NextTrack,
|
||||||
|
Scancode.ScanPreviousTrack => ScanCode.PrevTrack,
|
||||||
|
Scancode.Stop => ScanCode.Stop,
|
||||||
|
Scancode.PlayPause => ScanCode.PlayPause,
|
||||||
|
Scancode.Mute => ScanCode.Mute,
|
||||||
|
Scancode.VolumeIncrement => ScanCode.VolUp,
|
||||||
|
Scancode.VolumeDecrement => ScanCode.VolDown,
|
||||||
|
Scancode.NonUSSlashBar => ScanCode.NonUsSlashBar,
|
||||||
|
Scancode.Pipe => ScanCode.Backslash,
|
||||||
|
Scancode.QuestionMark => ScanCode.ForwardSlash,
|
||||||
|
_ => (ScanCode)0,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -17,7 +17,7 @@ namespace Dashboard.OpenTK.PAL2
|
|||||||
public override string DriverName => "Dashboard OpenTK PAL2.0 Driver";
|
public override string DriverName => "Dashboard OpenTK PAL2.0 Driver";
|
||||||
public override string DriverVendor => "Dashboard";
|
public override string DriverVendor => "Dashboard";
|
||||||
public override Version DriverVersion => new Version(0, 1);
|
public override Version DriverVersion => new Version(0, 1);
|
||||||
public GraphicsApiHints GraphicsApiHints { get; set; } = new OpenGLGraphicsApiHints();
|
public GraphicsApiHints GraphicsApiHints { get; init; } = new OpenGLGraphicsApiHints();
|
||||||
|
|
||||||
private readonly List<PhysicalWindow> _windows = new List<PhysicalWindow>();
|
private readonly List<PhysicalWindow> _windows = new List<PhysicalWindow>();
|
||||||
|
|
||||||
@@ -49,9 +49,8 @@ namespace Dashboard.OpenTK.PAL2
|
|||||||
TK.Window.PostUserEvent(new ApplicationQuitEventArgs());
|
TK.Window.PostUserEvent(new ApplicationQuitEventArgs());
|
||||||
});
|
});
|
||||||
|
|
||||||
Toolkit.Event.EventRaised += OnEventRaised;
|
TK.Event.EventRaised += OnEventRaised;
|
||||||
|
TK.Init(options ?? new ToolkitOptions());
|
||||||
Toolkit.Init(options ?? new ToolkitOptions());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void RemoveWindow(PhysicalWindow window)
|
internal void RemoveWindow(PhysicalWindow window)
|
||||||
@@ -115,40 +114,36 @@ namespace Dashboard.OpenTK.PAL2
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO: fix this.
|
// TODO: fix this.
|
||||||
switch (PlatformEventType.UserMessage)
|
switch (args)
|
||||||
{
|
{
|
||||||
case PlatformEventType.UserMessage:
|
case ApplicationQuitEventArgs:
|
||||||
if (args is ApplicationQuitEventArgs)
|
|
||||||
{
|
{
|
||||||
Quit = true;
|
Quit = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
// Mouse Events
|
// Mouse Events
|
||||||
case PlatformEventType.MouseDown:
|
case MouseButtonDownEventArgs mdown:
|
||||||
{
|
{
|
||||||
MouseButtonDownEventArgs down = (MouseButtonDownEventArgs)args;
|
MouseButtons buttons = (MouseButtons)(1 << (int)mdown.Button);
|
||||||
MouseButtons buttons = (MouseButtons)(1 << (int)down.Button);
|
ModifierKeys modifierKeys = mdown.Modifiers.ToDashboard();
|
||||||
ModifierKeys modifierKeys = GetModifierKeys(down.Modifiers);
|
|
||||||
// TODO: modifier keys
|
// TODO: modifier keys
|
||||||
MouseButtonEventArgs down2 = new MouseButtonEventArgs(info.MousePosition, buttons, modifierKeys, false);
|
MouseButtonEventArgs down2 = new MouseButtonEventArgs(info.MousePosition, buttons, modifierKeys, false);
|
||||||
info.Window.SendEvent(this, down2);
|
info.Window.SendEvent(this, down2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PlatformEventType.MouseUp:
|
case MouseButtonUpEventArgs mup:
|
||||||
{
|
{
|
||||||
MouseButtonUpEventArgs up = (MouseButtonUpEventArgs)args;
|
MouseButtons buttons = (MouseButtons)(1 << (int)mup.Button);
|
||||||
MouseButtons buttons = (MouseButtons)(1 << (int)up.Button);
|
ModifierKeys modifierKeys = mup.Modifiers.ToDashboard();
|
||||||
ModifierKeys modifierKeys = GetModifierKeys(up.Modifiers);
|
|
||||||
// TODO: modifier keys
|
// TODO: modifier keys
|
||||||
MouseButtonEventArgs up2 = new MouseButtonEventArgs(info.MousePosition, buttons, modifierKeys, true);
|
MouseButtonEventArgs up2 = new MouseButtonEventArgs(info.MousePosition, buttons, modifierKeys, true);
|
||||||
info.Window.SendEvent(this, up2);
|
info.Window.SendEvent(this, up2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PlatformEventType.MouseMove:
|
case OPENTK.MouseMoveEventArgs mmove:
|
||||||
{
|
{
|
||||||
OPENTK.MouseMoveEventArgs move = (OPENTK.MouseMoveEventArgs)args;
|
Vector2 position = new Vector2(mmove.ClientPosition.X, mmove.ClientPosition.Y);
|
||||||
Vector2 position = new Vector2(move.ClientPosition.X, move.ClientPosition.Y);
|
|
||||||
DB.MouseMoveEventArgs move2 = new DB.MouseMoveEventArgs(position, position - info.MousePosition);
|
DB.MouseMoveEventArgs move2 = new DB.MouseMoveEventArgs(position, position - info.MousePosition);
|
||||||
|
|
||||||
info.MousePosition = position;
|
info.MousePosition = position;
|
||||||
@@ -156,73 +151,64 @@ namespace Dashboard.OpenTK.PAL2
|
|||||||
info.Window.SendEvent(this, move2);
|
info.Window.SendEvent(this, move2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PlatformEventType.Scroll:
|
case ScrollEventArgs mscroll:
|
||||||
{
|
{
|
||||||
ScrollEventArgs scroll = (ScrollEventArgs)args;
|
Vector2 distance = new Vector2(mscroll.Distance.X, mscroll.Distance.Y);
|
||||||
Vector2 distance = new Vector2(scroll.Distance.X, scroll.Distance.Y);
|
Vector2 delta = new Vector2(mscroll.Delta.X, mscroll.Delta.Y);
|
||||||
Vector2 delta = new Vector2(scroll.Delta.X, scroll.Delta.Y);
|
|
||||||
MouseScrollEventArgs scroll2 = new MouseScrollEventArgs(distance, delta);
|
MouseScrollEventArgs scroll2 = new MouseScrollEventArgs(distance, delta);
|
||||||
info.Window.SendEvent(this, scroll2);
|
info.Window.SendEvent(this, scroll2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Keyboard & Text Events
|
// Keyboard & Text Events
|
||||||
case PlatformEventType.KeyDown:
|
case KeyDownEventArgs kdown:
|
||||||
{
|
{
|
||||||
KeyDownEventArgs down = (KeyDownEventArgs)args;
|
ModifierKeys modifierKeys = kdown.Modifiers.ToDashboard();
|
||||||
|
KeyCode keyCode = kdown.Key.ToDashboard();
|
||||||
ModifierKeys modifierKeys = GetModifierKeys(down.Modifiers);
|
ScanCode scanCode = kdown.Scancode.ToDashboard();
|
||||||
KeyCode keyCode = GetKeyCode(down.Key);
|
|
||||||
ScanCode scanCode = GetScanCode(down.Scancode);
|
|
||||||
|
|
||||||
KeyboardButtonEventArgs up2 = new KeyboardButtonEventArgs(keyCode, scanCode, modifierKeys, false);
|
KeyboardButtonEventArgs up2 = new KeyboardButtonEventArgs(keyCode, scanCode, modifierKeys, false);
|
||||||
info.Window.SendEvent(this, up2);
|
info.Window.SendEvent(this, up2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PlatformEventType.KeyUp:
|
case KeyUpEventArgs kup:
|
||||||
{
|
{
|
||||||
KeyUpEventArgs up = (KeyUpEventArgs)args;
|
ModifierKeys modifierKeys = kup.Modifiers.ToDashboard();
|
||||||
|
KeyCode keyCode = kup.Key.ToDashboard();
|
||||||
ModifierKeys modifierKeys = GetModifierKeys(up.Modifiers);
|
ScanCode scanCode = kup.Scancode.ToDashboard();
|
||||||
KeyCode keyCode = GetKeyCode(up.Key);
|
|
||||||
ScanCode scanCode = GetScanCode(up.Scancode);
|
|
||||||
|
|
||||||
KeyboardButtonEventArgs up2 = new KeyboardButtonEventArgs(keyCode, scanCode, modifierKeys, true);
|
KeyboardButtonEventArgs up2 = new KeyboardButtonEventArgs(keyCode, scanCode, modifierKeys, true);
|
||||||
info.Window.SendEvent(this, up2);
|
info.Window.SendEvent(this, up2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case PlatformEventType.TextInput:
|
case OPENTK.TextInputEventArgs textInput:
|
||||||
{
|
{
|
||||||
OPENTK.TextInputEventArgs textInput = (OPENTK.TextInputEventArgs)args;
|
|
||||||
DB.TextInputEventArgs textInput2 = new DB.TextInputEventArgs(textInput.Text);
|
DB.TextInputEventArgs textInput2 = new DB.TextInputEventArgs(textInput.Text);
|
||||||
info.Window.SendEvent(this, textInput2);
|
info.Window.SendEvent(this, textInput2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PlatformEventType.TextEditing:
|
case TextEditingEventArgs textEditing:
|
||||||
{
|
{
|
||||||
TextEditingEventArgs textEditing = (TextEditingEventArgs)args;
|
|
||||||
TextEditEventArgs textEditing2 = new TextEditEventArgs(textEditing.Candidate, textEditing.Cursor, textEditing.Length);
|
TextEditEventArgs textEditing2 = new TextEditEventArgs(textEditing.Candidate, textEditing.Cursor, textEditing.Length);
|
||||||
info.Window.SendEvent(this, textEditing2);
|
info.Window.SendEvent(this, textEditing2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Window/Surface related events.
|
// Window/Surface related events.
|
||||||
case PlatformEventType.Close:
|
case CloseEventArgs:
|
||||||
{
|
{
|
||||||
info.Window.SendEvent(this, new WindowCloseEvent());
|
info.Window.SendEvent(this, new WindowCloseEvent());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PlatformEventType.WindowFramebufferResize:
|
case WindowFramebufferResizeEventArgs:
|
||||||
{
|
{
|
||||||
var resize = (WindowFramebufferResizeEventArgs)args;
|
|
||||||
info.Window.SendEvent(this, new ResizeEventArgs());
|
info.Window.SendEvent(this, new ResizeEventArgs());
|
||||||
info.Window.SendEvent(this, new PaintEventArgs(info.Window.DeviceContext));
|
info.Window.SendEvent(this, new PaintEventArgs(info.Window.DeviceContext));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PlatformEventType.WindowResize:
|
case WindowResizeEventArgs:
|
||||||
{
|
{
|
||||||
var resize = (WindowResizeEventArgs)args;
|
|
||||||
info.Window.SendEvent(this, new ResizeEventArgs());
|
info.Window.SendEvent(this, new ResizeEventArgs());
|
||||||
info.Window.SendEvent(this, new PaintEventArgs(info.Window.DeviceContext));
|
info.Window.SendEvent(this, new PaintEventArgs(info.Window.DeviceContext));
|
||||||
break;
|
break;
|
||||||
@@ -234,96 +220,10 @@ namespace Dashboard.OpenTK.PAL2
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ModifierKeys GetModifierKeys(KeyModifier modifier)
|
|
||||||
{
|
|
||||||
ModifierKeys keys = 0;
|
|
||||||
|
|
||||||
keys |= modifier.HasFlag(KeyModifier.NumLock) ? ModifierKeys.NumLock : 0;
|
|
||||||
keys |= modifier.HasFlag(KeyModifier.CapsLock) ? ModifierKeys.CapsLock : 0;
|
|
||||||
keys |= modifier.HasFlag(KeyModifier.ScrollLock) ? ModifierKeys.ScrollLock : 0;
|
|
||||||
|
|
||||||
keys |= modifier.HasFlag(KeyModifier.LeftShift) ? ModifierKeys.LeftShift : 0;
|
|
||||||
keys |= modifier.HasFlag(KeyModifier.LeftControl) ? ModifierKeys.LeftControl : 0;
|
|
||||||
keys |= modifier.HasFlag(KeyModifier.LeftAlt) ? ModifierKeys.LeftAlt : 0;
|
|
||||||
keys |= modifier.HasFlag(KeyModifier.LeftGUI) ? ModifierKeys.LeftMeta : 0;
|
|
||||||
|
|
||||||
keys |= modifier.HasFlag(KeyModifier.RightShift) ? ModifierKeys.RightShift : 0;
|
|
||||||
keys |= modifier.HasFlag(KeyModifier.RightControl) ? ModifierKeys.RightControl : 0;
|
|
||||||
keys |= modifier.HasFlag(KeyModifier.RightAlt) ? ModifierKeys.RightAlt : 0;
|
|
||||||
keys |= modifier.HasFlag(KeyModifier.RightGUI) ? ModifierKeys.RightMeta : 0;
|
|
||||||
|
|
||||||
keys |= modifier.HasFlag(KeyModifier.Shift) ? ModifierKeys.Shift : 0;
|
|
||||||
keys |= modifier.HasFlag(KeyModifier.Control) ? ModifierKeys.Control : 0;
|
|
||||||
keys |= modifier.HasFlag(KeyModifier.Alt) ? ModifierKeys.Alt : 0;
|
|
||||||
keys |= modifier.HasFlag(KeyModifier.GUI) ? ModifierKeys.Meta : 0;
|
|
||||||
|
|
||||||
// C# makes this cast as annoying as possible.
|
|
||||||
keys |= (ModifierKeys)((((int)keys >> (int)ModifierKeys.RightBitPos) & 0xF) |
|
|
||||||
(((int)keys >> (int)ModifierKeys.LeftBitPos) & 0xF));
|
|
||||||
|
|
||||||
return keys;
|
|
||||||
}
|
|
||||||
|
|
||||||
private record WindowExtraInfo(PhysicalWindow Window)
|
private record WindowExtraInfo(PhysicalWindow Window)
|
||||||
{
|
{
|
||||||
public Vector2 MousePosition { get; set; } = Vector2.Zero;
|
public Vector2 MousePosition { get; set; } = Vector2.Zero;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Keycode and scancode tables.
|
|
||||||
|
|
||||||
private static KeyCode GetKeyCode(Key key) => key switch
|
|
||||||
{
|
|
||||||
_ => (KeyCode)0,
|
|
||||||
};
|
|
||||||
|
|
||||||
private static ScanCode GetScanCode(Scancode scanCode) => scanCode switch
|
|
||||||
{
|
|
||||||
// TODO: Revise this array.
|
|
||||||
Scancode.A => ScanCode.A,
|
|
||||||
Scancode.B => ScanCode.B,
|
|
||||||
Scancode.C => ScanCode.C,
|
|
||||||
Scancode.D => ScanCode.D,
|
|
||||||
Scancode.E => ScanCode.E,
|
|
||||||
Scancode.F => ScanCode.F,
|
|
||||||
Scancode.G => ScanCode.G,
|
|
||||||
Scancode.H => ScanCode.H,
|
|
||||||
Scancode.I => ScanCode.I,
|
|
||||||
Scancode.J => ScanCode.J,
|
|
||||||
Scancode.K => ScanCode.K,
|
|
||||||
Scancode.L => ScanCode.L,
|
|
||||||
Scancode.M => ScanCode.M,
|
|
||||||
Scancode.N => ScanCode.N,
|
|
||||||
Scancode.O => ScanCode.O,
|
|
||||||
Scancode.P => ScanCode.P,
|
|
||||||
Scancode.Q => ScanCode.Q,
|
|
||||||
Scancode.R => ScanCode.R,
|
|
||||||
Scancode.S => ScanCode.S,
|
|
||||||
Scancode.T => ScanCode.T,
|
|
||||||
Scancode.U => ScanCode.U,
|
|
||||||
Scancode.V => ScanCode.V,
|
|
||||||
Scancode.W => ScanCode.W,
|
|
||||||
Scancode.X => ScanCode.X,
|
|
||||||
Scancode.Y => ScanCode.Y,
|
|
||||||
Scancode.Z => ScanCode.Z,
|
|
||||||
Scancode.D0 => ScanCode.D0,
|
|
||||||
Scancode.D1 => ScanCode.D1,
|
|
||||||
Scancode.D2 => ScanCode.D2,
|
|
||||||
Scancode.D3 => ScanCode.D3,
|
|
||||||
Scancode.D4 => ScanCode.D4,
|
|
||||||
Scancode.D5 => ScanCode.D5,
|
|
||||||
Scancode.D6 => ScanCode.D6,
|
|
||||||
Scancode.D7 => ScanCode.D7,
|
|
||||||
Scancode.D8 => ScanCode.D8,
|
|
||||||
Scancode.D9 => ScanCode.D9,
|
|
||||||
Scancode.UpArrow => ScanCode.UpArrow,
|
|
||||||
Scancode.DownArrow => ScanCode.DownArrow,
|
|
||||||
Scancode.LeftArrow => ScanCode.LeftArrow,
|
|
||||||
Scancode.RightArrow => ScanCode.RightArrow,
|
|
||||||
Scancode.Spacebar => ScanCode.Space,
|
|
||||||
Scancode.LeftShift => ScanCode.LShift,
|
|
||||||
Scancode.RightShift => ScanCode.RShift,
|
|
||||||
_ => (ScanCode)0,
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class ApplicationQuitEventArgs() : EventArgs
|
internal class ApplicationQuitEventArgs() : EventArgs
|
||||||
|
|||||||
Reference in New Issue
Block a user