Files
EHS/src/io/hid/Keyboard.cpp

508 lines
12 KiB
C++

#include "ehs/io/hid/Keyboard.h"
namespace ehs
{
Keyboard::Keyboard()
{
}
Keyboard::Keyboard(Str_8 name, const UInt_64 id)
: HID(EHS_HID_KEYBOARD, (Str_8 &&)name, id)
{
}
Keyboard::Keyboard(const Keyboard& hid)
: HID(hid)
{
}
Keyboard& Keyboard::operator=(const Keyboard& hid)
{
if (this == &hid)
return *this;
HID::operator=(hid);
return *this;
}
void Keyboard::Poll(const float delta)
{
HID::Poll(delta);
}
Keyboard* Keyboard::Clone() const
{
return new Keyboard(*this);
}
const Button Keyboard::Unknown("Unknown");
const Button Keyboard::Escape("Escape Button");
const Button Keyboard::Backspace("Backspace Button");
const Button Keyboard::Enter("Enter Button");
const Button Keyboard::LShift("Left Shift Button");
const Button Keyboard::RShift("Right Shift Button");
const Button Keyboard::LAlt("Left Alt Button");
const Button Keyboard::RAlt("Right Alt Button");
const Button Keyboard::LCtrl("Left Control Button");
const Button Keyboard::RCtrl("Right Control Button");
const Button Keyboard::Space("Space Button");
const Button Keyboard::A("A Button");
const Button Keyboard::B("B Button");
const Button Keyboard::C("C Button");
const Button Keyboard::D("D Button");
const Button Keyboard::E("E Button");
const Button Keyboard::F("F Button");
const Button Keyboard::G("G Button");
const Button Keyboard::H("H Button");
const Button Keyboard::I("I Button");
const Button Keyboard::J("J Button");
const Button Keyboard::K("K Button");
const Button Keyboard::L("L Button");
const Button Keyboard::M("M Button");
const Button Keyboard::N("N Button");
const Button Keyboard::O("O Button");
const Button Keyboard::P("P Button");
const Button Keyboard::Q("Q Button");
const Button Keyboard::R("R Button");
const Button Keyboard::S("S Button");
const Button Keyboard::T("T Button");
const Button Keyboard::U("U Button");
const Button Keyboard::V("V Button");
const Button Keyboard::W("W Button");
const Button Keyboard::X("X Button");
const Button Keyboard::Y("Y Button");
const Button Keyboard::Z("Z Button");
const Button Keyboard::One("One Button");
const Button Keyboard::Two("Two Button");
const Button Keyboard::Three("Three Button");
const Button Keyboard::Four("Four Button");
const Button Keyboard::Five("Five Button");
const Button Keyboard::Six("Six Button");
const Button Keyboard::Seven("Seven Button");
const Button Keyboard::Eight("Eight Button");
const Button Keyboard::Nine("Nine Button");
const Button Keyboard::Zero("Zero Button");
const Button Keyboard::Equals("Equals Button");
const Button Keyboard::Minus("Minus Button");
const Button Keyboard::Tilde("Tilde Button");
const Button Keyboard::BackSlash("Back Slash Button");
const Button Keyboard::LeftSquareBracket("Left Square Bracket Button");
const Button Keyboard::RightSquareBracket("Right Square Bracket Button");
const Button Keyboard::SemiColon("Semi-Colon Button");
const Button Keyboard::Apostrophe("Apostrophe Button");
const Button Keyboard::Comma("Comma Button");
const Button Keyboard::Period("Period Button");
const Button Keyboard::ForwardSlash("Forward Slash Button");
const Button Keyboard::F1("Function 1 Button");
const Button Keyboard::F2("Function 2 Button");
const Button Keyboard::F3("Function 3 Button");
const Button Keyboard::F4("Function 4 Button");
const Button Keyboard::F5("Function 5 Button");
const Button Keyboard::F6("Function 6 Button");
const Button Keyboard::F7("Function 7 Button");
const Button Keyboard::F8("Function 8 Button");
const Button Keyboard::F9("Function 9 Button");
const Button Keyboard::F10("Function 10 Button");
const Button Keyboard::F11("Function 11 Button");
const Button Keyboard::F12("Function 12 Button");
const Button Keyboard::F13("Function 13 Button");
const Button Keyboard::F14("Function 14 Button");
const Button Keyboard::F15("Function 15 Button");
const Button Keyboard::F16("Function 16 Button");
const Button Keyboard::F17("Function 17 Button");
const Button Keyboard::F18("Function 18 Button");
const Button Keyboard::F19("Function 19 Button");
const Button Keyboard::F20("Function 20 Button");
const Button Keyboard::F21("Function 21 Button");
const Button Keyboard::F22("Function 22 Button");
const Button Keyboard::F23("Function 23 Button");
const Button Keyboard::F24("Function 24 Button");
const Button Keyboard::Left("Left Arrow Button");
const Button Keyboard::Right("Right Arrow Button");
const Button Keyboard::Up("Up Arrow Button");
const Button Keyboard::Down("Down Arrow Button");
Button Keyboard::TranslateScanCode(const UInt_32 code)
{
switch (code)
{
case 1:
return Keyboard::Escape;
case 14:
return Keyboard::Backspace;
case 28:
return Keyboard::Enter;
case 0x2A:
return Keyboard::LShift;
case 0x36:
return Keyboard::RShift;
case 56:
return Keyboard::LAlt;
case 100:
return Keyboard::RAlt;
case 29:
return Keyboard::LCtrl;
case 97:
return Keyboard::RCtrl;
case 57:
return Keyboard::Space;
case 30:
return Keyboard::A;
case 48:
return Keyboard::B;
case 46:
return Keyboard::C;
case 32:
return Keyboard::D;
case 18:
return Keyboard::E;
case 33:
return Keyboard::F;
case 34:
return Keyboard::G;
case 35:
return Keyboard::H;
case 23:
return Keyboard::I;
case 36:
return Keyboard::J;
case 37:
return Keyboard::K;
case 38:
return Keyboard::L;
case 50:
return Keyboard::M;
case 49:
return Keyboard::N;
case 24:
return Keyboard::O;
case 25:
return Keyboard::P;
case 16:
return Keyboard::Q;
case 19:
return Keyboard::R;
case 31:
return Keyboard::S;
case 20:
return Keyboard::T;
case 22:
return Keyboard::U;
case 47:
return Keyboard::V;
case 17:
return Keyboard::W;
case 45:
return Keyboard::X;
case 21:
return Keyboard::Y;
case 44:
return Keyboard::Z;
case 2:
return Keyboard::One;
case 3:
return Keyboard::Two;
case 4:
return Keyboard::Three;
case 5:
return Keyboard::Four;
case 6:
return Keyboard::Five;
case 7:
return Keyboard::Six;
case 8:
return Keyboard::Seven;
case 9:
return Keyboard::Eight;
case 10:
return Keyboard::Nine;
case 11:
return Keyboard::Zero;
case 12:
return Keyboard::Minus;
case 13:
return Keyboard::Equals;
case 41:
return Keyboard::Tilde;
case 43:
return Keyboard::BackSlash;
case 26:
return Keyboard::LeftSquareBracket;
case 27:
return Keyboard::RightSquareBracket;
case 39:
return Keyboard::SemiColon;
case 40:
return Keyboard::Apostrophe;
case 51:
return Keyboard::Comma;
case 52:
return Keyboard::Period;
case 53:
return Keyboard::ForwardSlash;
case 59:
return Keyboard::F1;
case 60:
return Keyboard::F2;
case 61:
return Keyboard::F3;
case 62:
return Keyboard::F4;
case 63:
return Keyboard::F5;
case 64:
return Keyboard::F6;
case 65:
return Keyboard::F7;
case 66:
return Keyboard::F8;
case 67:
return Keyboard::F9;
case 68:
return Keyboard::F10;
case 69:
return Keyboard::F11;
case 70:
return Keyboard::F12;
case 71:
return Keyboard::F13;
case 72:
return Keyboard::Up;
case 73:
return Keyboard::F15;
case 74:
return Keyboard::F16;
case 75:
return Keyboard::Left;
case 76:
return Keyboard::F18;
case 77:
return Keyboard::Right;
case 78:
return Keyboard::F20;
case 79:
return Keyboard::F21;
case 80:
return Keyboard::Down;
case 81:
return Keyboard::F23;
case 82:
return Keyboard::F24;
case 105:
return Keyboard::Left;
case 106:
return Keyboard::Right;
case 103:
return Keyboard::Up;
case 108:
return Keyboard::Down;
default:
return Keyboard::Unknown;
}
}
Char_8 Keyboard::TranslateToEnglish_8(const bool shifted, const Button& button)
{
if (shifted)
{
if (button == A)
return 'A';
else if (button == B)
return 'B';
else if (button == C)
return 'C';
else if (button == D)
return 'D';
else if (button == E)
return 'E';
else if (button == F)
return 'F';
else if (button == G)
return 'G';
else if (button == H)
return 'H';
else if (button == I)
return 'I';
else if (button == J)
return 'J';
else if (button == K)
return 'K';
else if (button == L)
return 'L';
else if (button == M)
return 'M';
else if (button == N)
return 'N';
else if (button == O)
return 'O';
else if (button == P)
return 'P';
else if (button == Q)
return 'Q';
else if (button == Q)
return 'R';
else if (button == S)
return 'S';
else if (button == T)
return 'T';
else if (button == U)
return 'U';
else if (button == V)
return 'V';
else if (button == W)
return 'W';
else if (button == X)
return 'X';
else if (button == Y)
return 'Y';
else if (button == Z)
return 'Z';
else if (button == Two)
return '@';
else if (button == Three)
return '#';
else if (button == Four)
return '$';
else if (button == Five)
return '%';
else if (button == Six)
return '^';
else if (button == Seven)
return '&';
else if (button == Eight)
return '*';
else if (button == Nine)
return '(';
else if (button == Zero)
return ')';
else if (button == One)
return '!';
else if (button == Minus)
return '_';
else if (button == Equals)
return '+';
else if (button == Tilde)
return '~';
else if (button == BackSlash)
return '|';
else if (button == LeftSquareBracket)
return '{';
else if (button == RightSquareBracket)
return '}';
else if (button == SemiColon)
return ':';
else if (button == Apostrophe)
return '"';
else if (button == Comma)
return '<';
else if (button == Period)
return '>';
else if (button == ForwardSlash)
return '?';
}
else
{
if (button == A)
return 'a';
else if (button == B)
return 'b';
else if (button == C)
return 'c';
else if (button == D)
return 'd';
else if (button == E)
return 'e';
else if (button == F)
return 'f';
else if (button == G)
return 'g';
else if (button == H)
return 'h';
else if (button == I)
return 'i';
else if (button == J)
return 'j';
else if (button == K)
return 'k';
else if (button == L)
return 'l';
else if (button == M)
return 'm';
else if (button == N)
return 'n';
else if (button == O)
return 'o';
else if (button == P)
return 'p';
else if (button == Q)
return 'q';
else if (button == R)
return 'r';
else if (button == S)
return 's';
else if (button == T)
return 't';
else if (button == U)
return 'u';
else if (button == V)
return 'v';
else if (button == W)
return 'w';
else if (button == X)
return 'x';
else if (button == Y)
return 'y';
else if (button == Z)
return 'z';
else if (button == One)
return '1';
else if (button == Two)
return '2';
else if (button == Three)
return '3';
else if (button == Four)
return '4';
else if (button == Five)
return '5';
else if (button == Six)
return '6';
else if (button == Seven)
return '7';
else if (button == Eight)
return '8';
else if (button == Nine)
return '9';
else if (button == Zero)
return '0';
else if (button == Minus)
return '-';
else if (button == Equals)
return '=';
else if (button == Tilde)
return '`';
else if (button == BackSlash)
return '\\';
else if (button == LeftSquareBracket)
return '[';
else if (button == RightSquareBracket)
return ']';
else if (button == SemiColon)
return ';';
else if (button == Apostrophe)
return '\'';
else if (button == Comma)
return ',';
else if (button == Period)
return '.';
else if (button == ForwardSlash)
return '/';
}
if (button == Space)
return ' ';
else
return 0x00;
}
}