static void OnKeyUp(char key, GLUTWrapper.SpecialKey specialKey, GLUTWrapper.ModifierKey modifiers) { Noesis.Key noesisKey = GetNoesisKey(key, specialKey); if (noesisKey != Noesis.Key.None) { _view.KeyUp(noesisKey); } ProcessModifiers(modifiers); }
static Noesis.Key GetNoesisKey(char key, GLUTWrapper.SpecialKey specialKey) { switch (specialKey) { case GLUTWrapper.SpecialKey.F1: return(Noesis.Key.F1); case GLUTWrapper.SpecialKey.F2: return(Noesis.Key.F2); case GLUTWrapper.SpecialKey.F3: return(Noesis.Key.F3); case GLUTWrapper.SpecialKey.F4: return(Noesis.Key.F4); case GLUTWrapper.SpecialKey.F5: return(Noesis.Key.F5); case GLUTWrapper.SpecialKey.F6: return(Noesis.Key.F6); case GLUTWrapper.SpecialKey.F7: return(Noesis.Key.F7); case GLUTWrapper.SpecialKey.F8: return(Noesis.Key.F8); case GLUTWrapper.SpecialKey.F9: return(Noesis.Key.F9); case GLUTWrapper.SpecialKey.F10: return(Noesis.Key.F10); case GLUTWrapper.SpecialKey.F11: return(Noesis.Key.F11); case GLUTWrapper.SpecialKey.F12: return(Noesis.Key.F12); case GLUTWrapper.SpecialKey.PageUp: return(Noesis.Key.Prior); case GLUTWrapper.SpecialKey.PageDown: return(Noesis.Key.Next); case GLUTWrapper.SpecialKey.Home: return(Noesis.Key.Home); case GLUTWrapper.SpecialKey.End: return(Noesis.Key.End); case GLUTWrapper.SpecialKey.Insert: return(Noesis.Key.Insert); case GLUTWrapper.SpecialKey.Left: return(Noesis.Key.Left); case GLUTWrapper.SpecialKey.Right: return(Noesis.Key.Right); case GLUTWrapper.SpecialKey.Up: return(Noesis.Key.Up); case GLUTWrapper.SpecialKey.Down: return(Noesis.Key.Down); default: break; } switch (key) { case '\n': case '\r': return(Noesis.Key.Return); case '\t': return(Noesis.Key.Tab); case '\b': return(Noesis.Key.Back); case ' ': return(Noesis.Key.Space); case (char)0x01: return(Noesis.Key.A); case (char)0x03: return(Noesis.Key.C); case (char)0x16: return(Noesis.Key.V); case (char)0x18: return(Noesis.Key.X); case (char)0x7F: return(Noesis.Key.Delete); default: break; } if (key >= 'a' && key <= 'z') { return((Noesis.Key)((int)Noesis.Key.A + (int)key - 'a')); } if (key >= 'A' && key <= 'Z') { return((Noesis.Key)((int)Noesis.Key.A + (int)key - 'A')); } if (key >= '0' && key <= '9') { return((Noesis.Key)((int)Noesis.Key.D0 + (int)key - '0')); } return(Noesis.Key.None); }