211 lines
12 KiB
C#
211 lines
12 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using UnityEngine;
|
|
|
|
namespace AxibugEmuOnline.Client.InputDevices
|
|
{
|
|
/// <summary>
|
|
/// 通用键盘设备
|
|
/// </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, this) as InputControl);
|
|
foreach (KeyboardKey key in keys)
|
|
{
|
|
m_keyControllerMap[key.m_keycode] = key;
|
|
}
|
|
return keys;
|
|
}
|
|
|
|
public class KeyboardKey : InputControl
|
|
{
|
|
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);
|
|
|
|
internal KeyboardKey(KeyCode listenKey, KeyBoard keyboard)
|
|
: base(keyboard)
|
|
{
|
|
m_keycode = listenKey;
|
|
}
|
|
|
|
public override string ControlName => m_keycode.ToString();
|
|
|
|
public override Vector2 GetVector2()
|
|
{
|
|
return default(Vector2);
|
|
}
|
|
|
|
public override float GetFlaot()
|
|
{
|
|
return Performing ? 1 : 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
#region HardCodeForKeyboard
|
|
public partial class KeyBoard : InputDevice
|
|
{
|
|
static readonly List<KeyCode> s_keyboardKeys = new List<KeyCode>
|
|
{
|
|
// 字母键 A-Z
|
|
KeyCode.A, KeyCode.B, KeyCode.C, KeyCode.D, KeyCode.E, KeyCode.F, KeyCode.G,
|
|
KeyCode.H, KeyCode.I, KeyCode.J, KeyCode.K, KeyCode.L, KeyCode.M, KeyCode.N,
|
|
KeyCode.O, KeyCode.P, KeyCode.Q, KeyCode.R, KeyCode.S, KeyCode.T, KeyCode.U,
|
|
KeyCode.V, KeyCode.W, KeyCode.X, KeyCode.Y, KeyCode.Z,
|
|
|
|
// 数字键 0-9
|
|
KeyCode.Alpha0, KeyCode.Alpha1, KeyCode.Alpha2, KeyCode.Alpha3, KeyCode.Alpha4,
|
|
KeyCode.Alpha5, KeyCode.Alpha6, KeyCode.Alpha7, KeyCode.Alpha8, KeyCode.Alpha9,
|
|
|
|
// 功能键 F1-F15
|
|
KeyCode.F1, KeyCode.F2, KeyCode.F3, KeyCode.F4, KeyCode.F5, KeyCode.F6,
|
|
KeyCode.F7, KeyCode.F8, KeyCode.F9, KeyCode.F10, KeyCode.F11, KeyCode.F12,
|
|
KeyCode.F13, KeyCode.F14, KeyCode.F15,
|
|
|
|
// 方向键
|
|
KeyCode.UpArrow, KeyCode.DownArrow, KeyCode.LeftArrow, KeyCode.RightArrow,
|
|
|
|
// 控制键
|
|
KeyCode.Space, KeyCode.Return, KeyCode.Escape, KeyCode.Tab, KeyCode.Backspace,
|
|
KeyCode.CapsLock, KeyCode.LeftShift, KeyCode.RightShift, KeyCode.LeftControl,
|
|
KeyCode.RightControl, KeyCode.LeftAlt, KeyCode.RightAlt, KeyCode.LeftCommand,
|
|
KeyCode.RightCommand, KeyCode.Menu,
|
|
|
|
// 符号键
|
|
KeyCode.Comma, KeyCode.Period, KeyCode.Slash, KeyCode.BackQuote, KeyCode.Quote,
|
|
KeyCode.Semicolon, KeyCode.LeftBracket, KeyCode.RightBracket, KeyCode.Backslash,
|
|
KeyCode.Minus, KeyCode.Equals, KeyCode.Tilde,
|
|
|
|
// 小键盘
|
|
KeyCode.Keypad0, KeyCode.Keypad1, KeyCode.Keypad2, KeyCode.Keypad3, KeyCode.Keypad4,
|
|
KeyCode.Keypad5, KeyCode.Keypad6, KeyCode.Keypad7, KeyCode.Keypad8, KeyCode.Keypad9,
|
|
KeyCode.KeypadPeriod, KeyCode.KeypadDivide, KeyCode.KeypadMultiply,
|
|
KeyCode.KeypadMinus, KeyCode.KeypadPlus, KeyCode.KeypadEnter, KeyCode.Numlock,
|
|
|
|
// 其他标准键
|
|
KeyCode.Print, KeyCode.Insert, KeyCode.Delete, KeyCode.Home,
|
|
KeyCode.End, KeyCode.PageUp, KeyCode.PageDown, KeyCode.Pause, KeyCode.ScrollLock,
|
|
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
|
|
} |