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
|
||||
{
|
||||
// TODO:
|
||||
// TODO: Keycode table. Keycodes are subject to change upstream. SeeAlso: Extensions.cs@KeyCode ToDashboard(this Key key)
|
||||
}
|
||||
|
||||
public enum ScanCode
|
||||
@@ -160,10 +160,18 @@ namespace Dashboard.Events
|
||||
International4 = 0x79,
|
||||
International5 = 0x7B,
|
||||
International6 = 0x5C,
|
||||
International7,
|
||||
International8,
|
||||
International9,
|
||||
Lang1 = 0x72,
|
||||
Lang2 = 0x71,
|
||||
Lang3 = 0x78,
|
||||
Lang4 = 0x77,
|
||||
Lang5,
|
||||
Lang6,
|
||||
Lang7,
|
||||
Lang8,
|
||||
Lang9,
|
||||
LCtrl = 0x1D,
|
||||
LShift = 0x2A,
|
||||
LWin = 0xE05B,
|
||||
@@ -189,6 +197,9 @@ namespace Dashboard.Events
|
||||
Halt = 0xE068,
|
||||
Refresh = 0xE67,
|
||||
Bookmarks = 0xE066,
|
||||
|
||||
NonUsSlashBar = 0xFF01,
|
||||
Mute,
|
||||
}
|
||||
|
||||
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 DriverVendor => "Dashboard";
|
||||
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>();
|
||||
|
||||
@@ -49,9 +49,8 @@ namespace Dashboard.OpenTK.PAL2
|
||||
TK.Window.PostUserEvent(new ApplicationQuitEventArgs());
|
||||
});
|
||||
|
||||
Toolkit.Event.EventRaised += OnEventRaised;
|
||||
|
||||
Toolkit.Init(options ?? new ToolkitOptions());
|
||||
TK.Event.EventRaised += OnEventRaised;
|
||||
TK.Init(options ?? new ToolkitOptions());
|
||||
}
|
||||
|
||||
internal void RemoveWindow(PhysicalWindow window)
|
||||
@@ -115,40 +114,36 @@ namespace Dashboard.OpenTK.PAL2
|
||||
}
|
||||
|
||||
// TODO: fix this.
|
||||
switch (PlatformEventType.UserMessage)
|
||||
switch (args)
|
||||
{
|
||||
case PlatformEventType.UserMessage:
|
||||
if (args is ApplicationQuitEventArgs)
|
||||
{
|
||||
Quit = true;
|
||||
return;
|
||||
}
|
||||
break;
|
||||
// Mouse Events
|
||||
case PlatformEventType.MouseDown:
|
||||
case ApplicationQuitEventArgs:
|
||||
{
|
||||
MouseButtonDownEventArgs down = (MouseButtonDownEventArgs)args;
|
||||
MouseButtons buttons = (MouseButtons)(1 << (int)down.Button);
|
||||
ModifierKeys modifierKeys = GetModifierKeys(down.Modifiers);
|
||||
Quit = true;
|
||||
return;
|
||||
}
|
||||
|
||||
// Mouse Events
|
||||
case MouseButtonDownEventArgs mdown:
|
||||
{
|
||||
MouseButtons buttons = (MouseButtons)(1 << (int)mdown.Button);
|
||||
ModifierKeys modifierKeys = mdown.Modifiers.ToDashboard();
|
||||
// TODO: modifier keys
|
||||
MouseButtonEventArgs down2 = new MouseButtonEventArgs(info.MousePosition, buttons, modifierKeys, false);
|
||||
info.Window.SendEvent(this, down2);
|
||||
break;
|
||||
}
|
||||
case PlatformEventType.MouseUp:
|
||||
case MouseButtonUpEventArgs mup:
|
||||
{
|
||||
MouseButtonUpEventArgs up = (MouseButtonUpEventArgs)args;
|
||||
MouseButtons buttons = (MouseButtons)(1 << (int)up.Button);
|
||||
ModifierKeys modifierKeys = GetModifierKeys(up.Modifiers);
|
||||
MouseButtons buttons = (MouseButtons)(1 << (int)mup.Button);
|
||||
ModifierKeys modifierKeys = mup.Modifiers.ToDashboard();
|
||||
// TODO: modifier keys
|
||||
MouseButtonEventArgs up2 = new MouseButtonEventArgs(info.MousePosition, buttons, modifierKeys, true);
|
||||
info.Window.SendEvent(this, up2);
|
||||
break;
|
||||
}
|
||||
case PlatformEventType.MouseMove:
|
||||
case OPENTK.MouseMoveEventArgs mmove:
|
||||
{
|
||||
OPENTK.MouseMoveEventArgs move = (OPENTK.MouseMoveEventArgs)args;
|
||||
Vector2 position = new Vector2(move.ClientPosition.X, move.ClientPosition.Y);
|
||||
Vector2 position = new Vector2(mmove.ClientPosition.X, mmove.ClientPosition.Y);
|
||||
DB.MouseMoveEventArgs move2 = new DB.MouseMoveEventArgs(position, position - info.MousePosition);
|
||||
|
||||
info.MousePosition = position;
|
||||
@@ -156,73 +151,64 @@ namespace Dashboard.OpenTK.PAL2
|
||||
info.Window.SendEvent(this, move2);
|
||||
break;
|
||||
}
|
||||
case PlatformEventType.Scroll:
|
||||
case ScrollEventArgs mscroll:
|
||||
{
|
||||
ScrollEventArgs scroll = (ScrollEventArgs)args;
|
||||
Vector2 distance = new Vector2(scroll.Distance.X, scroll.Distance.Y);
|
||||
Vector2 delta = new Vector2(scroll.Delta.X, scroll.Delta.Y);
|
||||
Vector2 distance = new Vector2(mscroll.Distance.X, mscroll.Distance.Y);
|
||||
Vector2 delta = new Vector2(mscroll.Delta.X, mscroll.Delta.Y);
|
||||
MouseScrollEventArgs scroll2 = new MouseScrollEventArgs(distance, delta);
|
||||
info.Window.SendEvent(this, scroll2);
|
||||
break;
|
||||
}
|
||||
|
||||
// Keyboard & Text Events
|
||||
case PlatformEventType.KeyDown:
|
||||
case KeyDownEventArgs kdown:
|
||||
{
|
||||
KeyDownEventArgs down = (KeyDownEventArgs)args;
|
||||
|
||||
ModifierKeys modifierKeys = GetModifierKeys(down.Modifiers);
|
||||
KeyCode keyCode = GetKeyCode(down.Key);
|
||||
ScanCode scanCode = GetScanCode(down.Scancode);
|
||||
ModifierKeys modifierKeys = kdown.Modifiers.ToDashboard();
|
||||
KeyCode keyCode = kdown.Key.ToDashboard();
|
||||
ScanCode scanCode = kdown.Scancode.ToDashboard();
|
||||
|
||||
KeyboardButtonEventArgs up2 = new KeyboardButtonEventArgs(keyCode, scanCode, modifierKeys, false);
|
||||
info.Window.SendEvent(this, up2);
|
||||
break;
|
||||
}
|
||||
case PlatformEventType.KeyUp:
|
||||
case KeyUpEventArgs kup:
|
||||
{
|
||||
KeyUpEventArgs up = (KeyUpEventArgs)args;
|
||||
|
||||
ModifierKeys modifierKeys = GetModifierKeys(up.Modifiers);
|
||||
KeyCode keyCode = GetKeyCode(up.Key);
|
||||
ScanCode scanCode = GetScanCode(up.Scancode);
|
||||
ModifierKeys modifierKeys = kup.Modifiers.ToDashboard();
|
||||
KeyCode keyCode = kup.Key.ToDashboard();
|
||||
ScanCode scanCode = kup.Scancode.ToDashboard();
|
||||
|
||||
KeyboardButtonEventArgs up2 = new KeyboardButtonEventArgs(keyCode, scanCode, modifierKeys, true);
|
||||
info.Window.SendEvent(this, up2);
|
||||
break;
|
||||
}
|
||||
|
||||
case PlatformEventType.TextInput:
|
||||
case OPENTK.TextInputEventArgs textInput:
|
||||
{
|
||||
OPENTK.TextInputEventArgs textInput = (OPENTK.TextInputEventArgs)args;
|
||||
DB.TextInputEventArgs textInput2 = new DB.TextInputEventArgs(textInput.Text);
|
||||
info.Window.SendEvent(this, textInput2);
|
||||
break;
|
||||
}
|
||||
case PlatformEventType.TextEditing:
|
||||
case TextEditingEventArgs textEditing:
|
||||
{
|
||||
TextEditingEventArgs textEditing = (TextEditingEventArgs)args;
|
||||
TextEditEventArgs textEditing2 = new TextEditEventArgs(textEditing.Candidate, textEditing.Cursor, textEditing.Length);
|
||||
info.Window.SendEvent(this, textEditing2);
|
||||
break;
|
||||
}
|
||||
|
||||
// Window/Surface related events.
|
||||
case PlatformEventType.Close:
|
||||
case CloseEventArgs:
|
||||
{
|
||||
info.Window.SendEvent(this, new WindowCloseEvent());
|
||||
break;
|
||||
}
|
||||
case PlatformEventType.WindowFramebufferResize:
|
||||
case WindowFramebufferResizeEventArgs:
|
||||
{
|
||||
var resize = (WindowFramebufferResizeEventArgs)args;
|
||||
info.Window.SendEvent(this, new ResizeEventArgs());
|
||||
info.Window.SendEvent(this, new PaintEventArgs(info.Window.DeviceContext));
|
||||
break;
|
||||
}
|
||||
case PlatformEventType.WindowResize:
|
||||
case WindowResizeEventArgs:
|
||||
{
|
||||
var resize = (WindowResizeEventArgs)args;
|
||||
info.Window.SendEvent(this, new ResizeEventArgs());
|
||||
info.Window.SendEvent(this, new PaintEventArgs(info.Window.DeviceContext));
|
||||
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)
|
||||
{
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user