namespace Dashboard.Events { [Flags] public enum ModifierKeys { None = 0, LeftBitPos = 8, RightBitPos = 16, Shift = (1 << 0), Control = (1 << 1), Alt = (1 << 2), Meta = (1 << 3), NumLock = (1 << 4), CapsLock = (1 << 5), ScrollLock = (1 << 6), LeftShift = (Shift << LeftBitPos), LeftControl = (Control << LeftBitPos), LeftAlt = (Alt << LeftBitPos), LeftMeta = (Meta << LeftBitPos), RightShift = (Shift << RightBitPos), RightControl = (Control << RightBitPos), RightAlt = (Alt << RightBitPos), RightMeta = (Meta << RightBitPos), } public enum KeyCode { // TODO: } public enum ScanCode { // TODO: this array is from ReFuel, see if this makes any sense. Esc, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, Tilde, _1, _2, _3, _4, _5, _6, _7, _8, _9, _0, Minus, Equals, Backspace, Tab, Q, W, E, R, T, Y, U, I, O, P, LBracket, RBracket, Backslash, CapsLock, A, S, D, F, G, H, J, K, L, Semicolon, Quote, Enter, LShift, Z, X, C, V, B, N, M, Dot, Comma, Slash, RShift, LCtrl, LWin, LAlt, Space, RAlt, RWin, Menu, RCtrl, PrtSc, ScrollLock, PauseBreak, Insert, Delete, Home, End, PgUp, PgDown, Up, Down, Left, Right, NumLock, NumDiv, NumMul, NumSub, NumAdd, NumEnter, NumDecimal, Num0, Num1, Num2, Num3, Num4, Num5, Num6, Num7, Num8, Num9, IsoB00, KeysMax, } public class KeyboardButtonEventArgs(KeyCode keyCode, ScanCode scanCode, ModifierKeys modifierKeys, bool up) : UiEventArgs(up ? UiEventType.KeyUp : UiEventType.KeyDown) { public KeyCode KeyCode { get; } = keyCode; public ScanCode ScanCode { get; } = scanCode; public ModifierKeys ModifierKeys { get; } = modifierKeys; } public class TextInputEventArgs(string text) : UiEventArgs(UiEventType.TextEdit) { public string Text { get; } = text; } public class TextEditEventArgs(string candidate, int cursor, int length) : UiEventArgs(UiEventType.TextEdit) { public string Candidate { get; } = candidate; public int Cursor { get; } = cursor; public int Length { get; } = length; } }