B. H. / Mbed 2 deprecated trolololol

Dependencies:   mbed

Revision:
0:505207de8566
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/USBDevice/USBHID/.svn/text-base/USBKeyboard.h.svn-base	Tue Nov 29 21:26:20 2011 +0000
@@ -0,0 +1,448 @@
+/* USBKeyboard.h */
+/* USB device example: Standard keyboard */
+/* Copyright (c) 2011 ARM Limited. All rights reserved. */
+
+#ifndef _USB_KEYBOARD_
+#define _USB_KEYBOARD_
+
+#include "USBHID.h"
+#include "Stream.h"
+
+#define REPORT_ID_KEYBOARD 1
+#define REPORT_ID_VOLUME   3
+
+enum MEDIA_KEY
+{
+    KEY_NEXT_TRACK,     /*!< next Track Button */
+    KEY_PREVIOUS_TRACK, /*!< Previous track Button */
+    KEY_STOP,           /*!< Stop Button */
+    KEY_PLAY_PAUSE,     /*!< Play/Pause Button */
+    KEY_MUTE,           /*!< Mute Button */
+    KEY_VOLUME_UP,      /*!< Volume Up Button */
+    KEY_VOLUME_DOWN,    /*!< Volume Down Button */
+};
+
+enum FUNCTION_KEY
+{
+    KEY_F1 = 128,   /* F1 key */
+    KEY_F2,         /* F2 key */
+    KEY_F3,         /* F3 key */
+    KEY_F4,         /* F4 key */
+    KEY_F5,         /* F5 key */
+    KEY_F6,         /* F6 key */
+    KEY_F7,         /* F7 key */
+    KEY_F8,         /* F8 key */
+    KEY_F9,         /* F9 key */
+    KEY_F10,        /* F10 key */
+    KEY_F11,        /* F11 key */
+    KEY_F12,        /* F12 key */
+    PRINT_SCREEN,   /* Print Screen key */
+    INSERT,         /* Insert key */
+    HOME,           /* Home key */
+    PAGE_UP,        /* Page Up key */
+    PAGE_DOWN,      /* Page Down key */
+};
+
+/** USB device: a keyboard
+ *
+ * Warning: you can only instantiate one instance of a USB device: USBMouse, USBKeyboard, USBAbsMouse, USBMouseKeyboard, or USBAbsMouseKeyboard.
+ *
+ * Example:
+ * @code
+ *
+ * #include "mbed.h"
+ * #include "USBKeyboard.h"
+ *
+ * USBKeyboard key;
+ * 
+ * int main(void)
+ * {
+ *   while (1)
+ *   {
+ *       key.puts("Hello World\r\n");
+ *       wait(1);
+ *   }
+ * }
+ *
+ * @endcode
+ */
+class USBKeyboard: public USBHID, public Stream
+{
+    public:
+    
+        /**
+        *   Constructor
+        *
+        * @param vendor_id Your vendor_id (default: 0x1234)
+        * @param product_id Your product_id (default: 0x0001)
+        * @param product_release Your preoduct_release (default: 0x0001)
+        *
+        */
+        USBKeyboard(uint16_t vendor_id = 0x1234, uint16_t product_id = 0x0003, uint16_t product_release = 0x0001): USBHID(vendor_id, product_id, product_release){};
+        
+        /**
+        * To send a character defined by a modifier(CTRL, SHIFT, ALT) and the key 
+        *
+        * @code
+        * //To send CTRL + s (save)
+        *  keyboard.keyCode(CTRL, 's');
+        * @endcode
+        *
+        * @param modifier bit 0: CTRL, bit 1: SHIFT, bit 2: ALT
+        * @param key character to send
+        * @return true if there is no error, false otherwise
+        */
+        bool keyCode(uint8_t modifier, uint8_t key);
+        
+        /**
+        * Send a character
+        *
+        * @param c character to be sent
+        * @return true if there is no error, false otherwise
+        */
+        virtual int _putc(int c);
+        
+        /**
+        * Control media keys
+        *
+        * @param key media key pressed (KEY_NEXT_TRACK, KEY_PREVIOUS_TRACK, KEY_STOP, KEY_PLAY_PAUSE, KEY_MUTE, KEY_VOLUME_UP, KEY_VOLUME_DOWN)
+        * @return true if there is no error, false otherwise
+        */
+        bool mediaControl(MEDIA_KEY key);
+        
+        /*
+        * To define the report descriptor. Warning: this method has to store the length of the report descriptor in reportLength.
+        *
+        * @return pointer to the report descriptor
+        */
+        virtual uint8_t * ReportDesc();
+        
+   private:
+        //dummy otherwise it doesn,t compile (we must define all methods of an abstract class)
+        virtual int _getc() { return -1;}
+        
+        
+};
+
+
+/* Modifiers */
+enum MODIFIER
+{
+    CTRL = 1,
+    SHIFT = 2,
+    ALT = 4,
+};
+
+typedef struct {
+    unsigned char usage;
+    unsigned char modifier;
+} KEYMAP;
+
+#ifdef US_KEYBOARD
+/* US keyboard (as HID standard) */
+#define KEYMAP_SIZE (145)
+const KEYMAP keymap[KEYMAP_SIZE] = {
+{0, 0},             /* NUL */
+{0, 0},             /* SOH */
+{0, 0},             /* STX */
+{0, 0},             /* ETX */
+{0, 0},             /* EOT */
+{0, 0},             /* ENQ */
+{0, 0},             /* ACK */  
+{0, 0},             /* BEL */
+{0x2a, 0},          /* BS  */  /* Keyboard Delete (Backspace) */ 
+{0x2b, 0},          /* TAB */  /* Keyboard Tab */
+{0x28, 0},          /* LF  */  /* Keyboard Return (Enter) */
+{0, 0},             /* VT  */
+{0, 0},             /* FF  */
+{0, 0},             /* CR  */
+{0, 0},             /* SO  */
+{0, 0},             /* SI  */
+{0, 0},             /* DEL */
+{0, 0},             /* DC1 */
+{0, 0},             /* DC2 */
+{0, 0},             /* DC3 */
+{0, 0},             /* DC4 */
+{0, 0},             /* NAK */
+{0, 0},             /* SYN */
+{0, 0},             /* ETB */
+{0, 0},             /* CAN */
+{0, 0},             /* EM  */
+{0, 0},             /* SUB */
+{0, 0},             /* ESC */
+{0, 0},             /* FS  */
+{0, 0},             /* GS  */
+{0, 0},             /* RS  */
+{0, 0},             /* US  */
+{0x2c, 0},          /*   */
+{0x1e, SHIFT},      /* ! */
+{0x34, SHIFT},      /* " */
+{0x20, SHIFT},      /* # */
+{0x21, SHIFT},      /* $ */
+{0x22, SHIFT},      /* % */
+{0x24, SHIFT},      /* & */
+{0x34, 0},          /* ' */
+{0x26, SHIFT},      /* ( */
+{0x27, SHIFT},      /* ) */
+{0x25, SHIFT},      /* * */
+{0x2e, SHIFT},      /* + */
+{0x36, 0},          /* , */
+{0x2d, 0},          /* - */
+{0x37, 0},          /* . */
+{0x38, 0},          /* / */
+{0x27, 0},          /* 0 */
+{0x1e, 0},          /* 1 */
+{0x1f, 0},          /* 2 */
+{0x20, 0},          /* 3 */
+{0x21, 0},          /* 4 */
+{0x22, 0},          /* 5 */
+{0x23, 0},          /* 6 */
+{0x24, 0},          /* 7 */
+{0x25, 0},          /* 8 */
+{0x26, 0},          /* 9 */
+{0x33, SHIFT},      /* : */
+{0x33, 0},          /* ; */
+{0x36, SHIFT},      /* < */
+{0x2e, 0},          /* = */
+{0x37, SHIFT},      /* > */
+{0x38, SHIFT},      /* ? */
+{0x1f, SHIFT},      /* @ */
+{0x04, SHIFT},      /* A */
+{0x05, SHIFT},      /* B */
+{0x06, SHIFT},      /* C */
+{0x07, SHIFT},      /* D */
+{0x08, SHIFT},      /* E */
+{0x09, SHIFT},      /* F */
+{0x0a, SHIFT},      /* G */
+{0x0b, SHIFT},      /* H */
+{0x0c, SHIFT},      /* I */
+{0x0d, SHIFT},      /* J */
+{0x0e, SHIFT},      /* K */
+{0x0f, SHIFT},      /* L */
+{0x10, SHIFT},      /* M */
+{0x11, SHIFT},      /* N */
+{0x12, SHIFT},      /* O */
+{0x13, SHIFT},      /* P */
+{0x14, SHIFT},      /* Q */
+{0x15, SHIFT},      /* R */
+{0x16, SHIFT},      /* S */
+{0x17, SHIFT},      /* T */
+{0x18, SHIFT},      /* U */
+{0x19, SHIFT},      /* V */
+{0x1a, SHIFT},      /* W */
+{0x1b, SHIFT},      /* X */
+{0x1c, SHIFT},      /* Y */
+{0x1d, SHIFT},      /* Z */
+{0x2f, 0},          /* [ */
+{0x31, 0},          /* \ */
+{0x30, 0},          /* ] */
+{0x23, SHIFT},      /* ^ */
+{0x2d, SHIFT},      /* _ */
+{0x35, 0},          /* ` */
+{0x04, 0},          /* a */
+{0x05, 0},          /* b */
+{0x06, 0},          /* c */
+{0x07, 0},          /* d */
+{0x08, 0},          /* e */
+{0x09, 0},          /* f */
+{0x0a, 0},          /* g */
+{0x0b, 0},          /* h */
+{0x0c, 0},          /* i */
+{0x0d, 0},          /* j */
+{0x0e, 0},          /* k */
+{0x0f, 0},          /* l */
+{0x10, 0},          /* m */
+{0x11, 0},          /* n */
+{0x12, 0},          /* o */
+{0x13, 0},          /* p */
+{0x14, 0},          /* q */
+{0x15, 0},          /* r */
+{0x16, 0},          /* s */
+{0x17, 0},          /* t */
+{0x18, 0},          /* u */
+{0x19, 0},          /* v */
+{0x1a, 0},          /* w */
+{0x1b, 0},          /* x */
+{0x1c, 0},          /* y */
+{0x1d, 0},          /* z */
+{0x2f, SHIFT},      /* { */
+{0x31, SHIFT},      /* | */
+{0x30, SHIFT},      /* } */
+{0x35, SHIFT},      /* ~ */
+{0,0},              /* DEL */ 
+
+{0x3a, 0},          /* F1 */
+{0x3b, 0},          /* F2 */
+{0x3c, 0},          /* F3 */
+{0x3d, 0},          /* F4 */
+{0x3e, 0},          /* F5 */
+{0x3f, 0},          /* F6 */
+{0x40, 0},          /* F7 */
+{0x41, 0},          /* F8 */
+{0x42, 0},          /* F9 */
+{0x43, 0},          /* F10 */
+{0x44, 0},          /* F11 */
+{0x45, 0},          /* F12 */
+
+{0x46, 0},          /* PRINT_SCREEN */
+{0x49, 0},          /* INSERT */
+{0x4a, 0},          /* HOME */
+{0x4b, 0},          /* PAGE_UP */
+{0x4e, 0},          /* PAGE_DOWN */
+};
+
+#else
+/* UK keyboard */
+#define KEYMAP_SIZE (145)
+const KEYMAP keymap[KEYMAP_SIZE] = {
+{0, 0},             /* NUL */
+{0, 0},             /* SOH */
+{0, 0},             /* STX */
+{0, 0},             /* ETX */
+{0, 0},             /* EOT */
+{0, 0},             /* ENQ */
+{0, 0},             /* ACK */  
+{0, 0},             /* BEL */
+{0x2a, 0},          /* BS  */  /* Keyboard Delete (Backspace) */ 
+{0x2b, 0},          /* TAB */  /* Keyboard Tab */
+{0x28, 0},          /* LF  */  /* Keyboard Return (Enter) */
+{0, 0},             /* VT  */
+{0, 0},             /* FF  */
+{0, 0},             /* CR  */
+{0, 0},             /* SO  */
+{0, 0},             /* SI  */
+{0, 0},             /* DEL */
+{0, 0},             /* DC1 */
+{0, 0},             /* DC2 */
+{0, 0},             /* DC3 */
+{0, 0},             /* DC4 */
+{0, 0},             /* NAK */
+{0, 0},             /* SYN */
+{0, 0},             /* ETB */
+{0, 0},             /* CAN */
+{0, 0},             /* EM  */
+{0, 0},             /* SUB */
+{0, 0},             /* ESC */
+{0, 0},             /* FS  */
+{0, 0},             /* GS  */
+{0, 0},             /* RS  */
+{0, 0},             /* US  */
+{0x2c, 0},          /*   */
+{0x1e, SHIFT},      /* ! */
+{0x1f, SHIFT},      /* " */ 
+{0x32, 0},          /* # */ 
+{0x21, SHIFT},      /* $ */
+{0x22, SHIFT},      /* % */
+{0x24, SHIFT},      /* & */
+{0x34, 0},          /* ' */
+{0x26, SHIFT},      /* ( */
+{0x27, SHIFT},      /* ) */
+{0x25, SHIFT},      /* * */
+{0x2e, SHIFT},      /* + */
+{0x36, 0},          /* , */
+{0x2d, 0},          /* - */
+{0x37, 0},          /* . */
+{0x38, 0},          /* / */
+{0x27, 0},          /* 0 */
+{0x1e, 0},          /* 1 */
+{0x1f, 0},          /* 2 */
+{0x20, 0},          /* 3 */
+{0x21, 0},          /* 4 */
+{0x22, 0},          /* 5 */
+{0x23, 0},          /* 6 */
+{0x24, 0},          /* 7 */
+{0x25, 0},          /* 8 */
+{0x26, 0},          /* 9 */
+{0x33, SHIFT},      /* : */
+{0x33, 0},          /* ; */
+{0x36, SHIFT},      /* < */
+{0x2e, 0},          /* = */
+{0x37, SHIFT},      /* > */
+{0x38, SHIFT},      /* ? */
+{0x34, SHIFT},      /* @ */
+{0x04, SHIFT},      /* A */
+{0x05, SHIFT},      /* B */
+{0x06, SHIFT},      /* C */
+{0x07, SHIFT},      /* D */
+{0x08, SHIFT},      /* E */
+{0x09, SHIFT},      /* F */
+{0x0a, SHIFT},      /* G */
+{0x0b, SHIFT},      /* H */
+{0x0c, SHIFT},      /* I */
+{0x0d, SHIFT},      /* J */
+{0x0e, SHIFT},      /* K */
+{0x0f, SHIFT},      /* L */
+{0x10, SHIFT},      /* M */
+{0x11, SHIFT},      /* N */
+{0x12, SHIFT},      /* O */
+{0x13, SHIFT},      /* P */
+{0x14, SHIFT},      /* Q */
+{0x15, SHIFT},      /* R */
+{0x16, SHIFT},      /* S */
+{0x17, SHIFT},      /* T */
+{0x18, SHIFT},      /* U */
+{0x19, SHIFT},      /* V */
+{0x1a, SHIFT},      /* W */
+{0x1b, SHIFT},      /* X */
+{0x1c, SHIFT},      /* Y */
+{0x1d, SHIFT},      /* Z */
+{0x2f, 0},          /* [ */
+{0x64, 0},          /* \ */ 
+{0x30, 0},          /* ] */
+{0x23, SHIFT},      /* ^ */
+{0x2d, SHIFT},      /* _ */
+{0x35, 0},          /* ` */
+{0x04, 0},          /* a */
+{0x05, 0},          /* b */
+{0x06, 0},          /* c */
+{0x07, 0},          /* d */
+{0x08, 0},          /* e */
+{0x09, 0},          /* f */
+{0x0a, 0},          /* g */
+{0x0b, 0},          /* h */
+{0x0c, 0},          /* i */
+{0x0d, 0},          /* j */
+{0x0e, 0},          /* k */
+{0x0f, 0},          /* l */
+{0x10, 0},          /* m */
+{0x11, 0},          /* n */
+{0x12, 0},          /* o */
+{0x13, 0},          /* p */
+{0x14, 0},          /* q */
+{0x15, 0},          /* r */
+{0x16, 0},          /* s */
+{0x17, 0},          /* t */
+{0x18, 0},          /* u */
+{0x19, 0},          /* v */
+{0x1a, 0},          /* w */
+{0x1b, 0},          /* x */
+{0x1c, 0},          /* y */
+{0x1d, 0},          /* z */
+{0x2f, SHIFT},      /* { */
+{0x64, SHIFT},      /* | */ 
+{0x30, SHIFT},      /* } */
+{0x32, SHIFT},      /* ~ */ 
+{0,0},             /* DEL */
+
+{0x3a, 0},          /* F1 */
+{0x3b, 0},          /* F2 */
+{0x3c, 0},          /* F3 */
+{0x3d, 0},          /* F4 */
+{0x3e, 0},          /* F5 */
+{0x3f, 0},          /* F6 */
+{0x40, 0},          /* F7 */
+{0x41, 0},          /* F8 */
+{0x42, 0},          /* F9 */
+{0x43, 0},          /* F10 */
+{0x44, 0},          /* F11 */
+{0x45, 0},          /* F12 */
+
+{0x46, 0},          /* PRINT_SCREEN */
+{0x49, 0},          /* INSERT */
+{0x4a, 0},          /* HOME */
+{0x4b, 0},          /* PAGE_UP */
+{0x4e, 0},          /* PAGE_DOWN */
+};
+#endif
+
+#endif