MHVLib
20111011
An efficiency oriented runtime library for AVR microcontrollers
|
00001 /* 00002 * Copyright (c) 2011, Make, Hack, Void Inc 00003 * All rights reserved. 00004 * 00005 * License: GNU GPL v2 (see mhvlib-Vusb-Keyboard/vusb/License.txt) 00006 * 00007 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 00008 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 00009 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 00010 * DISCLAIMED. IN NO EVENT SHALL MAKE, HACK, VOID BE LIABLE FOR ANY 00011 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 00012 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 00013 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 00014 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 00015 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 00016 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00017 */ 00018 00019 #ifndef MHV_VUSBKEYBOARD_H_ 00020 #define MHV_VUSBKEYBOARD_H_ 00021 00022 #include <MHV_io.h> 00023 #include <MHV_RTC.h> 00024 00025 #define MHV_MOD_CONTROL_LEFT (1<<0) 00026 #define MHV_MOD_SHIFT_LEFT (1<<1) 00027 #define MHV_MOD_ALT_LEFT (1<<2) 00028 #define MHV_MOD_GUI_LEFT (1<<3) 00029 #define MHV_MOD_CONTROL_RIGHT (1<<4) 00030 #define MHV_MOD_SHIFT_RIGHT (1<<5) 00031 #define MHV_MOD_ALT_RIGHT (1<<6) 00032 #define MHV_MOD_GUI_RIGHT (1<<7) 00033 00034 enum mhv_vusb_keyboard_key { 00035 MHV_KEY_A = 4, 00036 MHV_KEY_B = 5, 00037 MHV_KEY_C = 6, 00038 MHV_KEY_D = 7, 00039 MHV_KEY_E = 8, 00040 MHV_KEY_F = 9, 00041 MHV_KEY_G = 10, 00042 MHV_KEY_H = 11, 00043 MHV_KEY_I = 12, 00044 MHV_KEY_J = 13, 00045 MHV_KEY_K = 14, 00046 MHV_KEY_L = 15, 00047 MHV_KEY_M = 16, 00048 MHV_KEY_N = 17, 00049 MHV_KEY_O = 18, 00050 MHV_KEY_P = 19, 00051 MHV_KEY_Q = 20, 00052 MHV_KEY_R = 21, 00053 MHV_KEY_S = 22, 00054 MHV_KEY_T = 23, 00055 MHV_KEY_U = 24, 00056 MHV_KEY_V = 25, 00057 MHV_KEY_W = 26, 00058 MHV_KEY_X = 27, 00059 MHV_KEY_Y = 28, 00060 MHV_KEY_Z = 29, 00061 MHV_KEY_1 = 30, 00062 MHV_KEY_2 = 31, 00063 MHV_KEY_3 = 32, 00064 MHV_KEY_4 = 33, 00065 MHV_KEY_5 = 34, 00066 MHV_KEY_6 = 35, 00067 MHV_KEY_7 = 36, 00068 MHV_KEY_8 = 37, 00069 MHV_KEY_9 = 38, 00070 MHV_KEY_0 = 39, 00071 MHV_KEY_ENTER = 40, 00072 MHV_KEY_ESCAPE = 41, 00073 MHV_KEY_BACKSPACE = 42, 00074 MHV_KEY_TAB = 43, 00075 MHV_KEY_SPACE = 44, 00076 MHV_KEY_MINUS = 45, 00077 MHV_KEY_EQUALS = 46, 00078 MHV_KEY_L_SQUARE = 47, 00079 MHV_KEY_R_SQUARE = 48, 00080 MHV_KEY_BACKSLASH = 49, 00081 MHV_KEY_NON_US_HASH = 50, 00082 MHV_KEY_SEMICOLON = 51, 00083 MHV_KEY_QUOTE = 52, 00084 MHV_KEY_GRAVE_ACCENT = 53, 00085 MHV_KEY_COMMA = 54, 00086 MHV_KEY_FULLSTOP = 55, 00087 MHV_KEY_SLASH = 56, 00088 MHV_KEY_CAPSLOCK = 57, 00089 MHV_KEY_F1 = 58, 00090 MHV_KEY_F2 = 59, 00091 MHV_KEY_F3 = 60, 00092 MHV_KEY_F4 = 61, 00093 MHV_KEY_F5 = 62, 00094 MHV_KEY_F6 = 63, 00095 MHV_KEY_F7 = 64, 00096 MHV_KEY_F8 = 65, 00097 MHV_KEY_F9 = 66, 00098 MHV_KEY_F10 = 67, 00099 MHV_KEY_F11 = 68, 00100 MHV_KEY_F12 = 69, 00101 MHV_KEY_PRINTSCREEN = 70, 00102 MHV_KEY_SCROLL_LOCK = 71, 00103 MHV_KEY_PAUSE = 72, 00104 MHV_KEY_INSERT = 73, 00105 MHV_KEY_HOME = 74, 00106 MHV_KEY_PAGE_UP = 75, 00107 MHV_KEY_DELETE = 76, 00108 MHV_KEY_END = 77, 00109 MHV_KEY_PAGE_DOWN = 78, 00110 MHV_KEY_ARROW_RIGHT = 79, 00111 MHV_KEY_ARROW_LEFT = 80, 00112 MHV_KEY_ARROW_DOWN = 81, 00113 MHV_KEY_ARROW_UP = 82, 00114 MHV_KEY_NUM_LOCK = 83, 00115 MHV_KEYPAD_SLASH = 84, 00116 MHV_KEYPAD_ASTERISK = 85, 00117 MHV_KEYPAD_MINUS = 86, 00118 MHV_KEYPAD_PLUS = 87, 00119 MHV_KEYPAD_ENTER = 88, 00120 MHV_KEYPAD_1 = 89, 00121 MHV_KEYPAD_2 = 90, 00122 MHV_KEYPAD_3 = 91, 00123 MHV_KEYPAD_4 = 92, 00124 MHV_KEYPAD_5 = 93, 00125 MHV_KEYPAD_6 = 94, 00126 MHV_KEYPAD_7 = 95, 00127 MHV_KEYPAD_8 = 96, 00128 MHV_KEYPAD_9 = 97, 00129 MHV_KEYPAD_0 = 98, 00130 MHV_KEYPAD_FULLSTOP = 99, 00131 MHV_KEY_NON_US_BACKSLASH = 100, 00132 MHV_KEY_APPLICATION = 101, 00133 MHV_KEYPAD_POWER = 102, 00134 MHV_KEYPAD_EQUALS = 103, 00135 MHV_KEY_F13 = 104, 00136 MHV_KEY_F14 = 105, 00137 MHV_KEY_F15 = 106, 00138 MHV_KEY_F16 = 107, 00139 MHV_KEY_F17 = 108, 00140 MHV_KEY_F18 = 109, 00141 MHV_KEY_F19 = 110, 00142 MHV_KEY_F20 = 111, 00143 MHV_KEY_F21 = 112, 00144 MHV_KEY_F22 = 113, 00145 MHV_KEY_F23 = 114, 00146 MHV_KEY_F24 = 115, 00147 MHV_KEY_EXECUTE = 116, 00148 MHV_KEY_HELP = 117, 00149 MHV_KEY_MENU = 118, 00150 MHV_KEY_SELECT = 119, 00151 MHV_KEY_STOP = 120, 00152 MHV_KEY_AGAIN = 121, 00153 MHV_KEY_UNDO = 122, 00154 MHV_KEY_CUT = 123, 00155 MHV_KEY_COPY = 124, 00156 MHV_KEY_PASTE = 125, 00157 MHV_KEY_FIND = 126, 00158 MHV_KEY_MUTE = 127, 00159 MHV_KEY_VOLUME_UP = 128, 00160 MHV_KEY_VOLUME_DOWN = 129, 00161 MHV_KEY_LOCKING_CAPS_LOCK = 130, 00162 MHV_KEY_LOCKING_NUM_LOCK = 131, 00163 MHV_KEY_LOCKING_SCROLL_LOCK = 132, 00164 MHV_KEYPAD_COMMA = 133, 00165 MHV_KEYPAD_EQUAL = 134, 00166 MHV_KEY_CONTROL_LEFT = 224, 00167 MHV_KEY_SHIFT_LEFT = 225, 00168 MHV_KEY_ALT_LEFT = 226, 00169 MHV_KEY_GUI_LEFT = 227, 00170 MHV_KEY_CONTROL_RIGHT = 228, 00171 MHV_KEY_SHIFT_RIGHT = 229, 00172 MHV_KEY_ALT_RIGHT = 230, 00173 MHV_KEY_GUI_RIGHT = 231 00174 }; 00175 00176 typedef enum mhv_vusb_keyboard_key MHV_VUSB_KEYBOARD_KEY; 00177 00178 class MHV_VusbKeyboard : public MHV_AlarmListener { 00179 protected: 00180 MHV_RTC *_rtc; 00181 00182 public: 00183 MHV_VusbKeyboard(MHV_RTC *rtc); 00184 void keyStroke(MHV_VUSB_KEYBOARD_KEY key); 00185 void keyStroke(MHV_VUSB_KEYBOARD_KEY key, uint8_t modifiers); 00186 void keyDown(MHV_VUSB_KEYBOARD_KEY key, uint8_t modifiers); 00187 void keysUp(uint8_t modifiers); 00188 void keysUp(); 00189 void alarm(MHV_ALARM *alarm); 00190 }; 00191 00192 #endif /* MHV_VUSBKEYBOARD_H_ */