[Mac] Optimized MacOSKeyCode translation

This also reduces memory allocations on startup by ~10K.
This commit is contained in:
thefiddler 2014-04-02 10:33:06 +02:00
parent 4ae65c86ff
commit 9f39aa1b88
2 changed files with 1363 additions and 118 deletions

File diff suppressed because it is too large Load diff

View file

@ -36,127 +36,229 @@ namespace OpenTK.Platform.MacOS
using Carbon; using Carbon;
using Input; using Input;
class MacOSKeyMap : Dictionary<MacOSKeyCode, Key> class MacOSKeyMap
{ {
public MacOSKeyMap() public static Key GetKey(MacOSKeyCode code)
{ {
// comments indicate members of the Key enum that are missing // comments indicate members of the Key enum that are missing
switch (code)
Add(MacOSKeyCode.A, Key.A); {
Add(MacOSKeyCode.OptionAlt, Key.AltLeft); case MacOSKeyCode.A:
return Key.A;
case MacOSKeyCode.OptionAlt:
return Key.AltLeft;
// AltRight // AltRight
Add(MacOSKeyCode.B, Key.B); case MacOSKeyCode.B:
return Key.B;
Add(MacOSKeyCode.Backslash, Key.BackSlash); case MacOSKeyCode.Backslash:
Add(MacOSKeyCode.Backspace, Key.BackSpace); return Key.BackSlash;
Add(MacOSKeyCode.BracketLeft, Key.BracketLeft); case MacOSKeyCode.Backspace:
Add(MacOSKeyCode.BracketRight, Key.BracketRight); return Key.BackSpace;
Add(MacOSKeyCode.C, Key.C); case MacOSKeyCode.BracketLeft:
return Key.BracketLeft;
case MacOSKeyCode.BracketRight:
return Key.BracketRight;
case MacOSKeyCode.C:
return Key.C;
// Capslock // Capslock
// Clear // Clear
Add(MacOSKeyCode.Comma, Key.Comma); case MacOSKeyCode.Comma:
Add(MacOSKeyCode.Control, Key.ControlLeft); return Key.Comma;
case MacOSKeyCode.Control:
return Key.ControlLeft;
// ControlRight // ControlRight
Add(MacOSKeyCode.D, Key.D); case MacOSKeyCode.D:
Add(MacOSKeyCode.Del, Key.Delete); return Key.D;
Add(MacOSKeyCode.Down, Key.Down); case MacOSKeyCode.Del:
Add(MacOSKeyCode.E, Key.E); return Key.Delete;
Add(MacOSKeyCode.End, Key.End); case MacOSKeyCode.Down:
Add(MacOSKeyCode.Enter, Key.Enter); return Key.Down;
Add(MacOSKeyCode.Return, Key.Enter); case MacOSKeyCode.E:
Add(MacOSKeyCode.Esc, Key.Escape); return Key.E;
Add(MacOSKeyCode.F, Key.F); case MacOSKeyCode.End:
Add(MacOSKeyCode.F1, Key.F1); return Key.End;
Add(MacOSKeyCode.F2, Key.F2); case MacOSKeyCode.Enter:
Add(MacOSKeyCode.F3, Key.F3); return Key.Enter;
Add(MacOSKeyCode.F4, Key.F4); case MacOSKeyCode.Return:
Add(MacOSKeyCode.F5, Key.F5); return Key.Enter;
Add(MacOSKeyCode.F6, Key.F6); case MacOSKeyCode.Esc:
Add(MacOSKeyCode.F7, Key.F7); return Key.Escape;
Add(MacOSKeyCode.F8, Key.F8); case MacOSKeyCode.F:
Add(MacOSKeyCode.F9, Key.F9); return Key.F;
Add(MacOSKeyCode.F10, Key.F10); case MacOSKeyCode.F1:
Add(MacOSKeyCode.F11, Key.F11); return Key.F1;
Add(MacOSKeyCode.F12, Key.F12); case MacOSKeyCode.F2:
Add(MacOSKeyCode.F13, Key.F13); return Key.F2;
Add(MacOSKeyCode.F14, Key.F14); case MacOSKeyCode.F3:
Add(MacOSKeyCode.F15, Key.F15); return Key.F3;
case MacOSKeyCode.F4:
return Key.F4;
case MacOSKeyCode.F5:
return Key.F5;
case MacOSKeyCode.F6:
return Key.F6;
case MacOSKeyCode.F7:
return Key.F7;
case MacOSKeyCode.F8:
return Key.F8;
case MacOSKeyCode.F9:
return Key.F9;
case MacOSKeyCode.F10:
return Key.F10;
case MacOSKeyCode.F11:
return Key.F11;
case MacOSKeyCode.F12:
return Key.F12;
case MacOSKeyCode.F13:
return Key.F13;
case MacOSKeyCode.F14:
return Key.F14;
case MacOSKeyCode.F15:
return Key.F15;
// F16-F35 // F16-F35
Add(MacOSKeyCode.G, Key.G); case MacOSKeyCode.G:
Add(MacOSKeyCode.H, Key.H); return Key.G;
Add(MacOSKeyCode.Home, Key.Home); case MacOSKeyCode.H:
Add(MacOSKeyCode.I, Key.I); return Key.H;
Add(MacOSKeyCode.Insert, Key.Insert); case MacOSKeyCode.Home:
Add(MacOSKeyCode.J, Key.J); return Key.Home;
Add(MacOSKeyCode.K, Key.K); case MacOSKeyCode.I:
Add(MacOSKeyCode.KeyPad_0, Key.Keypad0); return Key.I;
Add(MacOSKeyCode.KeyPad_1, Key.Keypad1); case MacOSKeyCode.Insert:
Add(MacOSKeyCode.KeyPad_2, Key.Keypad2); return Key.Insert;
Add(MacOSKeyCode.KeyPad_3, Key.Keypad3); case MacOSKeyCode.J:
Add(MacOSKeyCode.KeyPad_4, Key.Keypad4); return Key.J;
Add(MacOSKeyCode.KeyPad_5, Key.Keypad5); case MacOSKeyCode.K:
Add(MacOSKeyCode.KeyPad_6, Key.Keypad6); return Key.K;
Add(MacOSKeyCode.KeyPad_7, Key.Keypad7); case MacOSKeyCode.KeyPad_0:
Add(MacOSKeyCode.KeyPad_8, Key.Keypad8); return Key.Keypad0;
Add(MacOSKeyCode.KeyPad_9, Key.Keypad9); case MacOSKeyCode.KeyPad_1:
Add(MacOSKeyCode.KeyPad_Add, Key.KeypadAdd); return Key.Keypad1;
Add(MacOSKeyCode.KeyPad_Decimal, Key.KeypadDecimal); case MacOSKeyCode.KeyPad_2:
Add(MacOSKeyCode.KeyPad_Divide, Key.KeypadDivide); return Key.Keypad2;
Add(MacOSKeyCode.KeyPad_Enter, Key.KeypadEnter); case MacOSKeyCode.KeyPad_3:
Add(MacOSKeyCode.KeyPad_Multiply, Key.KeypadMultiply); return Key.Keypad3;
Add(MacOSKeyCode.KeyPad_Subtract, Key.KeypadSubtract); case MacOSKeyCode.KeyPad_4:
//Add(MacOSKeyCode.KeyPad_Equal); return Key.Keypad4;
Add(MacOSKeyCode.L, Key.L); case MacOSKeyCode.KeyPad_5:
Add(MacOSKeyCode.Left, Key.Left); return Key.Keypad5;
Add(MacOSKeyCode.M, Key.M); case MacOSKeyCode.KeyPad_6:
return Key.Keypad6;
case MacOSKeyCode.KeyPad_7:
return Key.Keypad7;
case MacOSKeyCode.KeyPad_8:
return Key.Keypad8;
case MacOSKeyCode.KeyPad_9:
return Key.Keypad9;
case MacOSKeyCode.KeyPad_Add:
return Key.KeypadAdd;
case MacOSKeyCode.KeyPad_Decimal:
return Key.KeypadDecimal;
case MacOSKeyCode.KeyPad_Divide:
return Key.KeypadDivide;
case MacOSKeyCode.KeyPad_Enter:
return Key.KeypadEnter;
case MacOSKeyCode.KeyPad_Multiply:
return Key.KeypadMultiply;
case MacOSKeyCode.KeyPad_Subtract:
return Key.KeypadSubtract;
//case MacOSKeyCode.KeyPad_Equal;
case MacOSKeyCode.L:
return Key.L;
case MacOSKeyCode.Left:
return Key.Left;
case MacOSKeyCode.M:
return Key.M;
//Key.MaxKeys //Key.MaxKeys
Add(MacOSKeyCode.Menu, Key.Menu); case MacOSKeyCode.Menu:
Add(MacOSKeyCode.Minus, Key.Minus); return Key.Menu;
Add(MacOSKeyCode.N, Key.N); case MacOSKeyCode.Minus:
Add(MacOSKeyCode.Key_0, Key.Number0); return Key.Minus;
Add(MacOSKeyCode.Key_1, Key.Number1); case MacOSKeyCode.N:
Add(MacOSKeyCode.Key_2, Key.Number2); return Key.N;
Add(MacOSKeyCode.Key_3, Key.Number3); case MacOSKeyCode.Key_0:
Add(MacOSKeyCode.Key_4, Key.Number4); return Key.Number0;
Add(MacOSKeyCode.Key_5, Key.Number5); case MacOSKeyCode.Key_1:
Add(MacOSKeyCode.Key_6, Key.Number6); return Key.Number1;
Add(MacOSKeyCode.Key_7, Key.Number7); case MacOSKeyCode.Key_2:
Add(MacOSKeyCode.Key_8, Key.Number8); return Key.Number2;
Add(MacOSKeyCode.Key_9, Key.Number9); case MacOSKeyCode.Key_3:
return Key.Number3;
case MacOSKeyCode.Key_4:
return Key.Number4;
case MacOSKeyCode.Key_5:
return Key.Number5;
case MacOSKeyCode.Key_6:
return Key.Number6;
case MacOSKeyCode.Key_7:
return Key.Number7;
case MacOSKeyCode.Key_8:
return Key.Number8;
case MacOSKeyCode.Key_9:
return Key.Number9;
// Numlock // Numlock
Add(MacOSKeyCode.O, Key.O); case MacOSKeyCode.O:
Add(MacOSKeyCode.P, Key.P); return Key.O;
Add(MacOSKeyCode.Pagedown, Key.PageDown); case MacOSKeyCode.P:
Add(MacOSKeyCode.Pageup, Key.PageUp); return Key.P;
case MacOSKeyCode.Pagedown:
return Key.PageDown;
case MacOSKeyCode.Pageup:
return Key.PageUp;
// Pause // Pause
Add(MacOSKeyCode.Period, Key.Period); case MacOSKeyCode.Period:
Add(MacOSKeyCode.Equals, Key.Plus); return Key.Period;
case MacOSKeyCode.Equals:
return Key.Plus;
// PrintScreen // PrintScreen
Add(MacOSKeyCode.Q, Key.Q); case MacOSKeyCode.Q:
Add(MacOSKeyCode.Quote, Key.Quote); return Key.Q;
Add(MacOSKeyCode.R, Key.R); case MacOSKeyCode.Quote:
Add(MacOSKeyCode.Right, Key.Right); return Key.Quote;
Add(MacOSKeyCode.S, Key.S); case MacOSKeyCode.R:
return Key.R;
case MacOSKeyCode.Right:
return Key.Right;
case MacOSKeyCode.S:
return Key.S;
// ScrollLock // ScrollLock
Add(MacOSKeyCode.Semicolon, Key.Semicolon); case MacOSKeyCode.Semicolon:
Add(MacOSKeyCode.Shift, Key.ShiftLeft); return Key.Semicolon;
case MacOSKeyCode.Shift:
return Key.ShiftLeft;
//Key.ShiftRight //Key.ShiftRight
Add(MacOSKeyCode.Slash, Key.Slash); case MacOSKeyCode.Slash:
return Key.Slash;
// Key.Sleep // Key.Sleep
Add(MacOSKeyCode.Space, Key.Space); case MacOSKeyCode.Space:
Add(MacOSKeyCode.T, Key.T); return Key.Space;
Add(MacOSKeyCode.Tab, Key.Tab); case MacOSKeyCode.T:
Add(MacOSKeyCode.Tilde, Key.Tilde); return Key.T;
Add(MacOSKeyCode.U, Key.U); case MacOSKeyCode.Tab:
Add(MacOSKeyCode.Up, Key.Up); return Key.Tab;
Add(MacOSKeyCode.V, Key.V); case MacOSKeyCode.Tilde:
Add(MacOSKeyCode.W, Key.W); return Key.Tilde;
Add(MacOSKeyCode.Command, Key.WinLeft); case MacOSKeyCode.U:
return Key.U;
case MacOSKeyCode.Up:
return Key.Up;
case MacOSKeyCode.V:
return Key.V;
case MacOSKeyCode.W:
return Key.W;
case MacOSKeyCode.Command:
return Key.WinLeft;
// WinKeyRight // WinKeyRight
Add(MacOSKeyCode.X, Key.X); case MacOSKeyCode.X:
Add(MacOSKeyCode.Y, Key.Y); return Key.X;
Add(MacOSKeyCode.Z, Key.Z); case MacOSKeyCode.Y:
return Key.Y;
case MacOSKeyCode.Z:
return Key.Z;
default:
return Key.Unknown;
}
} }
} }
} }