Revision:
0:e98d1c2b16c6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/HID_devices/USBKeyboard.c	Thu Oct 20 14:07:30 2011 +0000
@@ -0,0 +1,83 @@
+/* USBKeyboard.c */
+/* USB device example: Standard keyboard */
+/* Copyright (c) 2011 ARM Limited. All rights reserved. */
+
+#include "stdint.h"
+
+#include "USBKeyboard.h"
+
+/*
+ *  Descriptors
+ */
+
+uint8_t * USBKeyboard::ReportDesc() {
+    static uint8_t reportDescriptor[] = {
+
+        /* Based on Appendix E.6 of "Device Class Definition for Human Interface
+           Devices (HID)" Version 1.11. */
+
+        USAGE_PAGE(1), 0x01,                    /* Generic Desktop */
+        USAGE(1), 0x06,                         /* Keyboard */
+        COLLECTION(1), 0x01,                    /* Application*/
+        REPORT_ID(1),       REPORT_ID_KEYBOARD,
+
+        USAGE_PAGE(1), 0x07,                    /* Key Codes */
+        USAGE_MINIMUM(1), 0xE0,
+        USAGE_MAXIMUM(1), 0xE7,
+        LOGICAL_MINIMUM(1), 0x00,
+        LOGICAL_MAXIMUM(1), 0x01,
+        REPORT_SIZE(1), 0x01,
+        REPORT_COUNT(1), 0x08,
+        INPUT(1), 0x02,                         /* Data, Variable, Absolute */
+        REPORT_COUNT(1), 0x01,
+        REPORT_SIZE(1), 0x08,
+        INPUT(1), 0x01,                         /* Constant */
+        REPORT_COUNT(1), 0x05,
+        REPORT_SIZE(1), 0x01,
+
+
+        USAGE_PAGE(1), 0x08,                    /* LEDs */
+        USAGE_MINIMUM(1), 0x01,
+        USAGE_MAXIMUM(1), 0x05,
+        OUTPUT(1), 0x02,                        /* Data, Variable, Absolute */
+        REPORT_COUNT(1), 0x01,
+        REPORT_SIZE(1), 0x03,
+        OUTPUT(1), 0x01,                        /* Constant */
+        REPORT_COUNT(1), 0x06,
+        REPORT_SIZE(1), 0x08,
+        LOGICAL_MINIMUM(1), 0x00,
+        LOGICAL_MAXIMUM(1), 0x65,
+
+
+        USAGE_PAGE(1), 0x07,                    /* Key Codes */
+        USAGE_MINIMUM(1), 0x00,
+        USAGE_MAXIMUM(1), 0x65,
+        INPUT(1), 0x00,                         /* Data, Array */
+        END_COLLECTION(0),
+
+        /* Media Control */
+        USAGE_PAGE(1), 0x0C,
+        USAGE(1), 0x01,
+        COLLECTION(1), 0x01,
+        REPORT_ID(1), REPORT_ID_VOLUME,
+        USAGE_PAGE(1), 0x0C,
+        LOGICAL_MINIMUM(1), 0x00,
+        LOGICAL_MAXIMUM(1), 0x01,
+        REPORT_SIZE(1), 0x01,
+        REPORT_COUNT(1), 0x07,
+        USAGE(1), 0xB5,             /* Next Track */
+        USAGE(1), 0xB6,             /* Previous Track */
+        USAGE(1), 0xB7,             /* Stop */
+        USAGE(1), 0xCD,             /* Play / Pause */
+        USAGE(1), 0xE2,             /* Mute */
+        USAGE(1), 0xE9,             /* Volume Up */
+        USAGE(1), 0xEA,             /* Volume Down */
+        INPUT(1), 0x02,             /* Input (Data, Variable, Absolute) */
+        REPORT_COUNT(1), 0x01,
+        INPUT(1), 0x01,
+        END_COLLECTION(0),
+
+    };
+    reportLength = sizeof(reportDescriptor);
+    return reportDescriptor;
+}