205 lines
8.6 KiB
C#
205 lines
8.6 KiB
C#
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,
|
|
};
|
|
}
|
|
}
|