From 7eae03362b9a1f34c8c52323936a9937b9b76bdb Mon Sep 17 00:00:00 2001 From: CrackThrough Date: Sun, 6 Nov 2022 22:46:39 +0900 Subject: [PATCH] feat: KeyLabel enum --- Runtime/Event.cs | 212 ++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 182 insertions(+), 30 deletions(-) diff --git a/Runtime/Event.cs b/Runtime/Event.cs index 1b02741..7531fd6 100644 --- a/Runtime/Event.cs +++ b/Runtime/Event.cs @@ -3,37 +3,189 @@ using System.Runtime.InteropServices; namespace SkyHook { - /// - /// Recorded key updates from SkyHook. - /// - [StructLayout(LayoutKind.Sequential)] - [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] - public struct SkyHookEvent - { /// - /// When the key's state was updated. + /// Recorded key updates from SkyHook. /// - public readonly ulong Time; - /// - /// Whether the key is pressed or released. - /// - public readonly EventType Type; - /// - /// The identified key label from the native assembly. - /// - public readonly ushort Label; - /// - /// The key number that was pressed or released. - /// - public readonly ushort Key; - } + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + public struct SkyHookEvent + { + /// + /// When the key's state was updated. + /// + public readonly ulong Time; + /// + /// Whether the key is pressed or released. + /// + public readonly EventType Type; + /// + /// The identified key label from the native assembly. + /// + public readonly KeyLabel Label; + /// + /// The key number that was pressed or released. + /// + public readonly ushort Key; + } - /// - /// The type of 's event. - /// - public enum EventType - { - KeyPressed, - KeyReleased - } + /// + /// The type of 's event. + /// + [SuppressMessage("ReSharper", "UnusedMember.Global")] + public enum EventType + { + KeyPressed, + KeyReleased + } + + /// + /// The key label identified by native SkyHook. + /// This label will be the same regardless of what OS the player is in. + ///
+ /// This is a direct import of the https://git.pikokr.dev/SkyHook/SkyHook/src/branch/main/skyhook/src/keycodes.rs native enum. + ///
+ [SuppressMessage("ReSharper", "UnusedMember.Global")] + public enum KeyLabel : ushort + { + Escape, + + // Function Keys + F1, + F2, + F3, + F4, + F5, + F6, + F7, + F8, + F9, + F10, + F11, + F12, + F13, + F14, + F15, + F16, + F17, + F18, + F19, + F20, + F21, + F22, + F23, + F24, + + // 2nd Layer + Grave, + Alpha1, + Alpha2, + Alpha3, + Alpha4, + Alpha5, + Alpha6, + Alpha7, + Alpha8, + Alpha9, + Alpha0, + Minus, + Equal, + Backspace, + + // 3rd Layer + Tab, + Q, + W, + E, + R, + T, + Y, + U, + I, + O, + P, + LeftBrace, + RightBrace, + BackSlash, + + // 4th Layer + CapsLock, + A, + S, + D, + F, + G, + H, + J, + K, + L, + Semicolon, + Apostrophe, + Enter, + + // 5th Layer + LShift, + Z, + X, + C, + V, + B, + N, + M, + Comma, + Dot, + Slash, + RShift, + + // 6th Layer + LControl, + Super, + LAlt, + Space, + RAlt, + RControl, + + // Controls + PrintScreen, + ScrollLock, + PauseBreak, + Insert, + Home, + PageUp, + Delete, + End, + PageDown, + ArrowUp, + ArrowLeft, + ArrowDown, + ArrowRight, + + // Keypad + NumLock, + KeypadSlash, + KeypadAsterisk, + KeypadMinus, + Keypad1, + Keypad2, + Keypad3, + Keypad4, + Keypad5, + Keypad6, + Keypad7, + Keypad8, + Keypad9, + Keypad0, + KeypadDot, + KeypadPlus, + KeypadEnter, + + // Mouse + MouseLeft, + MouseRight, + MouseMiddle, + MouseX1, + MouseX2, + + // Uncategorized + Unknown + } } \ No newline at end of file