MHVLib  20111011
An efficiency oriented runtime library for AVR microcontrollers
A:/eclipse/mhvlib-Vusb-Keyboard/MHV_VusbKeyboard.h
Go to the documentation of this file.
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_ */