comparison dynamin/gui/key.d @ 0:aa4efef0f0b1

Initial commit of code.
author Jordan Miner <jminer7@gmail.com>
date Mon, 15 Jun 2009 22:10:48 -0500
parents
children 63ea570c8d7c
comparison
equal deleted inserted replaced
-1:000000000000 0:aa4efef0f0b1
1 // Written in the D programming language
2 // www.digitalmars.com/d/
3
4 /*
5 * The contents of this file are subject to the Mozilla Public License Version
6 * 1.1 (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 * http://www.mozilla.org/MPL/
9 *
10 * Software distributed under the License is distributed on an "AS IS" basis,
11 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12 * for the specific language governing rights and limitations under the
13 * License.
14 *
15 * The Original Code is the Dynamin library.
16 *
17 * The Initial Developer of the Original Code is Jordan Miner.
18 * Portions created by the Initial Developer are Copyright (C) 2007-2009
19 * the Initial Developer. All Rights Reserved.
20 *
21 * Contributor(s):
22 * Jordan Miner <jminer7@gmail.com>
23 *
24 */
25
26 module dynamin.gui.key;
27
28 import dynamin.core.string;
29
30 /**
31 * No Menu key is included because Shift+F10 is used instead.
32 * Note: Windows does not send KeyDown events for PrintScreen, only KeyUp.
33 */
34 enum Key {
35 None,
36 Escape,
37 Tab,
38 Backspace,
39 Enter,
40 Space,
41
42 Left,
43 Right,
44 Up,
45 Down,
46
47 Insert,
48 Delete,
49 Home,
50 End,
51 PageUp,
52 PageDown,
53
54 PrintScreen,
55 Pause,
56
57 CapsLock,
58 NumLock,
59 ScrollLock,
60
61 NumPad0,
62 NumPad1,
63 NumPad2,
64 NumPad3,
65 NumPad4,
66 NumPad5,
67 NumPad6,
68 NumPad7,
69 NumPad8,
70 NumPad9,
71 NumPadDivide,
72 NumPadMultiply,
73 NumPadSubtract,
74 NumPadAdd,
75 NumPadDecimal, // TODO: NumPadPoint?
76
77 Backquote,
78 Minus,
79 Equals,
80 OpenBracket,
81 CloseBracket,
82 Backslash,
83 Semicolon,
84 Quote,
85 Comma,
86 Period,
87 Slash,
88
89 /// Windows sends these messages when the Menu key is pressed and released:
90 /// Menu pressed, Menu released, Shift pressed, F10 pressed, F10 released, Shift released
91 /// So if any program responds to either Menu or Shift+F10, it will work right.
92 Menu, // right of spacebar, between WinKey and Ctrl
93
94 // digits
95 D0 = 0x30, D1, D2, D3, D4, D5, D6, D7, D8, D9 = 0x39,
96 A = 0x41, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z = 0x5A,
97 F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12,
98
99 VolumeUp,
100 VolumeDown,
101 VolumeMute,
102
103 PlayPause,
104 Stop,
105 NextTrack,
106 PrevTrack,
107
108 Shift = 0x10000,
109 Control = 0x20000,
110 Alt = 0x40000
111 }
112
113 /*string KeyToString(Key key) {
114 static string[] table = [
115 "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
116 "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",
117 "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",
118 "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12",
119 "Escape", "Tab", "Backspace", "Enter", "Space",
120 "Left Arrow", "Right Arrow", "Up Arrow", "Down Arrow",
121 "Insert", "Delete", "Home", "End", "Page Up", "Page Down",
122 "Print Screen", "Pause",
123 "Caps Lock", "Num Lock", "Scroll Lock",
124 "NumPad0", "NumPad1", "NumPad2", "NumPad3", "NumPad4",
125 "NumPad5", "NumPad6", "NumPad7", "NumPad8", "NumPad9",
126 "NumPad/", "NumPad*", "NumPad-", "NumPad+", "NumPad.",
127 "`", "-", "=", "[", "]", "\\", ";", "'", ",", ".", "/",
128 "Shift", "Ctrl", "Alt"
129 ];
130 return table[key];
131 }
132 Key toKey(string str) {
133 foreach(i, s; table)
134 if(s == str)
135 return i;
136 return
137 }
138 unittest {
139 assert(keyToString(Key.D0) == "0");
140 assert(keyToString(Key.A) == "A");
141 assert(keyToString(Key.N) == "N");
142 assert(keyToString(Key.F1) == "F1");
143 assert(keyToString(Key.Escape) == "Escape");
144 assert(keyToString(Key.Left) == "Left");
145 assert(keyToString(Key.Up) == "Up");
146 assert(keyToString(Key.Insert) == "Insert");
147 assert(keyToString(Key.PrintScreen) == "Print Screen");
148 assert(keyToString(Key.Pause) == "Pause");
149 assert(keyToString(Key.CapsLock) == "CapsLock");
150 assert(keyToString(Key.NumPad0) == "NumPad0");
151 assert(keyToString(Key.NumPad5) == "NumPad5");
152 assert(keyToString(Key.NumPadDivide) == "NumPad/");
153 assert(keyToString(Key.Backquote) == "`");
154 assert(keyToString(Key.Control) == "Ctrl");
155 }*/
156