#region --- License --- /* Copyright (c) 2007 Stefanos Apostolopoulos * See license.txt for license information */ #endregion using System; using System.Collections.Generic; using System.Text; using OpenTK.Platform.Windows; using OpenTK.Input; using System.Diagnostics; namespace OpenTK.Platform.Windows { internal class KeyMap : Dictionary { /// /// Initializes the map between VirtualKeys and OpenTK.Key /// internal KeyMap() { try { this.Add(VirtualKeys.ESCAPE, Key.Escape); // Function keys for (int i = 0; i < 24; i++) { this.Add((VirtualKeys)((int)VirtualKeys.F1 + i), Key.F1 + i); } // Number keys (0-9) for (int i = 0; i <= 9; i++) { this.Add((VirtualKeys)(0x30 + i), Key.Number0 + i); } // Letters (A-Z) for (int i = 0; i < 26; i++) { this.Add((VirtualKeys)(0x41 + i), Key.A + i); } this.Add(VirtualKeys.TAB, Key.Tab); this.Add(VirtualKeys.CAPITAL, Key.CapsLock); this.Add(VirtualKeys.LCONTROL, Key.ControlLeft); this.Add(VirtualKeys.LSHIFT, Key.ShiftLeft); this.Add(VirtualKeys.LWIN, Key.WinLeft); this.Add(VirtualKeys.LMENU, Key.AltLeft); this.Add(VirtualKeys.SPACE, Key.Space); this.Add(VirtualKeys.RMENU, Key.AltRight); this.Add(VirtualKeys.RWIN, Key.WinRight); this.Add(VirtualKeys.APPS, Key.Menu); this.Add(VirtualKeys.RCONTROL, Key.ControlRight); this.Add(VirtualKeys.RSHIFT, Key.ShiftRight); this.Add(VirtualKeys.RETURN, Key.Enter); this.Add(VirtualKeys.BACK, Key.BackSpace); this.Add(VirtualKeys.OEM_1, Key.Semicolon); // Varies by keyboard, ;: on Win2K/US this.Add(VirtualKeys.OEM_2, Key.Slash); // Varies by keyboard, /? on Win2K/US this.Add(VirtualKeys.OEM_3, Key.Tilde); // Varies by keyboard, `~ on Win2K/US this.Add(VirtualKeys.OEM_4, Key.BracketLeft); // Varies by keyboard, [{ on Win2K/US this.Add(VirtualKeys.OEM_5, Key.BackSlash); // Varies by keyboard, \| on Win2K/US this.Add(VirtualKeys.OEM_6, Key.BracketRight); // Varies by keyboard, ]} on Win2K/US this.Add(VirtualKeys.OEM_7, Key.Quote); // Varies by keyboard, '" on Win2K/US this.Add(VirtualKeys.OEM_PLUS, Key.Plus); // Invariant: + this.Add(VirtualKeys.OEM_COMMA, Key.Comma); // Invariant: , this.Add(VirtualKeys.OEM_MINUS, Key.Minus); // Invariant: - this.Add(VirtualKeys.OEM_PERIOD, Key.Period); // Invariant: . this.Add(VirtualKeys.HOME, Key.Home); this.Add(VirtualKeys.END, Key.End); this.Add(VirtualKeys.DELETE, Key.Delete); this.Add(VirtualKeys.PRIOR, Key.PageUp); this.Add(VirtualKeys.NEXT, Key.PageDown); this.Add(VirtualKeys.PRINT, Key.PrintScreen); this.Add(VirtualKeys.PAUSE, Key.Pause); this.Add(VirtualKeys.NUMLOCK, Key.NumLock); this.Add(VirtualKeys.SCROLL, Key.ScrollLock); this.Add(VirtualKeys.SNAPSHOT, Key.PrintScreen); this.Add(VirtualKeys.CLEAR, Key.Clear); this.Add(VirtualKeys.INSERT, Key.Insert); this.Add(VirtualKeys.SLEEP, Key.Sleep); // Keypad for (int i = 0; i <= 9; i++) { this.Add((VirtualKeys)((int)VirtualKeys.NUMPAD0 + i), Key.Keypad0 + i); } this.Add(VirtualKeys.DECIMAL, Key.KeypadDecimal); this.Add(VirtualKeys.ADD, Key.KeypadAdd); this.Add(VirtualKeys.SUBTRACT, Key.KeypadSubtract); this.Add(VirtualKeys.DIVIDE, Key.KeypadDivide); this.Add(VirtualKeys.MULTIPLY, Key.KeypadMultiply); // Navigation this.Add(VirtualKeys.UP, Key.Up); this.Add(VirtualKeys.DOWN, Key.Down); this.Add(VirtualKeys.LEFT, Key.Left); this.Add(VirtualKeys.RIGHT, Key.Right); } catch (ArgumentException e) { Debug.Print("Exception while creating keymap: '{0}'.", e.ToString()); System.Windows.Forms.MessageBox.Show( String.Format("Exception while creating keymap: '{0}'.", e.ToString())); } } } }