/*
* Copyright 2010 Inalogic® Inc.
*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License, as
* published by the Free Software Foundation; either version 2.1 or 3.0
* of the License.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranties of
* MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the applicable version of the GNU Lesser General Public
* License for more details.
*
* You should have received a copy of both the GNU Lesser General Public
* License along with this program. If not, see
*
* Authored by: Jay Taoko
*
*/
#ifndef VIRTUALKEYCODES_H
#define VIRTUALKEYCODES_H
namespace nux
{
// Virtual key codes
// The following table shows the symbolic constant names, hexadecimal values, and mouse or keyboard equivalents for the virtual-key codes used by the system. The codes are listed in numeric order.
// Symbolic constant name Value(hex) Mouse or keyboard equivalents
#define NUX_VK_SPACE 0x020
#define NUX_VK_EXCLAM 0x021
#define NUX_VK_QUOTEDBL 0x022
#define NUX_VK_NUMBERSIGN 0x023
#define NUX_VK_DOLLAR 0x024
#define NUX_VK_PERCENT 0x025
#define NUX_VK_AMPERSAND 0x026
#define NUX_VK_APOSTROPHE 0x027
#define NUX_VK_QUOTERIGHT 0x027 /* deprecated */
#define NUX_VK_PARENLEFT 0x028
#define NUX_VK_PARENRIGHT 0x029
#define NUX_VK_MULTIPLY 0x02a
#define NUX_VK_ADD 0x02b
#define NUX_VK_COMMA 0x02c
#define NUX_VK_SUBTRACT 0x02d
#define NUX_VK_DECIMAL 0x02e
#define NUX_VK_SLASH 0x02f
#define NUX_VK_0 0x030
#define NUX_VK_1 0x031
#define NUX_VK_2 0x032
#define NUX_VK_3 0x033
#define NUX_VK_4 0x034
#define NUX_VK_5 0x035
#define NUX_VK_6 0x036
#define NUX_VK_7 0x037
#define NUX_VK_8 0x038
#define NUX_VK_9 0x039
#define NUX_VK_COLON 0x03a
#define NUX_VK_SEMICOLON 0x03b
#define NUX_VK_LESS 0x03c
#define NUX_VK_EQUAL 0x03d
#define NUX_VK_GREATER 0x03e
#define NUX_VK_QUESTION 0x03f
#define NUX_VK_AT 0x040
#define NUX_VK_A 0x041
#define NUX_VK_B 0x042
#define NUX_VK_C 0x043
#define NUX_VK_D 0x044
#define NUX_VK_E 0x045
#define NUX_VK_F 0x046
#define NUX_VK_G 0x047
#define NUX_VK_H 0x048
#define NUX_VK_I 0x049
#define NUX_VK_J 0x04a
#define NUX_VK_K 0x04b
#define NUX_VK_L 0x04c
#define NUX_VK_M 0x04d
#define NUX_VK_N 0x04e
#define NUX_VK_O 0x04f
#define NUX_VK_P 0x050
#define NUX_VK_Q 0x051
#define NUX_VK_R 0x052
#define NUX_VK_S 0x053
#define NUX_VK_T 0x054
#define NUX_VK_U 0x055
#define NUX_VK_V 0x056
#define NUX_VK_W 0x057
#define NUX_VK_X 0x058
#define NUX_VK_Y 0x059
#define NUX_VK_Z 0x05a
#define NUX_VK_BRACKETLEFT 0x05b
#define NUX_VK_BACKSLASH 0x05c
#define NUX_VK_BRACKETRIGHT 0x05d
#define NUX_VK_ASCIICIRCUM 0x05e
#define NUX_VK_UNDERSCORE 0x05f
#define NUX_VK_GRAVE 0x060
#define NUX_VK_QUOTELEFT 0x060 /* deprecated */
#define NUX_VK_a 0x061
#define NUX_VK_b 0x062
#define NUX_VK_c 0x063
#define NUX_VK_d 0x064
#define NUX_VK_e 0x065
#define NUX_VK_f 0x066
#define NUX_VK_g 0x067
#define NUX_VK_h 0x068
#define NUX_VK_i 0x069
#define NUX_VK_j 0x06a
#define NUX_VK_k 0x06b
#define NUX_VK_l 0x06c
#define NUX_VK_m 0x06d
#define NUX_VK_n 0x06e
#define NUX_VK_o 0x06f
#define NUX_VK_p 0x070
#define NUX_VK_q 0x071
#define NUX_VK_r 0x072
#define NUX_VK_s 0x073
#define NUX_VK_t 0x074
#define NUX_VK_u 0x075
#define NUX_VK_v 0x076
#define NUX_VK_w 0x077
#define NUX_VK_x 0x078
#define NUX_VK_y 0x079
#define NUX_VK_z 0x07a
#define NUX_VK_BRACELEFT 0x07b
#define NUX_VK_BAR 0x07c
#define NUX_VK_BRACERIGHT 0x07d
#define NUX_VK_ASCIITILDE 0x07e
// Modifiers
#define NUX_VK_LSHIFT 0xA0 // Left SHIFT key
#define NUX_VK_RSHIFT 0xA1 // Right SHIFT key
#define NUX_VK_LCONTROL 0xA2 // Left CONTROL key
#define NUX_VK_RCONTROL 0xA3 // Right CONTROL key
#define NUX_VK_CAPITAL 0x14 // CAPS LOCK key
#define NUX_VK_LSUPER 0x5B // Left Windows key(Microsoft Natural Keyboard)
#define NUX_VK_RSUPER 0x5C // Right Windows key(Microsoft Natural Keyboard)
#define NUX_VK_LALT 0xA4 // Left MENU key
#define NUX_VK_RALT 0xA5 // Right MENU key
// Cursor control and motion
#define NUX_VK_HOME 0x24 // HOME key
#define NUX_VK_LEFT 0x25 // LEFT ARROW key
#define NUX_VK_UP 0x26 // UP ARROW key
#define NUX_VK_RIGHT 0x27 // RIGHT ARROW key
#define NUX_VK_DOWN 0x28 // DOWN ARROW key
#define NUX_VK_PAGE_UP 0x21 // PAGE UP key
#define NUX_VK_PAGE_DOWN 0x22 // PAGE DOWN key
#define NUX_VK_END 0x23 // END key
// Functions
#define NUX_VK_BACKSPACE 0x08 // BACKSPACE key
#define NUX_VK_ESCAPE 0x1B // ESC key
#define NUX_VK_TAB 0x09 // TAB key
#define NUX_VK_ENTER 0x0D // ENTER key
#define NUX_VK_NUMLOCK 0x90 // NUM LOCK key
#define NUX_VK_SCROLL 0x91 // SCROLL LOCK key
#define NUX_VK_DELETE 0x2E // DEL key
#define NUX_VK_INSERT 0x2D // INS key
#define NUX_VK_CANCEL 0x03 // Control-break processing
#define NUX_VK_CLEAR 0x0C // CLEAR key
#define NUX_VK_SHIFT 0x10 // SHIFT key
#define NUX_VK_PAUSE 0x13 // PAUSE key
// #define NUX_VK_MULTIPLY 0x6A // Multiply key
// #define NUX_VK_ADD 0x6B // Add key
// #define NUX_VK_SEPARATOR 0x6C // Separator key
// #define NUX_VK_SUBTRACT 0x6D // Subtract key
// #define NUX_VK_DECIMAL 0x6E // Decimal key
// #define NUX_VK_DIVIDE 0x6F // Divide key
#define NUX_KP_0 0xFFB0
#define NUX_KP_1 0xFFB1
#define NUX_KP_2 0xFFB2
#define NUX_KP_3 0xFFB3
#define NUX_KP_4 0xFFB4
#define NUX_KP_5 0xFFB5
#define NUX_KP_6 0xFFB6
#define NUX_KP_7 0xFFB7
#define NUX_KP_8 0xFFB8
#define NUX_KP_9 0xFFB9
#define NUX_KP_HOME 0xFF95
#define NUX_KP_LEFT 0xFF96
#define NUX_KP_UP 0xFF97
#define NUX_KP_RIGHT 0xFF98
#define NUX_KP_DOWN 0xFF99
#define NUX_KP_PRIOR 0xFF9A
#define NUX_KP_PAGE_UP 0xFF9A
#define NUX_KP_NEXT 0xFF9B
#define NUX_KP_PAGE_DOWN 0xFF9B
#define NUX_KP_END 0xFF9C
#define NUX_KP_BEGIN 0xFF9D
#define NUX_KP_INSERT 0xFF9E
#define NUX_KP_DELETE 0xFF9F
#define NUX_KP_EQUAL 0xFFBD /* equals */
#define NUX_KP_MULTIPLY 0xFFAA
#define NUX_KP_ADD 0xFFAB
#define NUX_KP_SEPARATOR 0xFFAC /* separator, often comma */
#define NUX_KP_SUBTRACT 0xFFAD
#define NUX_KP_DECIMAL 0xFFAE
#define NUX_KP_DIVIDE 0xFFAF
#define NUX_KP_ENTER 0xAAAA // todo
#define NUX_VK_LEFT_TAB 0xAAAB // todo
#define NUX_VK_F1 0x70 // F1 key
#define NUX_VK_F2 0x71 // F2 key
#define NUX_VK_F3 0x72 // F3 key
#define NUX_VK_F4 0x73 // F4 key
#define NUX_VK_F5 0x74 // F5 key
#define NUX_VK_F6 0x75 // F6 key
#define NUX_VK_F7 0x76 // F7 key
#define NUX_VK_F8 0x77 // F8 key
#define NUX_VK_F9 0x78 // F9 key
#define NUX_VK_F10 0x79 // F10 key
#define NUX_VK_F11 0x7A // F11 key
#define NUX_VK_F12 0x7B // F12 key
#define NUX_VK_F13 0x7C // F13 key
#define NUX_VK_F14 0x7D // F14 key
#define NUX_VK_F15 0x7E // F15 key
#define NUX_VK_F16 0x7F // F16 key
#define NUX_VK_F17 0x80 // F17 key
#define NUX_VK_F18 0x81 // F18 key
#define NUX_VK_F19 0x82 // F19 key
#define NUX_VK_F20 0x83 // F20 key
#define NUX_VK_F21 0x84 // F21 key
#define NUX_VK_F22 0x85 // F22 key
#define NUX_VK_F23 0x86 // F23 key
#define NUX_VK_F24 0x87 // F24 key
#define NUX_MAX_VK 256
}
#endif // VIRTUALKEYCODES_H