source: trunk/autoquest-plugin-mfc/src/main/java/de/ugoe/cs/autoquest/plugin/mfc/eventcore/WindowsVirtualKey.java @ 927

Last change on this file since 927 was 927, checked in by sherbold, 12 years ago
  • added copyright under the Apache License, Version 2.0
  • Property svn:executable set to *
File size: 12.1 KB
Line 
1//   Copyright 2012 Georg-August-Universität Göttingen, Germany
2//
3//   Licensed under the Apache License, Version 2.0 (the "License");
4//   you may not use this file except in compliance with the License.
5//   You may obtain a copy of the License at
6//
7//       http://www.apache.org/licenses/LICENSE-2.0
8//
9//   Unless required by applicable law or agreed to in writing, software
10//   distributed under the License is distributed on an "AS IS" BASIS,
11//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12//   See the License for the specific language governing permissions and
13//   limitations under the License.
14
15package de.ugoe.cs.autoquest.plugin.mfc.eventcore;
16
17import de.ugoe.cs.autoquest.keyboardmaps.VirtualKey;
18
19/**
20 * <p>
21 * Map of virtual keys for MFC.
22 * </p>
23 *
24 * @version 1.0
25 * @author Patrick Harms
26 */
27public enum WindowsVirtualKey {
28    // VK_LBUTTON (0x01, "Left mouse button"),
29    // VK_RBUTTON (0x02, "Right mouse button"),
30    VK_CANCEL(0x03, VirtualKey.CANCEL),
31    // VK_MBUTTON (0x04, "Middle mouse button (three-button mouse)"),
32    // VK_XBUTTON1 (0x05, "X1 mouse button"),
33    // VK_XBUTTON2 (0x06, "X2 mouse button"),
34    // - (0x07, "Undefined"),
35    VK_BACK(0x08, VirtualKey.BACK_SPACE),
36    VK_TAB(0x09, VirtualKey.TAB),
37    // - (0x0A-0B, "Reserved"),
38    VK_CLEAR(0x0C, VirtualKey.CLEAR),
39    VK_RETURN(0x0D, VirtualKey.ENTER),
40    // - (0x0E-0F, "Undefined"),
41    VK_SHIFT(0x10, VirtualKey.SHIFT),
42    VK_CONTROL(0x11, VirtualKey.CONTROL),
43    VK_MENU(0x12, VirtualKey.ALT),
44    VK_PAUSE(0x13, VirtualKey.PAUSE),
45    VK_CAPITAL(0x14, VirtualKey.CAPS_LOCK),
46    VK_KANA(0x15, VirtualKey.KANA),
47    // VK_HANGUEL (0x15, VirtualKey.HANGUEL),
48    // VK_HANGUL (0x15, "IME Hangul mode"),
49    // - (0x16, "Undefined"),
50    // VK_JUNJA (0x17, VirtualKey.J),
51    VK_FINAL(0x18, VirtualKey.FINAL),
52    // VK_HANJA (0x19, "IME Hanja mode"),
53    VK_KANJI(0x19, VirtualKey.KANJI),
54    // - (0x1A, "Undefined"),
55    VK_ESCAPE(0x1B, VirtualKey.ESCAPE), VK_CONVERT(0x1C, VirtualKey.CONVERT),
56    VK_NONCONVERT(0x1D, VirtualKey.NONCONVERT),
57    VK_ACCEPT(0x1E, VirtualKey.ACCEPT),
58    VK_MODECHANGE(0x1F, VirtualKey.MODECHANGE),
59
60    VK_SPACE(0x20, VirtualKey.SPACE),
61    VK_PRIOR(0x21, VirtualKey.PAGE_UP),
62    VK_NEXT(0x22, VirtualKey.PAGE_DOWN),
63    VK_END(0x23, VirtualKey.END),
64    VK_HOME(0x24, VirtualKey.HOME),
65    VK_LEFT(0x25, VirtualKey.LEFT),
66    VK_UP(0x26, VirtualKey.UP),
67    VK_RIGHT(0x27, VirtualKey.RIGHT),
68    VK_DOWN(0x28, VirtualKey.DOWN),
69    // VK_SELECT (0x29, VirtualKey.),
70    VK_PRINT(0x2A, VirtualKey.PRINTSCREEN),
71    // VK_EXECUTE (0x2B, VirtualKey.EXECUTE),
72    VK_SNAPSHOT(0x2C, VirtualKey.PRINTSCREEN), VK_INSERT(0x2D, VirtualKey.INSERT), VK_DELETE(0x2E,
73        VirtualKey.DELETE), VK_HELP(0x2F, VirtualKey.HELP), DIGIT_0(0x30, VirtualKey.DIGIT_0),
74    DIGIT_1(0x31, VirtualKey.DIGIT_1), DIGIT_2(0x32, VirtualKey.DIGIT_2), DIGIT_3(0x33,
75        VirtualKey.DIGIT_3), DIGIT_4(0x34, VirtualKey.DIGIT_4), DIGIT_5(0x35, VirtualKey.DIGIT_5),
76    DIGIT_6(0x36, VirtualKey.DIGIT_6),
77    DIGIT_7(0x37, VirtualKey.DIGIT_7),
78    DIGIT_8(0x38, VirtualKey.DIGIT_8),
79    DIGIT_9(0x39, VirtualKey.DIGIT_9),
80    // - (0x3A-40, "Undefined"),
81    A(0x41, VirtualKey.LETTER_A), B(0x42, VirtualKey.LETTER_B), C(0x43, VirtualKey.LETTER_C), D(
82        0x44, VirtualKey.LETTER_D), E(0x45, VirtualKey.LETTER_E), F(0x46, VirtualKey.LETTER_F), G(
83        0x47, VirtualKey.LETTER_G), H(0x48, VirtualKey.LETTER_H), I(0x49, VirtualKey.LETTER_I), J(
84        0x4A, VirtualKey.LETTER_J), K(0x4B, VirtualKey.LETTER_K), L(0x4C, VirtualKey.LETTER_L), M(
85        0x4D, VirtualKey.LETTER_M), N(0x4E, VirtualKey.LETTER_N), O(0x4F, VirtualKey.LETTER_O), P(
86        0x50, VirtualKey.LETTER_P), Q(0x51, VirtualKey.LETTER_Q), R(0x52, VirtualKey.LETTER_R), S(
87        0x53, VirtualKey.LETTER_S),
88    T(0x54, VirtualKey.LETTER_T),
89    U(0x55, VirtualKey.LETTER_U),
90    V(0x56, VirtualKey.LETTER_V),
91    W(0x57, VirtualKey.LETTER_W),
92    X(0x58, VirtualKey.LETTER_X),
93    Y(0x59, VirtualKey.LETTER_Y),
94    Z(0x5A, VirtualKey.LETTER_Z),
95    VK_LWIN(0x5B, VirtualKey.WINDOWS),
96    VK_RWIN(0x5C, VirtualKey.WINDOWS),
97    // VK_APPS (0x5D, "Applications key (Natural keyboard)"),
98    // - (0x5E, "Reserved"),
99    // VK_SLEEP (0x5F, VirtualKey.SLEEP),
100    VK_NUMPAD0(0x60, VirtualKey.NUMPAD_0), VK_NUMPAD1(0x61, VirtualKey.NUMPAD_1), VK_NUMPAD2(0x62,
101        VirtualKey.NUMPAD_2), VK_NUMPAD3(0x63, VirtualKey.NUMPAD_3), VK_NUMPAD4(0x64,
102        VirtualKey.NUMPAD_4), VK_NUMPAD5(0x65, VirtualKey.NUMPAD_5), VK_NUMPAD6(0x66,
103        VirtualKey.NUMPAD_6), VK_NUMPAD7(0x67, VirtualKey.NUMPAD_7), VK_NUMPAD8(0x68,
104        VirtualKey.NUMPAD_8), VK_NUMPAD9(0x69, VirtualKey.NUMPAD_9), VK_MULTIPLY(0x6A,
105        VirtualKey.MULTIPLY), VK_ADD(0x6B, VirtualKey.ADD),
106    VK_SEPARATOR(0x6C, VirtualKey.SEPARATOR), VK_SUBTRACT(0x6D, VirtualKey.SUBTRACT), VK_DECIMAL(
107        0x6E, VirtualKey.DECIMAL), VK_DIVIDE(0x6F, VirtualKey.DIVIDE), VK_F1(0x70, VirtualKey.F1),
108    VK_F2(0x71, VirtualKey.F2), VK_F3(0x72, VirtualKey.F3), VK_F4(0x73, VirtualKey.F4), VK_F5(0x74,
109        VirtualKey.F5), VK_F6(0x75, VirtualKey.F6), VK_F7(0x76, VirtualKey.F7), VK_F8(0x77,
110        VirtualKey.F8), VK_F9(0x78, VirtualKey.F9), VK_F10(0x79, VirtualKey.F10), VK_F11(0x7A,
111        VirtualKey.F11), VK_F12(0x7B, VirtualKey.F12), VK_F13(0x7C, VirtualKey.F13), VK_F14(0x7D,
112        VirtualKey.F14), VK_F15(0x7E, VirtualKey.F15), VK_F16(0x7F, VirtualKey.F16), VK_F17(0x80,
113        VirtualKey.F17), VK_F18(0x81, VirtualKey.F18), VK_F19(0x82, VirtualKey.F19), VK_F20(0x83,
114        VirtualKey.F20), VK_F21(0x84, VirtualKey.F21), VK_F22(0x85, VirtualKey.F22), VK_F23(0x86,
115        VirtualKey.F23), VK_F24(0x87, VirtualKey.F24),
116    // - (0x88-8F, "Unassigned"),
117    VK_NUMLOCK(0x90, VirtualKey.NUM_LOCK),
118    VK_SCROLL(0x91, VirtualKey.SCROLL_LOCK),
119    // - (0x92-96, "OEM specific"),
120    // - (0x97-9F, "Unassigned"),
121    VK_LSHIFT(0xA0, VirtualKey.SHIFT), VK_RSHIFT(0xA1, VirtualKey.SHIFT), VK_LCONTROL(0xA2,
122        VirtualKey.CONTROL), VK_RCONTROL(0xA3, VirtualKey.CONTROL), VK_LMENU(0xA4, VirtualKey.ALT),
123    VK_RMENU(0xA5, VirtualKey.ALT_GRAPH),
124    // VK_BROWSER_BACK (0xA6, VirtualKey.BROWSER_BACK),
125    // VK_BROWSER_FORWARD (0xA7, VirtualKey.BROWSER_FORWARD),
126    VK_BROWSER_REFRESH(0xA8, VirtualKey.F5), VK_BROWSER_STOP(0xA9, VirtualKey.STOP),
127    // VK_BROWSER_SEARCH (0xAA, VirtualKey.BROWSER_SEARCH),
128    // VK_BROWSER_FAVORITES (0xAB, VirtualKey.BROWSER_FAVORITES),
129    // VK_BROWSER_HOME (0xAC, VirtualKey.BROWSER_HOME),
130    // VK_VOLUME_MUTE (0xAD, VirtualKey.VOLUME_MUTE),
131    // VK_VOLUME_DOWN (0xAE, VirtualKey.VOLUME_DOWN),
132    // VK_VOLUME_UP (0xAF, VirtualKey.VOLUME_UP),
133    // VK_MEDIA_NEXT_TRACK (0xB0, VirtualKey.MEDIA_NEXT_TRACK),
134    // VK_MEDIA_PREV_TRACK (0xB1, VirtualKey.MEDIA_PREV_TRACK),
135    // VK_MEDIA_STOP (0xB2, VirtualKey.MEDIA_STOP),
136    // VK_MEDIA_PLAY_PAUSE (0xB3, VirtualKey.MEDIA_PLAY_PAUSE),
137    // VK_LAUNCH_MAIL (0xB4, VirtualKey.LAUNCH_MAIL),
138    // VK_LAUNCH_MEDIA_SELECT (0xB5, VirtualKey.LAUNCH_MEDIA_SELECT),
139    // VK_LAUNCH_APP1 (0xB6, VirtualKey.LAUNCH_APP1),
140    // VK_LAUNCH_APP2 (0xB7, VirtualKey.LAUNCH_APP2),
141    // - (0xB8-B9, "Reserved"),
142    // VK_OEM_1 (0xBA, "Used for miscellaneous characters; it can vary by keyboard." +
143    // "For the US standard keyboard, the ';:' key"),
144    VK_OEM_PLUS(0xBB, VirtualKey.PLUS), VK_OEM_COMMA(0xBC, VirtualKey.COMMA), VK_OEM_MINUS(0xBD,
145        VirtualKey.MINUS), VK_OEM_PERIOD(0xBE, VirtualKey.PERIOD);
146    // VK_OEM_2 (0xBF, "Used for miscellaneous characters; it can vary by keyboard." +
147    // "For the US standard keyboard, the '/?' key"),
148    // VK_OEM_3 (0xC0, "Used for miscellaneous characters; it can vary by keyboard." +
149    // "For the US standard keyboard, the '`~' key"),
150    // - (0xC1-D7, "ReserveD, "- (0xD8-DA, "Unassigned"),
151    // VK_OEM_4 (0xDB, "Used for miscellaneous characters; it can vary by keyboard." +
152    // "For the US standard keyboard, the '[{' key"),
153    // VK_OEM_5 (0xDC, "Used for miscellaneous characters; it can vary by keyboard." +
154    // "For the US standard keyboard, the '\\|' key"),
155    // VK_OEM_6 (0xDD, "Used for miscellaneous characters; it can vary by keyboard." +
156    // "For the US standard keyboard, the ']}' key"),
157    // VK_OEM_7 (0xDE, "Used for miscellaneous characters; it can vary by keyboard." +
158    // "For the US standard keyboard, the 'single-quote/double-quote' key"),
159    // VK_OEM_8 (0xDF, "Used for miscellaneous characters; it can vary by keyboard."),
160    // - (0xE0, "Reserved"),
161    // - (0xE1, "OEM specific"),
162    // VK_OEM_102 (0xE2, "Either the angle bracket key or the backslash key on the RT 102-key" +
163    // "keyboard"),
164    // - (0xE3-E4, "OEM specific"),
165    // VK_PROCESSKEY (0xE5, VirtualKey.EXECUTE),
166    // - (0xE6, "OEM specific"),
167    // VK_PACKET (0xE7, "Used to pass Unicode characters as if they were keystrokes. The " +
168    // "VK_PACKET key is the low word of a 32-bit Virtual Key value used for non-keyboard " +
169    // "input methods. For more information, see Remark in KEYBDINPUT, SendInput, " +
170    // "WM_KEYDOWN, and WM_KEYUP"),
171    // - (0xE8, "Unassigned (0xE9-F5, "OEM specific"),
172    // VK_ATTN (0xF6, "Attn key"),
173    // VK_CRSEL (0xF7, "CrSel key"),
174    // VK_EXSEL (0xF8, "ExSel key"),
175    // VK_EREOF (0xF9, "Erase EOF key"),
176    // VK_PLAY (0xFA, VirtualKey.MEDIA_PLAY_PAUSE);
177    // VK_ZOOM (0xFB, "Zoom key"),
178    // VK_NONAME (0xFC, "Reserved"),
179    // VK_PA1 (0xFD, "PA1 key"),
180    // VK_OEM_CLEAR (0xFE, "Clear key");
181
182    /**
183     * <p>
184     * Numerical representation of the virtual key.
185     * </p>
186     */
187    private int mNumber;
188
189    /**
190     * <p>
191     * {@link VirtualKey} represented by this WindowsVirtualKey
192     * </p>
193     */
194    private VirtualKey mRepresentedKey;
195
196    /**
197     * <p>
198     * Constructor. Creates a new WindowsVirtualKey.
199     * </p>
200     *
201     * @param number
202     *            numerical representation of the virtual key
203     * @param representedKey
204     *            virtual key that is represented
205     */
206    WindowsVirtualKey(int number, VirtualKey representedKey) {
207        mNumber = number;
208        mRepresentedKey = representedKey;
209    }
210
211    /**
212     * <p>
213     * Returns the numerical representation of the virtual key.
214     * </p>
215     *
216     * @return the numerical representation
217     */
218    int getNumber() {
219        return mNumber;
220    }
221
222    /**
223     * <p>
224     * Parses an {@link String} and returns the respective WindowsVirtualKey if possible.
225     * </p>
226     *
227     * @param string
228     *            String representation of the event type
229     * @return created WindowsVirtualKey
230     * @throws IllegalArgumentException
231     *             thrown if there is no WindowsVirtualKey that correlates to string
232     */
233    public static WindowsVirtualKey parseVirtualKey(String string) throws IllegalArgumentException {
234        for (WindowsVirtualKey virtualKey : WindowsVirtualKey.values()) {
235            if (virtualKey.mNumber == Integer.parseInt(string)) {
236                return virtualKey;
237            }
238        }
239
240        throw new IllegalArgumentException("there is no virtual key with id " + string);
241    }
242
243    /**
244     * <p>
245     * Returns the WindowsVirtualKey associated with an integer.
246     * </p>
247     *
248     * @param number
249     *            integer to which the according WindowsVirtualKey is returned
250     * @return the WindowsVirtualKey
251     * @throws IllegalArgumentException
252     *             thrown if there is no WindowsVirtualKey that correlates to number
253     */
254    public static WindowsVirtualKey valueOf(int number) throws IllegalArgumentException {
255        for (WindowsVirtualKey virtualKey : WindowsVirtualKey.values()) {
256            if (virtualKey.mNumber == number) {
257                return virtualKey;
258            }
259        }
260
261        throw new IllegalArgumentException("there is no virtual key with number " + number);
262    }
263
264    /**
265     * <p>
266     * Returns the {@link VirtualKey} associated with this WindowsVirtualKey.
267     * </p>
268     *
269     * @return the virtual key
270     */
271    public VirtualKey getKey() {
272        return mRepresentedKey;
273    }
274
275}
Note: See TracBrowser for help on using the repository browser.