diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/InputDevicesManager.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/InputDevicesManager.cs index ad1a73f6..c0400f89 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/InputDevicesManager.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/InputDevicesManager.cs @@ -135,9 +135,10 @@ namespace AxibugEmuOnline.Client.InputDevices /// <summary> 控件名,这个控件名称必须是唯一的 </summary> public abstract string ControlName { get; } - public string GetPath() + + internal InputControl(InputDevice device) { - return $"{Device.UniqueName}/{ControlName}"; + Device = device; } } diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/Keyboard.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/Keyboard.cs index 01c0a84d..52870c9d 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/Keyboard.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/Keyboard.cs @@ -9,23 +9,30 @@ namespace AxibugEmuOnline.Client.InputDevices /// </summary> public partial class KeyBoard : InputDevice { + Dictionary<KeyCode, KeyboardKey> m_keyControllerMap = new Dictionary<KeyCode, KeyboardKey>(); + public KeyBoard(InputResolver resolver) : base(resolver) { } protected override IEnumerable<InputControl> DefineControls() { - var keys = s_keyboardKeys.Select(kc => new KeyboardKey(kc) as InputControl); + var keys = s_keyboardKeys.Select(kc => new KeyboardKey(kc, this) as InputControl); + foreach (KeyboardKey key in keys) + { + m_keyControllerMap[key.m_keycode] = key; + } return keys; } public class KeyboardKey : InputControl { - KeyCode m_keycode; + internal KeyCode m_keycode; public override bool Start => Device.Resolver.GetKeyDown(Device as KeyBoard, m_keycode); public override bool Release => Device.Resolver.GetKeyUp(Device as KeyBoard, m_keycode); public override bool Performing => Device.Resolver.GetKey(Device as KeyBoard, m_keycode); - public KeyboardKey(KeyCode listenKey) + internal KeyboardKey(KeyCode listenKey, KeyBoard keyboard) + : base(keyboard) { m_keycode = listenKey; } @@ -90,133 +97,115 @@ namespace AxibugEmuOnline.Client.InputDevices KeyCode.Clear }; - // 字母键 A-Z - public KeyboardKey A { get; private set; } = new KeyboardKey(KeyCode.A); - public KeyboardKey B { get; private set; } = new KeyboardKey(KeyCode.B); - public KeyboardKey C { get; private set; } = new KeyboardKey(KeyCode.C); - public KeyboardKey D { get; private set; } = new KeyboardKey(KeyCode.D); - public KeyboardKey E { get; private set; } = new KeyboardKey(KeyCode.E); - public KeyboardKey F { get; private set; } = new KeyboardKey(KeyCode.F); - public KeyboardKey G { get; private set; } = new KeyboardKey(KeyCode.G); - public KeyboardKey H { get; private set; } = new KeyboardKey(KeyCode.H); - public KeyboardKey I { get; private set; } = new KeyboardKey(KeyCode.I); - public KeyboardKey J { get; private set; } = new KeyboardKey(KeyCode.J); - public KeyboardKey K { get; private set; } = new KeyboardKey(KeyCode.K); - public KeyboardKey L { get; private set; } = new KeyboardKey(KeyCode.L); - public KeyboardKey M { get; private set; } = new KeyboardKey(KeyCode.M); - public KeyboardKey N { get; private set; } = new KeyboardKey(KeyCode.N); - public KeyboardKey O { get; private set; } = new KeyboardKey(KeyCode.O); - public KeyboardKey P { get; private set; } = new KeyboardKey(KeyCode.P); - public KeyboardKey Q { get; private set; } = new KeyboardKey(KeyCode.Q); - public KeyboardKey R { get; private set; } = new KeyboardKey(KeyCode.R); - public KeyboardKey S { get; private set; } = new KeyboardKey(KeyCode.S); - public KeyboardKey T { get; private set; } = new KeyboardKey(KeyCode.T); - public KeyboardKey U { get; private set; } = new KeyboardKey(KeyCode.U); - public KeyboardKey V { get; private set; } = new KeyboardKey(KeyCode.V); - public KeyboardKey W { get; private set; } = new KeyboardKey(KeyCode.W); - public KeyboardKey X { get; private set; } = new KeyboardKey(KeyCode.X); - public KeyboardKey Y { get; private set; } = new KeyboardKey(KeyCode.Y); - public KeyboardKey Z { get; private set; } = new KeyboardKey(KeyCode.Z); - - // 数字键 0-9 - public KeyboardKey Alpha0 { get; private set; } = new KeyboardKey(KeyCode.Alpha0); - public KeyboardKey Alpha1 { get; private set; } = new KeyboardKey(KeyCode.Alpha1); - public KeyboardKey Alpha2 { get; private set; } = new KeyboardKey(KeyCode.Alpha2); - public KeyboardKey Alpha3 { get; private set; } = new KeyboardKey(KeyCode.Alpha3); - public KeyboardKey Alpha4 { get; private set; } = new KeyboardKey(KeyCode.Alpha4); - public KeyboardKey Alpha5 { get; private set; } = new KeyboardKey(KeyCode.Alpha5); - public KeyboardKey Alpha6 { get; private set; } = new KeyboardKey(KeyCode.Alpha6); - public KeyboardKey Alpha7 { get; private set; } = new KeyboardKey(KeyCode.Alpha7); - public KeyboardKey Alpha8 { get; private set; } = new KeyboardKey(KeyCode.Alpha8); - public KeyboardKey Alpha9 { get; private set; } = new KeyboardKey(KeyCode.Alpha9); - - // 功能键 F1-F15 - public KeyboardKey F1 { get; private set; } = new KeyboardKey(KeyCode.F1); - public KeyboardKey F2 { get; private set; } = new KeyboardKey(KeyCode.F2); - public KeyboardKey F3 { get; private set; } = new KeyboardKey(KeyCode.F3); - public KeyboardKey F4 { get; private set; } = new KeyboardKey(KeyCode.F4); - public KeyboardKey F5 { get; private set; } = new KeyboardKey(KeyCode.F5); - public KeyboardKey F6 { get; private set; } = new KeyboardKey(KeyCode.F6); - public KeyboardKey F7 { get; private set; } = new KeyboardKey(KeyCode.F7); - public KeyboardKey F8 { get; private set; } = new KeyboardKey(KeyCode.F8); - public KeyboardKey F9 { get; private set; } = new KeyboardKey(KeyCode.F9); - public KeyboardKey F10 { get; private set; } = new KeyboardKey(KeyCode.F10); - public KeyboardKey F11 { get; private set; } = new KeyboardKey(KeyCode.F11); - public KeyboardKey F12 { get; private set; } = new KeyboardKey(KeyCode.F12); - public KeyboardKey F13 { get; private set; } = new KeyboardKey(KeyCode.F13); - public KeyboardKey F14 { get; private set; } = new KeyboardKey(KeyCode.F14); - public KeyboardKey F15 { get; private set; } = new KeyboardKey(KeyCode.F15); - - // 方向键 - public KeyboardKey UpArrow { get; private set; } = new KeyboardKey(KeyCode.UpArrow); - public KeyboardKey DownArrow { get; private set; } = new KeyboardKey(KeyCode.DownArrow); - public KeyboardKey LeftArrow { get; private set; } = new KeyboardKey(KeyCode.LeftArrow); - public KeyboardKey RightArrow { get; private set; } = new KeyboardKey(KeyCode.RightArrow); - - // 控制键 - public KeyboardKey Space { get; private set; } = new KeyboardKey(KeyCode.Space); - public KeyboardKey Return { get; private set; } = new KeyboardKey(KeyCode.Return); - public KeyboardKey Escape { get; private set; } = new KeyboardKey(KeyCode.Escape); - public KeyboardKey Tab { get; private set; } = new KeyboardKey(KeyCode.Tab); - /// <summary> - /// <img src="./test.png" alt="test"/> - /// </summary> - public KeyboardKey Backspace { get; private set; } = new KeyboardKey(KeyCode.Backspace); - public KeyboardKey CapsLock { get; private set; } = new KeyboardKey(KeyCode.CapsLock); - public KeyboardKey LeftShift { get; private set; } = new KeyboardKey(KeyCode.LeftShift); - public KeyboardKey RightShift { get; private set; } = new KeyboardKey(KeyCode.RightShift); - public KeyboardKey LeftControl { get; private set; } = new KeyboardKey(KeyCode.LeftControl); - public KeyboardKey RightControl { get; private set; } = new KeyboardKey(KeyCode.RightControl); - public KeyboardKey LeftAlt { get; private set; } = new KeyboardKey(KeyCode.LeftAlt); - public KeyboardKey RightAlt { get; private set; } = new KeyboardKey(KeyCode.RightAlt); - public KeyboardKey LeftCommand { get; private set; } = new KeyboardKey(KeyCode.LeftCommand); - public KeyboardKey RightCommand { get; private set; } = new KeyboardKey(KeyCode.RightCommand); - public KeyboardKey Menu { get; private set; } = new KeyboardKey(KeyCode.Menu); - - // 符号键 - public KeyboardKey Comma { get; private set; } = new KeyboardKey(KeyCode.Comma); - public KeyboardKey Period { get; private set; } = new KeyboardKey(KeyCode.Period); - public KeyboardKey Slash { get; private set; } = new KeyboardKey(KeyCode.Slash); - public KeyboardKey BackQuote { get; private set; } = new KeyboardKey(KeyCode.BackQuote); - public KeyboardKey Quote { get; private set; } = new KeyboardKey(KeyCode.Quote); - public KeyboardKey Semicolon { get; private set; } = new KeyboardKey(KeyCode.Semicolon); - public KeyboardKey LeftBracket { get; private set; } = new KeyboardKey(KeyCode.LeftBracket); - public KeyboardKey RightBracket { get; private set; } = new KeyboardKey(KeyCode.RightBracket); - public KeyboardKey Backslash { get; private set; } = new KeyboardKey(KeyCode.Backslash); - public KeyboardKey Minus { get; private set; } = new KeyboardKey(KeyCode.Minus); - public KeyboardKey Equals_k { get; private set; } = new KeyboardKey(KeyCode.Equals); - public KeyboardKey Tilde { get; private set; } = new KeyboardKey(KeyCode.Tilde); - - // 小键盘 - public KeyboardKey Keypad0 { get; private set; } = new KeyboardKey(KeyCode.Keypad0); - public KeyboardKey Keypad1 { get; private set; } = new KeyboardKey(KeyCode.Keypad1); - public KeyboardKey Keypad2 { get; private set; } = new KeyboardKey(KeyCode.Keypad2); - public KeyboardKey Keypad3 { get; private set; } = new KeyboardKey(KeyCode.Keypad3); - public KeyboardKey Keypad4 { get; private set; } = new KeyboardKey(KeyCode.Keypad4); - public KeyboardKey Keypad5 { get; private set; } = new KeyboardKey(KeyCode.Keypad5); - public KeyboardKey Keypad6 { get; private set; } = new KeyboardKey(KeyCode.Keypad6); - public KeyboardKey Keypad7 { get; private set; } = new KeyboardKey(KeyCode.Keypad7); - public KeyboardKey Keypad8 { get; private set; } = new KeyboardKey(KeyCode.Keypad8); - public KeyboardKey Keypad9 { get; private set; } = new KeyboardKey(KeyCode.Keypad9); - public KeyboardKey KeypadPeriod { get; private set; } = new KeyboardKey(KeyCode.KeypadPeriod); - public KeyboardKey KeypadDivide { get; private set; } = new KeyboardKey(KeyCode.KeypadDivide); - public KeyboardKey KeypadMultiply { get; private set; } = new KeyboardKey(KeyCode.KeypadMultiply); - public KeyboardKey KeypadMinus { get; private set; } = new KeyboardKey(KeyCode.KeypadMinus); - public KeyboardKey KeypadPlus { get; private set; } = new KeyboardKey(KeyCode.KeypadPlus); - public KeyboardKey KeypadEnter { get; private set; } = new KeyboardKey(KeyCode.KeypadEnter); - public KeyboardKey Numlock { get; private set; } = new KeyboardKey(KeyCode.Numlock); - - // 其他标准键 - public KeyboardKey Print { get; private set; } = new KeyboardKey(KeyCode.Print); - public KeyboardKey Insert { get; private set; } = new KeyboardKey(KeyCode.Insert); - public KeyboardKey Delete { get; private set; } = new KeyboardKey(KeyCode.Delete); - public KeyboardKey Home { get; private set; } = new KeyboardKey(KeyCode.Home); - public KeyboardKey End { get; private set; } = new KeyboardKey(KeyCode.End); - public KeyboardKey PageUp { get; private set; } = new KeyboardKey(KeyCode.PageUp); - public KeyboardKey PageDown { get; private set; } = new KeyboardKey(KeyCode.PageDown); - public KeyboardKey Pause { get; private set; } = new KeyboardKey(KeyCode.Pause); - public KeyboardKey ScrollLock { get; private set; } = new KeyboardKey(KeyCode.ScrollLock); - public KeyboardKey Clear { get; private set; } = new KeyboardKey(KeyCode.Clear); + public KeyboardKey A => m_keyControllerMap[KeyCode.A]; + public KeyboardKey B => m_keyControllerMap[KeyCode.B]; + public KeyboardKey C => m_keyControllerMap[KeyCode.C]; + public KeyboardKey D => m_keyControllerMap[KeyCode.D]; + public KeyboardKey E => m_keyControllerMap[KeyCode.E]; + public KeyboardKey F => m_keyControllerMap[KeyCode.F]; + public KeyboardKey G => m_keyControllerMap[KeyCode.G]; + public KeyboardKey H => m_keyControllerMap[KeyCode.H]; + public KeyboardKey I => m_keyControllerMap[KeyCode.I]; + public KeyboardKey J => m_keyControllerMap[KeyCode.J]; + public KeyboardKey K => m_keyControllerMap[KeyCode.K]; + public KeyboardKey L => m_keyControllerMap[KeyCode.L]; + public KeyboardKey M => m_keyControllerMap[KeyCode.M]; + public KeyboardKey N => m_keyControllerMap[KeyCode.N]; + public KeyboardKey O => m_keyControllerMap[KeyCode.O]; + public KeyboardKey P => m_keyControllerMap[KeyCode.P]; + public KeyboardKey Q => m_keyControllerMap[KeyCode.Q]; + public KeyboardKey R => m_keyControllerMap[KeyCode.R]; + public KeyboardKey S => m_keyControllerMap[KeyCode.S]; + public KeyboardKey T => m_keyControllerMap[KeyCode.T]; + public KeyboardKey U => m_keyControllerMap[KeyCode.U]; + public KeyboardKey V => m_keyControllerMap[KeyCode.V]; + public KeyboardKey W => m_keyControllerMap[KeyCode.W]; + public KeyboardKey X => m_keyControllerMap[KeyCode.X]; + public KeyboardKey Y => m_keyControllerMap[KeyCode.Y]; + public KeyboardKey Z => m_keyControllerMap[KeyCode.Z]; + public KeyboardKey Alpha0 => m_keyControllerMap[KeyCode.Alpha0]; + public KeyboardKey Alpha1 => m_keyControllerMap[KeyCode.Alpha1]; + public KeyboardKey Alpha2 => m_keyControllerMap[KeyCode.Alpha2]; + public KeyboardKey Alpha3 => m_keyControllerMap[KeyCode.Alpha3]; + public KeyboardKey Alpha4 => m_keyControllerMap[KeyCode.Alpha4]; + public KeyboardKey Alpha5 => m_keyControllerMap[KeyCode.Alpha5]; + public KeyboardKey Alpha6 => m_keyControllerMap[KeyCode.Alpha6]; + public KeyboardKey Alpha7 => m_keyControllerMap[KeyCode.Alpha7]; + public KeyboardKey Alpha8 => m_keyControllerMap[KeyCode.Alpha8]; + public KeyboardKey Alpha9 => m_keyControllerMap[KeyCode.Alpha9]; + public KeyboardKey F1 => m_keyControllerMap[KeyCode.F1]; + public KeyboardKey F2 => m_keyControllerMap[KeyCode.F2]; + public KeyboardKey F3 => m_keyControllerMap[KeyCode.F3]; + public KeyboardKey F4 => m_keyControllerMap[KeyCode.F4]; + public KeyboardKey F5 => m_keyControllerMap[KeyCode.F5]; + public KeyboardKey F6 => m_keyControllerMap[KeyCode.F6]; + public KeyboardKey F7 => m_keyControllerMap[KeyCode.F7]; + public KeyboardKey F8 => m_keyControllerMap[KeyCode.F8]; + public KeyboardKey F9 => m_keyControllerMap[KeyCode.F9]; + public KeyboardKey F10 => m_keyControllerMap[KeyCode.F10]; + public KeyboardKey F11 => m_keyControllerMap[KeyCode.F11]; + public KeyboardKey F12 => m_keyControllerMap[KeyCode.F12]; + public KeyboardKey F13 => m_keyControllerMap[KeyCode.F13]; + public KeyboardKey F14 => m_keyControllerMap[KeyCode.F14]; + public KeyboardKey F15 => m_keyControllerMap[KeyCode.F15]; + public KeyboardKey UpArrow => m_keyControllerMap[KeyCode.UpArrow]; + public KeyboardKey DownArrow => m_keyControllerMap[KeyCode.DownArrow]; + public KeyboardKey LeftArrow => m_keyControllerMap[KeyCode.LeftArrow]; + public KeyboardKey RightArrow => m_keyControllerMap[KeyCode.RightArrow]; + public KeyboardKey Space => m_keyControllerMap[KeyCode.Space]; + public KeyboardKey Return => m_keyControllerMap[KeyCode.Return]; + public KeyboardKey Escape => m_keyControllerMap[KeyCode.Escape]; + public KeyboardKey Tab => m_keyControllerMap[KeyCode.Tab]; + public KeyboardKey Backspace => m_keyControllerMap[KeyCode.Backspace]; + public KeyboardKey CapsLock => m_keyControllerMap[KeyCode.CapsLock]; + public KeyboardKey LeftShift => m_keyControllerMap[KeyCode.LeftShift]; + public KeyboardKey RightShift => m_keyControllerMap[KeyCode.RightShift]; + public KeyboardKey LeftControl => m_keyControllerMap[KeyCode.LeftControl]; + public KeyboardKey RightControl => m_keyControllerMap[KeyCode.RightControl]; + public KeyboardKey LeftAlt => m_keyControllerMap[KeyCode.LeftAlt]; + public KeyboardKey RightAlt => m_keyControllerMap[KeyCode.RightAlt]; + public KeyboardKey LeftCommand => m_keyControllerMap[KeyCode.LeftCommand]; + public KeyboardKey RightCommand => m_keyControllerMap[KeyCode.RightCommand]; + public KeyboardKey Menu => m_keyControllerMap[KeyCode.Menu]; + public KeyboardKey Comma => m_keyControllerMap[KeyCode.Comma]; + public KeyboardKey Period => m_keyControllerMap[KeyCode.Period]; + public KeyboardKey Slash => m_keyControllerMap[KeyCode.Slash]; + public KeyboardKey BackQuote => m_keyControllerMap[KeyCode.BackQuote]; + public KeyboardKey Quote => m_keyControllerMap[KeyCode.Quote]; + public KeyboardKey Semicolon => m_keyControllerMap[KeyCode.Semicolon]; + public KeyboardKey LeftBracket => m_keyControllerMap[KeyCode.LeftBracket]; + public KeyboardKey RightBracket => m_keyControllerMap[KeyCode.RightBracket]; + public KeyboardKey Backslash => m_keyControllerMap[KeyCode.Backslash]; + public KeyboardKey Minus => m_keyControllerMap[KeyCode.Minus]; + public KeyboardKey Equals_k => m_keyControllerMap[KeyCode.Equals]; + public KeyboardKey Tilde => m_keyControllerMap[KeyCode.Tilde]; + public KeyboardKey Keypad0 => m_keyControllerMap[KeyCode.Keypad0]; + public KeyboardKey Keypad1 => m_keyControllerMap[KeyCode.Keypad1]; + public KeyboardKey Keypad2 => m_keyControllerMap[KeyCode.Keypad2]; + public KeyboardKey Keypad3 => m_keyControllerMap[KeyCode.Keypad3]; + public KeyboardKey Keypad4 => m_keyControllerMap[KeyCode.Keypad4]; + public KeyboardKey Keypad5 => m_keyControllerMap[KeyCode.Keypad5]; + public KeyboardKey Keypad6 => m_keyControllerMap[KeyCode.Keypad6]; + public KeyboardKey Keypad7 => m_keyControllerMap[KeyCode.Keypad7]; + public KeyboardKey Keypad8 => m_keyControllerMap[KeyCode.Keypad8]; + public KeyboardKey Keypad9 => m_keyControllerMap[KeyCode.Keypad9]; + public KeyboardKey KeypadPeriod => m_keyControllerMap[KeyCode.KeypadPeriod]; + public KeyboardKey KeypadDivide => m_keyControllerMap[KeyCode.KeypadDivide]; + public KeyboardKey KeypadMultiply => m_keyControllerMap[KeyCode.KeypadMultiply]; + public KeyboardKey KeypadMinus => m_keyControllerMap[KeyCode.KeypadMinus]; + public KeyboardKey KeypadPlus => m_keyControllerMap[KeyCode.KeypadPlus]; + public KeyboardKey KeypadEnter => m_keyControllerMap[KeyCode.KeypadEnter]; + public KeyboardKey Numlock => m_keyControllerMap[KeyCode.Numlock]; + public KeyboardKey Print => m_keyControllerMap[KeyCode.Print]; + public KeyboardKey Insert => m_keyControllerMap[KeyCode.Insert]; + public KeyboardKey Delete => m_keyControllerMap[KeyCode.Delete]; + public KeyboardKey Home => m_keyControllerMap[KeyCode.Home]; + public KeyboardKey End => m_keyControllerMap[KeyCode.End]; + public KeyboardKey PageUp => m_keyControllerMap[KeyCode.PageUp]; + public KeyboardKey PageDown => m_keyControllerMap[KeyCode.PageDown]; + public KeyboardKey Pause => m_keyControllerMap[KeyCode.Pause]; + public KeyboardKey ScrollLock => m_keyControllerMap[KeyCode.ScrollLock]; + public KeyboardKey Clear => m_keyControllerMap[KeyCode.Clear]; } #endregion } \ No newline at end of file