Based on USBKeyboardMouse example. I added USB String Descriptor so mbed reports itself to host not only with VID & PID but also with name of manufacturer, product name, serial number, configuration number and interface name. These can be changed to matching Yours in USBhid.cpp file on lines 88 - 122.

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers asciihid.h Source File

asciihid.h

00001 /* asciihid.h */
00002 /* ASCII to HID Keyboard lookup table */
00003 /* Copyright (c) Phil Wright 2008 */
00004 
00005 #ifndef HIDTABLE_H
00006 #define HIDTABLE_H
00007 
00008 /* Default is UK keyboard layout */
00009 /* #define US_KEYBOARD */
00010 
00011 /* Modifiers */
00012 #define SHIFT (1<<1)
00013 
00014 typedef struct {
00015     unsigned char usage;
00016     unsigned char modifier;
00017 } KEYMAP;
00018 
00019 #ifdef US_KEYBOARD
00020 /* US keyboard (as HID standard) */
00021 #define KEYMAP_SIZE (128)
00022 const KEYMAP keymap[KEYMAP_SIZE] = {
00023 {0, 0},             /* NUL */
00024 {0, 0},             /* SOH */
00025 {0, 0},             /* STX */
00026 {0, 0},             /* ETX */
00027 {0, 0},             /* EOT */
00028 {0, 0},             /* ENQ */
00029 {0, 0},             /* ACK */  
00030 {0, 0},             /* BEL */
00031 {0x2a, 0},          /* BS  */  /* Keyboard Delete (Backspace) */ 
00032 {0x2b, 0},          /* TAB */  /* Keyboard Tab */
00033 {0x28, 0},          /* LF  */  /* Keyboard Return (Enter) */
00034 {0, 0},             /* VT  */
00035 {0, 0},             /* FF  */
00036 {0, 0},             /* CR  */
00037 {0, 0},             /* SO  */
00038 {0, 0},             /* SI  */
00039 {0, 0},             /* DEL */
00040 {0, 0},             /* DC1 */
00041 {0, 0},             /* DC2 */
00042 {0, 0},             /* DC3 */
00043 {0, 0},             /* DC4 */
00044 {0, 0},             /* NAK */
00045 {0, 0},             /* SYN */
00046 {0, 0},             /* ETB */
00047 {0, 0},             /* CAN */
00048 {0, 0},             /* EM  */
00049 {0, 0},             /* SUB */
00050 {0, 0},             /* ESC */
00051 {0, 0},             /* FS  */
00052 {0, 0},             /* GS  */
00053 {0, 0},             /* RS  */
00054 {0, 0},             /* US  */
00055 {0x2c, 0},          /*   */
00056 {0x1e, SHIFT},      /* ! */
00057 {0x34, SHIFT},      /* " */
00058 {0x20, SHIFT},      /* # */
00059 {0x21, SHIFT},      /* $ */
00060 {0x22, SHIFT},      /* % */
00061 {0x24, SHIFT},      /* & */
00062 {0x34, 0},          /* ' */
00063 {0x26, SHIFT},      /* ( */
00064 {0x27, SHIFT},      /* ) */
00065 {0x25, SHIFT},      /* * */
00066 {0x2e, SHIFT},      /* + */
00067 {0x36, 0},          /* , */
00068 {0x2d, 0},          /* - */
00069 {0x37, 0},          /* . */
00070 {0x38, 0},          /* / */
00071 {0x27, 0},          /* 0 */
00072 {0x1e, 0},          /* 1 */
00073 {0x1f, 0},          /* 2 */
00074 {0x20, 0},          /* 3 */
00075 {0x21, 0},          /* 4 */
00076 {0x22, 0},          /* 5 */
00077 {0x23, 0},          /* 6 */
00078 {0x24, 0},          /* 7 */
00079 {0x25, 0},          /* 8 */
00080 {0x26, 0},          /* 9 */
00081 {0x33, SHIFT},      /* : */
00082 {0x33, 0},          /* ; */
00083 {0x36, SHIFT},      /* < */
00084 {0x2e, 0},          /* = */
00085 {0x37, SHIFT},      /* > */
00086 {0x38, SHIFT},      /* ? */
00087 {0x1f, SHIFT},      /* @ */
00088 {0x04, SHIFT},      /* A */
00089 {0x05, SHIFT},      /* B */
00090 {0x06, SHIFT},      /* C */
00091 {0x07, SHIFT},      /* D */
00092 {0x08, SHIFT},      /* E */
00093 {0x09, SHIFT},      /* F */
00094 {0x0a, SHIFT},      /* G */
00095 {0x0b, SHIFT},      /* H */
00096 {0x0c, SHIFT},      /* I */
00097 {0x0d, SHIFT},      /* J */
00098 {0x0e, SHIFT},      /* K */
00099 {0x0f, SHIFT},      /* L */
00100 {0x10, SHIFT},      /* M */
00101 {0x11, SHIFT},      /* N */
00102 {0x12, SHIFT},      /* O */
00103 {0x13, SHIFT},      /* P */
00104 {0x14, SHIFT},      /* Q */
00105 {0x15, SHIFT},      /* R */
00106 {0x16, SHIFT},      /* S */
00107 {0x17, SHIFT},      /* T */
00108 {0x18, SHIFT},      /* U */
00109 {0x19, SHIFT},      /* V */
00110 {0x1a, SHIFT},      /* W */
00111 {0x1b, SHIFT},      /* X */
00112 {0x1c, SHIFT},      /* Y */
00113 {0x1d, SHIFT},      /* Z */
00114 {0x2f, 0},          /* [ */
00115 {0x31, 0},          /* \ */
00116 {0x30, 0},          /* ] */
00117 {0x23, SHIFT},      /* ^ */
00118 {0x2d, SHIFT},      /* _ */
00119 {0x35, 0},          /* ` */
00120 {0x04, 0},          /* a */
00121 {0x05, 0},          /* b */
00122 {0x06, 0},          /* c */
00123 {0x07, 0},          /* d */
00124 {0x08, 0},          /* e */
00125 {0x09, 0},          /* f */
00126 {0x0a, 0},          /* g */
00127 {0x0b, 0},          /* h */
00128 {0x0c, 0},          /* i */
00129 {0x0d, 0},          /* j */
00130 {0x0e, 0},          /* k */
00131 {0x0f, 0},          /* l */
00132 {0x10, 0},          /* m */
00133 {0x11, 0},          /* n */
00134 {0x12, 0},          /* o */
00135 {0x13, 0},          /* p */
00136 {0x14, 0},          /* q */
00137 {0x15, 0},          /* r */
00138 {0x16, 0},          /* s */
00139 {0x17, 0},          /* t */
00140 {0x18, 0},          /* u */
00141 {0x19, 0},          /* v */
00142 {0x1a, 0},          /* w */
00143 {0x1b, 0},          /* x */
00144 {0x1c, 0},          /* y */
00145 {0x1d, 0},          /* z */
00146 {0x2f, SHIFT},      /* { */
00147 {0x31, SHIFT},      /* | */
00148 {0x30, SHIFT},      /* } */
00149 {0x35, SHIFT},      /* ~ */
00150 {0,0},              /* DEL */
00151 };
00152 
00153 #else
00154 /* UK keyboard */
00155 #define KEYMAP_SIZE (128)
00156 const KEYMAP keymap[KEYMAP_SIZE] = {
00157 {0, 0},             /* NUL */
00158 {0, 0},             /* SOH */
00159 {0, 0},             /* STX */
00160 {0, 0},             /* ETX */
00161 {0, 0},             /* EOT */
00162 {0, 0},             /* ENQ */
00163 {0, 0},             /* ACK */  
00164 {0, 0},             /* BEL */
00165 {0x2a, 0},          /* BS  */  /* Keyboard Delete (Backspace) */ 
00166 {0x2b, 0},          /* TAB */  /* Keyboard Tab */
00167 {0x28, 0},          /* LF  */  /* Keyboard Return (Enter) */
00168 {0, 0},             /* VT  */
00169 {0, 0},             /* FF  */
00170 {0, 0},             /* CR  */
00171 {0, 0},             /* SO  */
00172 {0, 0},             /* SI  */
00173 {0, 0},             /* DEL */
00174 {0, 0},             /* DC1 */
00175 {0, 0},             /* DC2 */
00176 {0, 0},             /* DC3 */
00177 {0, 0},             /* DC4 */
00178 {0, 0},             /* NAK */
00179 {0, 0},             /* SYN */
00180 {0, 0},             /* ETB */
00181 {0, 0},             /* CAN */
00182 {0, 0},             /* EM  */
00183 {0, 0},             /* SUB */
00184 {0, 0},             /* ESC */
00185 {0, 0},             /* FS  */
00186 {0, 0},             /* GS  */
00187 {0, 0},             /* RS  */
00188 {0, 0},             /* US  */
00189 {0x2c, 0},          /*   */
00190 {0x1e, SHIFT},      /* ! */
00191 {0x1f, SHIFT},      /* " */ 
00192 {0x32, 0},          /* # */ 
00193 {0x21, SHIFT},      /* $ */
00194 {0x22, SHIFT},      /* % */
00195 {0x24, SHIFT},      /* & */
00196 {0x34, 0},          /* ' */
00197 {0x26, SHIFT},      /* ( */
00198 {0x27, SHIFT},      /* ) */
00199 {0x25, SHIFT},      /* * */
00200 {0x2e, SHIFT},      /* + */
00201 {0x36, 0},          /* , */
00202 {0x2d, 0},          /* - */
00203 {0x37, 0},          /* . */
00204 {0x38, 0},          /* / */
00205 {0x27, 0},          /* 0 */
00206 {0x1e, 0},          /* 1 */
00207 {0x1f, 0},          /* 2 */
00208 {0x20, 0},          /* 3 */
00209 {0x21, 0},          /* 4 */
00210 {0x22, 0},          /* 5 */
00211 {0x23, 0},          /* 6 */
00212 {0x24, 0},          /* 7 */
00213 {0x25, 0},          /* 8 */
00214 {0x26, 0},          /* 9 */
00215 {0x33, SHIFT},      /* : */
00216 {0x33, 0},          /* ; */
00217 {0x36, SHIFT},      /* < */
00218 {0x2e, 0},          /* = */
00219 {0x37, SHIFT},      /* > */
00220 {0x38, SHIFT},      /* ? */
00221 {0x34, SHIFT},      /* @ */
00222 {0x04, SHIFT},      /* A */
00223 {0x05, SHIFT},      /* B */
00224 {0x06, SHIFT},      /* C */
00225 {0x07, SHIFT},      /* D */
00226 {0x08, SHIFT},      /* E */
00227 {0x09, SHIFT},      /* F */
00228 {0x0a, SHIFT},      /* G */
00229 {0x0b, SHIFT},      /* H */
00230 {0x0c, SHIFT},      /* I */
00231 {0x0d, SHIFT},      /* J */
00232 {0x0e, SHIFT},      /* K */
00233 {0x0f, SHIFT},      /* L */
00234 {0x10, SHIFT},      /* M */
00235 {0x11, SHIFT},      /* N */
00236 {0x12, SHIFT},      /* O */
00237 {0x13, SHIFT},      /* P */
00238 {0x14, SHIFT},      /* Q */
00239 {0x15, SHIFT},      /* R */
00240 {0x16, SHIFT},      /* S */
00241 {0x17, SHIFT},      /* T */
00242 {0x18, SHIFT},      /* U */
00243 {0x19, SHIFT},      /* V */
00244 {0x1a, SHIFT},      /* W */
00245 {0x1b, SHIFT},      /* X */
00246 {0x1c, SHIFT},      /* Y */
00247 {0x1d, SHIFT},      /* Z */
00248 {0x2f, 0},          /* [ */
00249 {0x64, 0},          /* \ */ 
00250 {0x30, 0},          /* ] */
00251 {0x23, SHIFT},      /* ^ */
00252 {0x2d, SHIFT},      /* _ */
00253 {0x35, 0},          /* ` */
00254 {0x04, 0},          /* a */
00255 {0x05, 0},          /* b */
00256 {0x06, 0},          /* c */
00257 {0x07, 0},          /* d */
00258 {0x08, 0},          /* e */
00259 {0x09, 0},          /* f */
00260 {0x0a, 0},          /* g */
00261 {0x0b, 0},          /* h */
00262 {0x0c, 0},          /* i */
00263 {0x0d, 0},          /* j */
00264 {0x0e, 0},          /* k */
00265 {0x0f, 0},          /* l */
00266 {0x10, 0},          /* m */
00267 {0x11, 0},          /* n */
00268 {0x12, 0},          /* o */
00269 {0x13, 0},          /* p */
00270 {0x14, 0},          /* q */
00271 {0x15, 0},          /* r */
00272 {0x16, 0},          /* s */
00273 {0x17, 0},          /* t */
00274 {0x18, 0},          /* u */
00275 {0x19, 0},          /* v */
00276 {0x1a, 0},          /* w */
00277 {0x1b, 0},          /* x */
00278 {0x1c, 0},          /* y */
00279 {0x1d, 0},          /* z */
00280 {0x2f, SHIFT},      /* { */
00281 {0x64, SHIFT},      /* | */ 
00282 {0x30, SHIFT},      /* } */
00283 {0x32, SHIFT},      /* ~ */ 
00284 {0,0},             /* DEL */
00285 };
00286 #endif
00287 
00288 
00289 #endif