键盘设备键值字段接口调整

This commit is contained in:
ALIENJACK\alien 2025-03-17 10:50:17 +08:00
parent 3257e15dda
commit a93f6449c8
2 changed files with 122 additions and 132 deletions
AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager

View File

@ -135,9 +135,10 @@ namespace AxibugEmuOnline.Client.InputDevices
/// <summary> 控件名,这个控件名称必须是唯一的 </summary> /// <summary> 控件名,这个控件名称必须是唯一的 </summary>
public abstract string ControlName { get; } public abstract string ControlName { get; }
public string GetPath()
internal InputControl(InputDevice device)
{ {
return $"{Device.UniqueName}/{ControlName}"; Device = device;
} }
} }

View File

@ -9,23 +9,30 @@ namespace AxibugEmuOnline.Client.InputDevices
/// </summary> /// </summary>
public partial class KeyBoard : InputDevice public partial class KeyBoard : InputDevice
{ {
Dictionary<KeyCode, KeyboardKey> m_keyControllerMap = new Dictionary<KeyCode, KeyboardKey>();
public KeyBoard(InputResolver resolver) : base(resolver) { } public KeyBoard(InputResolver resolver) : base(resolver) { }
protected override IEnumerable<InputControl> DefineControls() 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; return keys;
} }
public class KeyboardKey : InputControl 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 Start => Device.Resolver.GetKeyDown(Device as KeyBoard, m_keycode);
public override bool Release => Device.Resolver.GetKeyUp(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 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; m_keycode = listenKey;
} }
@ -90,133 +97,115 @@ namespace AxibugEmuOnline.Client.InputDevices
KeyCode.Clear KeyCode.Clear
}; };
// 字母键 A-Z public KeyboardKey A => m_keyControllerMap[KeyCode.A];
public KeyboardKey A { get; private set; } = new KeyboardKey(KeyCode.A); public KeyboardKey B => m_keyControllerMap[KeyCode.B];
public KeyboardKey B { get; private set; } = new KeyboardKey(KeyCode.B); public KeyboardKey C => m_keyControllerMap[KeyCode.C];
public KeyboardKey C { get; private set; } = new KeyboardKey(KeyCode.C); public KeyboardKey D => m_keyControllerMap[KeyCode.D];
public KeyboardKey D { get; private set; } = new KeyboardKey(KeyCode.D); public KeyboardKey E => m_keyControllerMap[KeyCode.E];
public KeyboardKey E { get; private set; } = new KeyboardKey(KeyCode.E); public KeyboardKey F => m_keyControllerMap[KeyCode.F];
public KeyboardKey F { get; private set; } = new KeyboardKey(KeyCode.F); public KeyboardKey G => m_keyControllerMap[KeyCode.G];
public KeyboardKey G { get; private set; } = new KeyboardKey(KeyCode.G); public KeyboardKey H => m_keyControllerMap[KeyCode.H];
public KeyboardKey H { get; private set; } = new KeyboardKey(KeyCode.H); public KeyboardKey I => m_keyControllerMap[KeyCode.I];
public KeyboardKey I { get; private set; } = new KeyboardKey(KeyCode.I); public KeyboardKey J => m_keyControllerMap[KeyCode.J];
public KeyboardKey J { get; private set; } = new KeyboardKey(KeyCode.J); public KeyboardKey K => m_keyControllerMap[KeyCode.K];
public KeyboardKey K { get; private set; } = new KeyboardKey(KeyCode.K); public KeyboardKey L => m_keyControllerMap[KeyCode.L];
public KeyboardKey L { get; private set; } = new KeyboardKey(KeyCode.L); public KeyboardKey M => m_keyControllerMap[KeyCode.M];
public KeyboardKey M { get; private set; } = new KeyboardKey(KeyCode.M); public KeyboardKey N => m_keyControllerMap[KeyCode.N];
public KeyboardKey N { get; private set; } = new KeyboardKey(KeyCode.N); public KeyboardKey O => m_keyControllerMap[KeyCode.O];
public KeyboardKey O { get; private set; } = new KeyboardKey(KeyCode.O); public KeyboardKey P => m_keyControllerMap[KeyCode.P];
public KeyboardKey P { get; private set; } = new KeyboardKey(KeyCode.P); public KeyboardKey Q => m_keyControllerMap[KeyCode.Q];
public KeyboardKey Q { get; private set; } = new KeyboardKey(KeyCode.Q); public KeyboardKey R => m_keyControllerMap[KeyCode.R];
public KeyboardKey R { get; private set; } = new KeyboardKey(KeyCode.R); public KeyboardKey S => m_keyControllerMap[KeyCode.S];
public KeyboardKey S { get; private set; } = new KeyboardKey(KeyCode.S); public KeyboardKey T => m_keyControllerMap[KeyCode.T];
public KeyboardKey T { get; private set; } = new KeyboardKey(KeyCode.T); public KeyboardKey U => m_keyControllerMap[KeyCode.U];
public KeyboardKey U { get; private set; } = new KeyboardKey(KeyCode.U); public KeyboardKey V => m_keyControllerMap[KeyCode.V];
public KeyboardKey V { get; private set; } = new KeyboardKey(KeyCode.V); public KeyboardKey W => m_keyControllerMap[KeyCode.W];
public KeyboardKey W { get; private set; } = new KeyboardKey(KeyCode.W); public KeyboardKey X => m_keyControllerMap[KeyCode.X];
public KeyboardKey X { get; private set; } = new KeyboardKey(KeyCode.X); public KeyboardKey Y => m_keyControllerMap[KeyCode.Y];
public KeyboardKey Y { get; private set; } = new KeyboardKey(KeyCode.Y); public KeyboardKey Z => m_keyControllerMap[KeyCode.Z];
public KeyboardKey Z { get; private set; } = new KeyboardKey(KeyCode.Z); public KeyboardKey Alpha0 => m_keyControllerMap[KeyCode.Alpha0];
public KeyboardKey Alpha1 => m_keyControllerMap[KeyCode.Alpha1];
// 数字键 0-9 public KeyboardKey Alpha2 => m_keyControllerMap[KeyCode.Alpha2];
public KeyboardKey Alpha0 { get; private set; } = new KeyboardKey(KeyCode.Alpha0); public KeyboardKey Alpha3 => m_keyControllerMap[KeyCode.Alpha3];
public KeyboardKey Alpha1 { get; private set; } = new KeyboardKey(KeyCode.Alpha1); public KeyboardKey Alpha4 => m_keyControllerMap[KeyCode.Alpha4];
public KeyboardKey Alpha2 { get; private set; } = new KeyboardKey(KeyCode.Alpha2); public KeyboardKey Alpha5 => m_keyControllerMap[KeyCode.Alpha5];
public KeyboardKey Alpha3 { get; private set; } = new KeyboardKey(KeyCode.Alpha3); public KeyboardKey Alpha6 => m_keyControllerMap[KeyCode.Alpha6];
public KeyboardKey Alpha4 { get; private set; } = new KeyboardKey(KeyCode.Alpha4); public KeyboardKey Alpha7 => m_keyControllerMap[KeyCode.Alpha7];
public KeyboardKey Alpha5 { get; private set; } = new KeyboardKey(KeyCode.Alpha5); public KeyboardKey Alpha8 => m_keyControllerMap[KeyCode.Alpha8];
public KeyboardKey Alpha6 { get; private set; } = new KeyboardKey(KeyCode.Alpha6); public KeyboardKey Alpha9 => m_keyControllerMap[KeyCode.Alpha9];
public KeyboardKey Alpha7 { get; private set; } = new KeyboardKey(KeyCode.Alpha7); public KeyboardKey F1 => m_keyControllerMap[KeyCode.F1];
public KeyboardKey Alpha8 { get; private set; } = new KeyboardKey(KeyCode.Alpha8); public KeyboardKey F2 => m_keyControllerMap[KeyCode.F2];
public KeyboardKey Alpha9 { get; private set; } = new KeyboardKey(KeyCode.Alpha9); public KeyboardKey F3 => m_keyControllerMap[KeyCode.F3];
public KeyboardKey F4 => m_keyControllerMap[KeyCode.F4];
// 功能键 F1-F15 public KeyboardKey F5 => m_keyControllerMap[KeyCode.F5];
public KeyboardKey F1 { get; private set; } = new KeyboardKey(KeyCode.F1); public KeyboardKey F6 => m_keyControllerMap[KeyCode.F6];
public KeyboardKey F2 { get; private set; } = new KeyboardKey(KeyCode.F2); public KeyboardKey F7 => m_keyControllerMap[KeyCode.F7];
public KeyboardKey F3 { get; private set; } = new KeyboardKey(KeyCode.F3); public KeyboardKey F8 => m_keyControllerMap[KeyCode.F8];
public KeyboardKey F4 { get; private set; } = new KeyboardKey(KeyCode.F4); public KeyboardKey F9 => m_keyControllerMap[KeyCode.F9];
public KeyboardKey F5 { get; private set; } = new KeyboardKey(KeyCode.F5); public KeyboardKey F10 => m_keyControllerMap[KeyCode.F10];
public KeyboardKey F6 { get; private set; } = new KeyboardKey(KeyCode.F6); public KeyboardKey F11 => m_keyControllerMap[KeyCode.F11];
public KeyboardKey F7 { get; private set; } = new KeyboardKey(KeyCode.F7); public KeyboardKey F12 => m_keyControllerMap[KeyCode.F12];
public KeyboardKey F8 { get; private set; } = new KeyboardKey(KeyCode.F8); public KeyboardKey F13 => m_keyControllerMap[KeyCode.F13];
public KeyboardKey F9 { get; private set; } = new KeyboardKey(KeyCode.F9); public KeyboardKey F14 => m_keyControllerMap[KeyCode.F14];
public KeyboardKey F10 { get; private set; } = new KeyboardKey(KeyCode.F10); public KeyboardKey F15 => m_keyControllerMap[KeyCode.F15];
public KeyboardKey F11 { get; private set; } = new KeyboardKey(KeyCode.F11); public KeyboardKey UpArrow => m_keyControllerMap[KeyCode.UpArrow];
public KeyboardKey F12 { get; private set; } = new KeyboardKey(KeyCode.F12); public KeyboardKey DownArrow => m_keyControllerMap[KeyCode.DownArrow];
public KeyboardKey F13 { get; private set; } = new KeyboardKey(KeyCode.F13); public KeyboardKey LeftArrow => m_keyControllerMap[KeyCode.LeftArrow];
public KeyboardKey F14 { get; private set; } = new KeyboardKey(KeyCode.F14); public KeyboardKey RightArrow => m_keyControllerMap[KeyCode.RightArrow];
public KeyboardKey F15 { get; private set; } = new KeyboardKey(KeyCode.F15); public KeyboardKey Space => m_keyControllerMap[KeyCode.Space];
public KeyboardKey Return => m_keyControllerMap[KeyCode.Return];
// 方向键 public KeyboardKey Escape => m_keyControllerMap[KeyCode.Escape];
public KeyboardKey UpArrow { get; private set; } = new KeyboardKey(KeyCode.UpArrow); public KeyboardKey Tab => m_keyControllerMap[KeyCode.Tab];
public KeyboardKey DownArrow { get; private set; } = new KeyboardKey(KeyCode.DownArrow); public KeyboardKey Backspace => m_keyControllerMap[KeyCode.Backspace];
public KeyboardKey LeftArrow { get; private set; } = new KeyboardKey(KeyCode.LeftArrow); public KeyboardKey CapsLock => m_keyControllerMap[KeyCode.CapsLock];
public KeyboardKey RightArrow { get; private set; } = new KeyboardKey(KeyCode.RightArrow); public KeyboardKey LeftShift => m_keyControllerMap[KeyCode.LeftShift];
public KeyboardKey RightShift => m_keyControllerMap[KeyCode.RightShift];
// 控制键 public KeyboardKey LeftControl => m_keyControllerMap[KeyCode.LeftControl];
public KeyboardKey Space { get; private set; } = new KeyboardKey(KeyCode.Space); public KeyboardKey RightControl => m_keyControllerMap[KeyCode.RightControl];
public KeyboardKey Return { get; private set; } = new KeyboardKey(KeyCode.Return); public KeyboardKey LeftAlt => m_keyControllerMap[KeyCode.LeftAlt];
public KeyboardKey Escape { get; private set; } = new KeyboardKey(KeyCode.Escape); public KeyboardKey RightAlt => m_keyControllerMap[KeyCode.RightAlt];
public KeyboardKey Tab { get; private set; } = new KeyboardKey(KeyCode.Tab); public KeyboardKey LeftCommand => m_keyControllerMap[KeyCode.LeftCommand];
/// <summary> public KeyboardKey RightCommand => m_keyControllerMap[KeyCode.RightCommand];
/// <img src="./test.png" alt="test"/> public KeyboardKey Menu => m_keyControllerMap[KeyCode.Menu];
/// </summary> public KeyboardKey Comma => m_keyControllerMap[KeyCode.Comma];
public KeyboardKey Backspace { get; private set; } = new KeyboardKey(KeyCode.Backspace); public KeyboardKey Period => m_keyControllerMap[KeyCode.Period];
public KeyboardKey CapsLock { get; private set; } = new KeyboardKey(KeyCode.CapsLock); public KeyboardKey Slash => m_keyControllerMap[KeyCode.Slash];
public KeyboardKey LeftShift { get; private set; } = new KeyboardKey(KeyCode.LeftShift); public KeyboardKey BackQuote => m_keyControllerMap[KeyCode.BackQuote];
public KeyboardKey RightShift { get; private set; } = new KeyboardKey(KeyCode.RightShift); public KeyboardKey Quote => m_keyControllerMap[KeyCode.Quote];
public KeyboardKey LeftControl { get; private set; } = new KeyboardKey(KeyCode.LeftControl); public KeyboardKey Semicolon => m_keyControllerMap[KeyCode.Semicolon];
public KeyboardKey RightControl { get; private set; } = new KeyboardKey(KeyCode.RightControl); public KeyboardKey LeftBracket => m_keyControllerMap[KeyCode.LeftBracket];
public KeyboardKey LeftAlt { get; private set; } = new KeyboardKey(KeyCode.LeftAlt); public KeyboardKey RightBracket => m_keyControllerMap[KeyCode.RightBracket];
public KeyboardKey RightAlt { get; private set; } = new KeyboardKey(KeyCode.RightAlt); public KeyboardKey Backslash => m_keyControllerMap[KeyCode.Backslash];
public KeyboardKey LeftCommand { get; private set; } = new KeyboardKey(KeyCode.LeftCommand); public KeyboardKey Minus => m_keyControllerMap[KeyCode.Minus];
public KeyboardKey RightCommand { get; private set; } = new KeyboardKey(KeyCode.RightCommand); public KeyboardKey Equals_k => m_keyControllerMap[KeyCode.Equals];
public KeyboardKey Menu { get; private set; } = new KeyboardKey(KeyCode.Menu); public KeyboardKey Tilde => m_keyControllerMap[KeyCode.Tilde];
public KeyboardKey Keypad0 => m_keyControllerMap[KeyCode.Keypad0];
// 符号键 public KeyboardKey Keypad1 => m_keyControllerMap[KeyCode.Keypad1];
public KeyboardKey Comma { get; private set; } = new KeyboardKey(KeyCode.Comma); public KeyboardKey Keypad2 => m_keyControllerMap[KeyCode.Keypad2];
public KeyboardKey Period { get; private set; } = new KeyboardKey(KeyCode.Period); public KeyboardKey Keypad3 => m_keyControllerMap[KeyCode.Keypad3];
public KeyboardKey Slash { get; private set; } = new KeyboardKey(KeyCode.Slash); public KeyboardKey Keypad4 => m_keyControllerMap[KeyCode.Keypad4];
public KeyboardKey BackQuote { get; private set; } = new KeyboardKey(KeyCode.BackQuote); public KeyboardKey Keypad5 => m_keyControllerMap[KeyCode.Keypad5];
public KeyboardKey Quote { get; private set; } = new KeyboardKey(KeyCode.Quote); public KeyboardKey Keypad6 => m_keyControllerMap[KeyCode.Keypad6];
public KeyboardKey Semicolon { get; private set; } = new KeyboardKey(KeyCode.Semicolon); public KeyboardKey Keypad7 => m_keyControllerMap[KeyCode.Keypad7];
public KeyboardKey LeftBracket { get; private set; } = new KeyboardKey(KeyCode.LeftBracket); public KeyboardKey Keypad8 => m_keyControllerMap[KeyCode.Keypad8];
public KeyboardKey RightBracket { get; private set; } = new KeyboardKey(KeyCode.RightBracket); public KeyboardKey Keypad9 => m_keyControllerMap[KeyCode.Keypad9];
public KeyboardKey Backslash { get; private set; } = new KeyboardKey(KeyCode.Backslash); public KeyboardKey KeypadPeriod => m_keyControllerMap[KeyCode.KeypadPeriod];
public KeyboardKey Minus { get; private set; } = new KeyboardKey(KeyCode.Minus); public KeyboardKey KeypadDivide => m_keyControllerMap[KeyCode.KeypadDivide];
public KeyboardKey Equals_k { get; private set; } = new KeyboardKey(KeyCode.Equals); public KeyboardKey KeypadMultiply => m_keyControllerMap[KeyCode.KeypadMultiply];
public KeyboardKey Tilde { get; private set; } = new KeyboardKey(KeyCode.Tilde); public KeyboardKey KeypadMinus => m_keyControllerMap[KeyCode.KeypadMinus];
public KeyboardKey KeypadPlus => m_keyControllerMap[KeyCode.KeypadPlus];
// 小键盘 public KeyboardKey KeypadEnter => m_keyControllerMap[KeyCode.KeypadEnter];
public KeyboardKey Keypad0 { get; private set; } = new KeyboardKey(KeyCode.Keypad0); public KeyboardKey Numlock => m_keyControllerMap[KeyCode.Numlock];
public KeyboardKey Keypad1 { get; private set; } = new KeyboardKey(KeyCode.Keypad1); public KeyboardKey Print => m_keyControllerMap[KeyCode.Print];
public KeyboardKey Keypad2 { get; private set; } = new KeyboardKey(KeyCode.Keypad2); public KeyboardKey Insert => m_keyControllerMap[KeyCode.Insert];
public KeyboardKey Keypad3 { get; private set; } = new KeyboardKey(KeyCode.Keypad3); public KeyboardKey Delete => m_keyControllerMap[KeyCode.Delete];
public KeyboardKey Keypad4 { get; private set; } = new KeyboardKey(KeyCode.Keypad4); public KeyboardKey Home => m_keyControllerMap[KeyCode.Home];
public KeyboardKey Keypad5 { get; private set; } = new KeyboardKey(KeyCode.Keypad5); public KeyboardKey End => m_keyControllerMap[KeyCode.End];
public KeyboardKey Keypad6 { get; private set; } = new KeyboardKey(KeyCode.Keypad6); public KeyboardKey PageUp => m_keyControllerMap[KeyCode.PageUp];
public KeyboardKey Keypad7 { get; private set; } = new KeyboardKey(KeyCode.Keypad7); public KeyboardKey PageDown => m_keyControllerMap[KeyCode.PageDown];
public KeyboardKey Keypad8 { get; private set; } = new KeyboardKey(KeyCode.Keypad8); public KeyboardKey Pause => m_keyControllerMap[KeyCode.Pause];
public KeyboardKey Keypad9 { get; private set; } = new KeyboardKey(KeyCode.Keypad9); public KeyboardKey ScrollLock => m_keyControllerMap[KeyCode.ScrollLock];
public KeyboardKey KeypadPeriod { get; private set; } = new KeyboardKey(KeyCode.KeypadPeriod); public KeyboardKey Clear => m_keyControllerMap[KeyCode.Clear];
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);
} }
#endregion #endregion
} }