using System; using OpenTK.Input; namespace ClassicalSharp.Hotkeys { /// Maps LWJGL keycodes to OpenTK keys. public static class LwjglToKey { public static Key[] Map = new Key[256]; static int curIndex = 0; static void Add( Key key ) { Map[curIndex++] = key; } static void Add( string value ) { for( int i = 0; i < value.Length; i++ ) { Add( (Key)(value[i] - 'A' + (int)Key.A) ); } } static void Skip( int amount ) { curIndex += amount; } static LwjglToKey() { Add( Key.Unknown ); Add( Key.Escape ); for( int i = 0; i < 9; i++ ) Add( (Key)(i + Key.Number1) ); Add( Key.Number0 ); Add( Key.Minus ); Add( Key.Plus ); Add( Key.BackSpace ); Add( Key.Tab ); Add( "QWERTYUIOP" ); Add( Key.BracketLeft ); Add( Key.BracketRight ); Add( Key.Enter ); Add( Key.ControlLeft ); Add( "ASDFGHJKL" ); Add( Key.Semicolon ); Add( Key.Quote ); Add( Key.Tilde ); Add( Key.ShiftLeft ); Add( Key.BackSlash ); Add( "ZXCVBNM" ); Add( Key.Comma ); Add( Key.Period ); Add( Key.Slash ); Add( Key.ShiftRight ); Skip( 1 ); // TODO: multiply Add( Key.AltLeft ); Add( Key.Space ); Add( Key.CapsLock ); for( int i = 0; i < 10; i++ ) Add( (Key)(i + Key.F1) ); Add( Key.NumLock ); Add( Key.ScrollLock ); Add( Key.Number7 ); Add( Key.Number8 ); Add( Key.Number9 ); Add( Key.KeypadSubtract ); Add( Key.Number4 ); Add( Key.Number5 ); Add( Key.Number6 ); Add( Key.KeypadAdd ); Add( Key.Number1 ); Add( Key.Number2 ); Add( Key.Number3 ); Add( Key.Number0 ); Add( Key.KeypadDecimal ); Skip( 3 ); Add( Key.F11 ); Add( Key.F12 ); Skip( 11 ); for( int i = 0; i < 6; i++ ) Add( (Key)(i + Key.F13) ); Skip( 35 ); Add( Key.KeypadAdd ); Skip( 14 ); Add( Key.KeypadEnter ); Add( Key.ControlRight ); Skip( 23 ); Add( Key.KeypadDivide ); Skip( 2 ); Add( Key.AltRight ); Skip( 12 ); Add( Key.Pause ); Skip( 1 ); Add( Key.Home ); Add( Key.Up ); Add( Key.PageUp ); Skip( 1 ); Add( Key.Left ); Skip( 1 ); Add( Key.Right ); Skip( 1 ); Add( Key.End ); Add( Key.Down ); Add( Key.PageDown ); Add( Key.Insert ); Add( Key.Delete ); Skip( 7 ); Add( Key.WinLeft ); Add( Key.WinRight ); } } }