Subversion Repositories AndroidProjects

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1452 chris 1
#region --- License ---
2
/* Copyright (c) 2007 Stefanos Apostolopoulos
3
 * See license.txt for license information
4
 */
5
#endregion
6
 
7
using System;
8
using System.Collections.Generic;
9
using System.Text;
10
using OpenTK.Platform.Windows;
11
using OpenTK.Input;
12
using System.Diagnostics;
13
 
14
namespace OpenTK.Platform.Windows
15
{
16
    internal class WinKeyMap : Dictionary<VirtualKeys, Input.Key>
17
    {
18
        /// <summary>
19
        /// Initializes the map between VirtualKeys and OpenTK.Key
20
        /// </summary>
21
        internal WinKeyMap()
22
        {
23
            try
24
            {
25
                this.Add(VirtualKeys.ESCAPE, Key.Escape);
26
 
27
                // Function keys
28
                for (int i = 0; i < 24; i++)
29
                {
30
                    this.Add((VirtualKeys)((int)VirtualKeys.F1 + i), Key.F1 + i);
31
                }
32
 
33
                // Number keys (0-9)
34
                for (int i = 0; i <= 9; i++)
35
                {
36
                    this.Add((VirtualKeys)(0x30 + i), Key.Number0 + i);
37
                }
38
 
39
                // Letters (A-Z)
40
                for (int i = 0; i < 26; i++)
41
                {
42
                    this.Add((VirtualKeys)(0x41 + i), Key.A + i);
43
                }
44
 
45
                this.Add(VirtualKeys.TAB, Key.Tab);
46
                this.Add(VirtualKeys.CAPITAL, Key.CapsLock);
47
                this.Add(VirtualKeys.LCONTROL, Key.ControlLeft);
48
                this.Add(VirtualKeys.LSHIFT, Key.ShiftLeft);
49
                this.Add(VirtualKeys.LWIN, Key.WinLeft);
50
                this.Add(VirtualKeys.LMENU, Key.AltLeft);
51
                this.Add(VirtualKeys.SPACE, Key.Space);
52
                this.Add(VirtualKeys.RMENU, Key.AltRight);
53
                this.Add(VirtualKeys.RWIN, Key.WinRight);
54
                this.Add(VirtualKeys.APPS, Key.Menu);
55
                this.Add(VirtualKeys.RCONTROL, Key.ControlRight);
56
                this.Add(VirtualKeys.RSHIFT, Key.ShiftRight);
57
                this.Add(VirtualKeys.RETURN, Key.Enter);
58
                this.Add(VirtualKeys.BACK, Key.BackSpace);
59
 
60
                this.Add(VirtualKeys.OEM_1, Key.Semicolon);      // Varies by keyboard, ;: on Win2K/US
61
                this.Add(VirtualKeys.OEM_2, Key.Slash);          // Varies by keyboard, /? on Win2K/US
62
                this.Add(VirtualKeys.OEM_3, Key.Tilde);          // Varies by keyboard, `~ on Win2K/US
63
                this.Add(VirtualKeys.OEM_4, Key.BracketLeft);    // Varies by keyboard, [{ on Win2K/US
64
                this.Add(VirtualKeys.OEM_5, Key.BackSlash);      // Varies by keyboard, \| on Win2K/US
65
                this.Add(VirtualKeys.OEM_6, Key.BracketRight);   // Varies by keyboard, ]} on Win2K/US
66
                this.Add(VirtualKeys.OEM_7, Key.Quote);          // Varies by keyboard, '" on Win2K/US
67
                this.Add(VirtualKeys.OEM_PLUS, Key.Plus);        // Invariant: +
68
                this.Add(VirtualKeys.OEM_COMMA, Key.Comma);      // Invariant: ,
69
                this.Add(VirtualKeys.OEM_MINUS, Key.Minus);      // Invariant: -
70
                this.Add(VirtualKeys.OEM_PERIOD, Key.Period);    // Invariant: .
71
 
72
                this.Add(VirtualKeys.HOME, Key.Home);
73
                this.Add(VirtualKeys.END, Key.End);
74
                this.Add(VirtualKeys.DELETE, Key.Delete);
75
                this.Add(VirtualKeys.PRIOR, Key.PageUp);
76
                this.Add(VirtualKeys.NEXT, Key.PageDown);
77
                this.Add(VirtualKeys.PRINT, Key.PrintScreen);
78
                this.Add(VirtualKeys.PAUSE, Key.Pause);
79
                this.Add(VirtualKeys.NUMLOCK, Key.NumLock);
80
 
81
                this.Add(VirtualKeys.SCROLL, Key.ScrollLock);
82
                this.Add(VirtualKeys.SNAPSHOT, Key.PrintScreen);
83
                this.Add(VirtualKeys.CLEAR, Key.Clear);
84
                this.Add(VirtualKeys.INSERT, Key.Insert);
85
 
86
                this.Add(VirtualKeys.SLEEP, Key.Sleep);
87
 
88
                // Keypad
89
                for (int i = 0; i <= 9; i++)
90
                {
91
                    this.Add((VirtualKeys)((int)VirtualKeys.NUMPAD0 + i), Key.Keypad0 + i);
92
                }
93
                this.Add(VirtualKeys.DECIMAL, Key.KeypadDecimal);
94
                this.Add(VirtualKeys.ADD, Key.KeypadAdd);
95
                this.Add(VirtualKeys.SUBTRACT, Key.KeypadSubtract);
96
                this.Add(VirtualKeys.DIVIDE, Key.KeypadDivide);
97
                this.Add(VirtualKeys.MULTIPLY, Key.KeypadMultiply);
98
 
99
                // Navigation
100
                this.Add(VirtualKeys.UP, Key.Up);
101
                this.Add(VirtualKeys.DOWN, Key.Down);
102
                this.Add(VirtualKeys.LEFT, Key.Left);
103
                this.Add(VirtualKeys.RIGHT, Key.Right);
104
            }
105
            catch (ArgumentException e)
106
            {
107
                Debug.Print("Exception while creating keymap: '{0}'.", e.ToString());
108
                System.Windows.Forms.MessageBox.Show(
109
                    String.Format("Exception while creating keymap: '{0}'.", e.ToString()));
110
            }
111
        }
112
    }
113
}