74 lines
2.1 KiB
C#

// Copyright 2014-2017 ClassicalSharp | Licensed under BSD-3
using System;
using OpenTK.Input;
namespace ClassicalSharp.Hotkeys {
/// <summary> Maps LWJGL keycodes to OpenTK keys. </summary>
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.Keypad7); Add(Key.Keypad8);
Add(Key.Keypad9); Add(Key.KeypadSubtract);
Add(Key.Keypad4); Add(Key.Keypad5);
Add(Key.Keypad6); Add(Key.KeypadAdd);
Add(Key.Keypad1); Add(Key.Keypad2);
Add(Key.Keypad3); Add(Key.Keypad0);
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);
}
}
}