This program allows to transform analog signal from rotary dial phone to numeric keys.

Dependencies:   mbed

Committer:
amigainc
Date:
Sun Aug 07 09:10:18 2011 +0000
Revision:
0:2c8568cec97f

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
amigainc 0:2c8568cec97f 1 /* asciihid.h */
amigainc 0:2c8568cec97f 2 /* ASCII to HID Keyboard lookup table */
amigainc 0:2c8568cec97f 3 /* Copyright (c) Phil Wright 2008 */
amigainc 0:2c8568cec97f 4
amigainc 0:2c8568cec97f 5 #ifndef HIDTABLE_H
amigainc 0:2c8568cec97f 6 #define HIDTABLE_H
amigainc 0:2c8568cec97f 7
amigainc 0:2c8568cec97f 8 /* Default is UK keyboard layout */
amigainc 0:2c8568cec97f 9 /* #define US_KEYBOARD */
amigainc 0:2c8568cec97f 10
amigainc 0:2c8568cec97f 11 /* Modifiers */
amigainc 0:2c8568cec97f 12 #define SHIFT (1<<1)
amigainc 0:2c8568cec97f 13
amigainc 0:2c8568cec97f 14 typedef struct {
amigainc 0:2c8568cec97f 15 unsigned char usage;
amigainc 0:2c8568cec97f 16 unsigned char modifier;
amigainc 0:2c8568cec97f 17 } KEYMAP;
amigainc 0:2c8568cec97f 18
amigainc 0:2c8568cec97f 19 #ifdef US_KEYBOARD
amigainc 0:2c8568cec97f 20 /* US keyboard (as HID standard) */
amigainc 0:2c8568cec97f 21 #define KEYMAP_SIZE (128)
amigainc 0:2c8568cec97f 22 const KEYMAP keymap[KEYMAP_SIZE] = {
amigainc 0:2c8568cec97f 23 {0, 0}, /* NUL */
amigainc 0:2c8568cec97f 24 {0, 0}, /* SOH */
amigainc 0:2c8568cec97f 25 {0, 0}, /* STX */
amigainc 0:2c8568cec97f 26 {0, 0}, /* ETX */
amigainc 0:2c8568cec97f 27 {0, 0}, /* EOT */
amigainc 0:2c8568cec97f 28 {0, 0}, /* ENQ */
amigainc 0:2c8568cec97f 29 {0, 0}, /* ACK */
amigainc 0:2c8568cec97f 30 {0, 0}, /* BEL */
amigainc 0:2c8568cec97f 31 {0x2a, 0}, /* BS */ /* Keyboard Delete (Backspace) */
amigainc 0:2c8568cec97f 32 {0x2b, 0}, /* TAB */ /* Keyboard Tab */
amigainc 0:2c8568cec97f 33 {0x28, 0}, /* LF */ /* Keyboard Return (Enter) */
amigainc 0:2c8568cec97f 34 {0, 0}, /* VT */
amigainc 0:2c8568cec97f 35 {0, 0}, /* FF */
amigainc 0:2c8568cec97f 36 {0, 0}, /* CR */
amigainc 0:2c8568cec97f 37 {0, 0}, /* SO */
amigainc 0:2c8568cec97f 38 {0, 0}, /* SI */
amigainc 0:2c8568cec97f 39 {0, 0}, /* DEL */
amigainc 0:2c8568cec97f 40 {0, 0}, /* DC1 */
amigainc 0:2c8568cec97f 41 {0, 0}, /* DC2 */
amigainc 0:2c8568cec97f 42 {0, 0}, /* DC3 */
amigainc 0:2c8568cec97f 43 {0, 0}, /* DC4 */
amigainc 0:2c8568cec97f 44 {0, 0}, /* NAK */
amigainc 0:2c8568cec97f 45 {0, 0}, /* SYN */
amigainc 0:2c8568cec97f 46 {0, 0}, /* ETB */
amigainc 0:2c8568cec97f 47 {0, 0}, /* CAN */
amigainc 0:2c8568cec97f 48 {0, 0}, /* EM */
amigainc 0:2c8568cec97f 49 {0, 0}, /* SUB */
amigainc 0:2c8568cec97f 50 {0, 0}, /* ESC */
amigainc 0:2c8568cec97f 51 {0, 0}, /* FS */
amigainc 0:2c8568cec97f 52 {0, 0}, /* GS */
amigainc 0:2c8568cec97f 53 {0, 0}, /* RS */
amigainc 0:2c8568cec97f 54 {0, 0}, /* US */
amigainc 0:2c8568cec97f 55 {0x2c, 0}, /* */
amigainc 0:2c8568cec97f 56 {0x1e, SHIFT}, /* ! */
amigainc 0:2c8568cec97f 57 {0x34, SHIFT}, /* " */
amigainc 0:2c8568cec97f 58 {0x20, SHIFT}, /* # */
amigainc 0:2c8568cec97f 59 {0x21, SHIFT}, /* $ */
amigainc 0:2c8568cec97f 60 {0x22, SHIFT}, /* % */
amigainc 0:2c8568cec97f 61 {0x24, SHIFT}, /* & */
amigainc 0:2c8568cec97f 62 {0x34, 0}, /* ' */
amigainc 0:2c8568cec97f 63 {0x26, SHIFT}, /* ( */
amigainc 0:2c8568cec97f 64 {0x27, SHIFT}, /* ) */
amigainc 0:2c8568cec97f 65 {0x25, SHIFT}, /* * */
amigainc 0:2c8568cec97f 66 {0x2e, SHIFT}, /* + */
amigainc 0:2c8568cec97f 67 {0x36, 0}, /* , */
amigainc 0:2c8568cec97f 68 {0x2d, 0}, /* - */
amigainc 0:2c8568cec97f 69 {0x37, 0}, /* . */
amigainc 0:2c8568cec97f 70 {0x38, 0}, /* / */
amigainc 0:2c8568cec97f 71 {0x27, 0}, /* 0 */
amigainc 0:2c8568cec97f 72 {0x1e, 0}, /* 1 */
amigainc 0:2c8568cec97f 73 {0x1f, 0}, /* 2 */
amigainc 0:2c8568cec97f 74 {0x20, 0}, /* 3 */
amigainc 0:2c8568cec97f 75 {0x21, 0}, /* 4 */
amigainc 0:2c8568cec97f 76 {0x22, 0}, /* 5 */
amigainc 0:2c8568cec97f 77 {0x23, 0}, /* 6 */
amigainc 0:2c8568cec97f 78 {0x24, 0}, /* 7 */
amigainc 0:2c8568cec97f 79 {0x25, 0}, /* 8 */
amigainc 0:2c8568cec97f 80 {0x26, 0}, /* 9 */
amigainc 0:2c8568cec97f 81 {0x33, SHIFT}, /* : */
amigainc 0:2c8568cec97f 82 {0x33, 0}, /* ; */
amigainc 0:2c8568cec97f 83 {0x36, SHIFT}, /* < */
amigainc 0:2c8568cec97f 84 {0x2e, 0}, /* = */
amigainc 0:2c8568cec97f 85 {0x37, SHIFT}, /* > */
amigainc 0:2c8568cec97f 86 {0x38, SHIFT}, /* ? */
amigainc 0:2c8568cec97f 87 {0x1f, SHIFT}, /* @ */
amigainc 0:2c8568cec97f 88 {0x04, SHIFT}, /* A */
amigainc 0:2c8568cec97f 89 {0x05, SHIFT}, /* B */
amigainc 0:2c8568cec97f 90 {0x06, SHIFT}, /* C */
amigainc 0:2c8568cec97f 91 {0x07, SHIFT}, /* D */
amigainc 0:2c8568cec97f 92 {0x08, SHIFT}, /* E */
amigainc 0:2c8568cec97f 93 {0x09, SHIFT}, /* F */
amigainc 0:2c8568cec97f 94 {0x0a, SHIFT}, /* G */
amigainc 0:2c8568cec97f 95 {0x0b, SHIFT}, /* H */
amigainc 0:2c8568cec97f 96 {0x0c, SHIFT}, /* I */
amigainc 0:2c8568cec97f 97 {0x0d, SHIFT}, /* J */
amigainc 0:2c8568cec97f 98 {0x0e, SHIFT}, /* K */
amigainc 0:2c8568cec97f 99 {0x0f, SHIFT}, /* L */
amigainc 0:2c8568cec97f 100 {0x10, SHIFT}, /* M */
amigainc 0:2c8568cec97f 101 {0x11, SHIFT}, /* N */
amigainc 0:2c8568cec97f 102 {0x12, SHIFT}, /* O */
amigainc 0:2c8568cec97f 103 {0x13, SHIFT}, /* P */
amigainc 0:2c8568cec97f 104 {0x14, SHIFT}, /* Q */
amigainc 0:2c8568cec97f 105 {0x15, SHIFT}, /* R */
amigainc 0:2c8568cec97f 106 {0x16, SHIFT}, /* S */
amigainc 0:2c8568cec97f 107 {0x17, SHIFT}, /* T */
amigainc 0:2c8568cec97f 108 {0x18, SHIFT}, /* U */
amigainc 0:2c8568cec97f 109 {0x19, SHIFT}, /* V */
amigainc 0:2c8568cec97f 110 {0x1a, SHIFT}, /* W */
amigainc 0:2c8568cec97f 111 {0x1b, SHIFT}, /* X */
amigainc 0:2c8568cec97f 112 {0x1c, SHIFT}, /* Y */
amigainc 0:2c8568cec97f 113 {0x1d, SHIFT}, /* Z */
amigainc 0:2c8568cec97f 114 {0x2f, 0}, /* [ */
amigainc 0:2c8568cec97f 115 {0x31, 0}, /* \ */
amigainc 0:2c8568cec97f 116 {0x30, 0}, /* ] */
amigainc 0:2c8568cec97f 117 {0x23, SHIFT}, /* ^ */
amigainc 0:2c8568cec97f 118 {0x2d, SHIFT}, /* _ */
amigainc 0:2c8568cec97f 119 {0x35, 0}, /* ` */
amigainc 0:2c8568cec97f 120 {0x04, 0}, /* a */
amigainc 0:2c8568cec97f 121 {0x05, 0}, /* b */
amigainc 0:2c8568cec97f 122 {0x06, 0}, /* c */
amigainc 0:2c8568cec97f 123 {0x07, 0}, /* d */
amigainc 0:2c8568cec97f 124 {0x08, 0}, /* e */
amigainc 0:2c8568cec97f 125 {0x09, 0}, /* f */
amigainc 0:2c8568cec97f 126 {0x0a, 0}, /* g */
amigainc 0:2c8568cec97f 127 {0x0b, 0}, /* h */
amigainc 0:2c8568cec97f 128 {0x0c, 0}, /* i */
amigainc 0:2c8568cec97f 129 {0x0d, 0}, /* j */
amigainc 0:2c8568cec97f 130 {0x0e, 0}, /* k */
amigainc 0:2c8568cec97f 131 {0x0f, 0}, /* l */
amigainc 0:2c8568cec97f 132 {0x10, 0}, /* m */
amigainc 0:2c8568cec97f 133 {0x11, 0}, /* n */
amigainc 0:2c8568cec97f 134 {0x12, 0}, /* o */
amigainc 0:2c8568cec97f 135 {0x13, 0}, /* p */
amigainc 0:2c8568cec97f 136 {0x14, 0}, /* q */
amigainc 0:2c8568cec97f 137 {0x15, 0}, /* r */
amigainc 0:2c8568cec97f 138 {0x16, 0}, /* s */
amigainc 0:2c8568cec97f 139 {0x17, 0}, /* t */
amigainc 0:2c8568cec97f 140 {0x18, 0}, /* u */
amigainc 0:2c8568cec97f 141 {0x19, 0}, /* v */
amigainc 0:2c8568cec97f 142 {0x1a, 0}, /* w */
amigainc 0:2c8568cec97f 143 {0x1b, 0}, /* x */
amigainc 0:2c8568cec97f 144 {0x1c, 0}, /* y */
amigainc 0:2c8568cec97f 145 {0x1d, 0}, /* z */
amigainc 0:2c8568cec97f 146 {0x2f, SHIFT}, /* { */
amigainc 0:2c8568cec97f 147 {0x31, SHIFT}, /* | */
amigainc 0:2c8568cec97f 148 {0x30, SHIFT}, /* } */
amigainc 0:2c8568cec97f 149 {0x35, SHIFT}, /* ~ */
amigainc 0:2c8568cec97f 150 {0,0}, /* DEL */
amigainc 0:2c8568cec97f 151 };
amigainc 0:2c8568cec97f 152
amigainc 0:2c8568cec97f 153 #else
amigainc 0:2c8568cec97f 154 /* UK keyboard */
amigainc 0:2c8568cec97f 155 #define KEYMAP_SIZE (128)
amigainc 0:2c8568cec97f 156 const KEYMAP keymap[KEYMAP_SIZE] = {
amigainc 0:2c8568cec97f 157 {0, 0}, /* NUL */
amigainc 0:2c8568cec97f 158 {0, 0}, /* SOH */
amigainc 0:2c8568cec97f 159 {0, 0}, /* STX */
amigainc 0:2c8568cec97f 160 {0, 0}, /* ETX */
amigainc 0:2c8568cec97f 161 {0, 0}, /* EOT */
amigainc 0:2c8568cec97f 162 {0, 0}, /* ENQ */
amigainc 0:2c8568cec97f 163 {0, 0}, /* ACK */
amigainc 0:2c8568cec97f 164 {0, 0}, /* BEL */
amigainc 0:2c8568cec97f 165 {0x2a, 0}, /* BS */ /* Keyboard Delete (Backspace) */
amigainc 0:2c8568cec97f 166 {0x2b, 0}, /* TAB */ /* Keyboard Tab */
amigainc 0:2c8568cec97f 167 {0x28, 0}, /* LF */ /* Keyboard Return (Enter) */
amigainc 0:2c8568cec97f 168 {0, 0}, /* VT */
amigainc 0:2c8568cec97f 169 {0, 0}, /* FF */
amigainc 0:2c8568cec97f 170 {0, 0}, /* CR */
amigainc 0:2c8568cec97f 171 {0, 0}, /* SO */
amigainc 0:2c8568cec97f 172 {0, 0}, /* SI */
amigainc 0:2c8568cec97f 173 {0, 0}, /* DEL */
amigainc 0:2c8568cec97f 174 {0, 0}, /* DC1 */
amigainc 0:2c8568cec97f 175 {0, 0}, /* DC2 */
amigainc 0:2c8568cec97f 176 {0, 0}, /* DC3 */
amigainc 0:2c8568cec97f 177 {0, 0}, /* DC4 */
amigainc 0:2c8568cec97f 178 {0, 0}, /* NAK */
amigainc 0:2c8568cec97f 179 {0, 0}, /* SYN */
amigainc 0:2c8568cec97f 180 {0, 0}, /* ETB */
amigainc 0:2c8568cec97f 181 {0, 0}, /* CAN */
amigainc 0:2c8568cec97f 182 {0, 0}, /* EM */
amigainc 0:2c8568cec97f 183 {0, 0}, /* SUB */
amigainc 0:2c8568cec97f 184 {0, 0}, /* ESC */
amigainc 0:2c8568cec97f 185 {0, 0}, /* FS */
amigainc 0:2c8568cec97f 186 {0, 0}, /* GS */
amigainc 0:2c8568cec97f 187 {0, 0}, /* RS */
amigainc 0:2c8568cec97f 188 {0, 0}, /* US */
amigainc 0:2c8568cec97f 189 {0x2c, 0}, /* */
amigainc 0:2c8568cec97f 190 {0x1e, SHIFT}, /* ! */
amigainc 0:2c8568cec97f 191 {0x1f, SHIFT}, /* " */
amigainc 0:2c8568cec97f 192 {0x32, 0}, /* # */
amigainc 0:2c8568cec97f 193 {0x21, SHIFT}, /* $ */
amigainc 0:2c8568cec97f 194 {0x22, SHIFT}, /* % */
amigainc 0:2c8568cec97f 195 {0x24, SHIFT}, /* & */
amigainc 0:2c8568cec97f 196 {0x34, 0}, /* ' */
amigainc 0:2c8568cec97f 197 {0x26, SHIFT}, /* ( */
amigainc 0:2c8568cec97f 198 {0x27, SHIFT}, /* ) */
amigainc 0:2c8568cec97f 199 {0x25, SHIFT}, /* * */
amigainc 0:2c8568cec97f 200 {0x2e, SHIFT}, /* + */
amigainc 0:2c8568cec97f 201 {0x36, 0}, /* , */
amigainc 0:2c8568cec97f 202 {0x2d, 0}, /* - */
amigainc 0:2c8568cec97f 203 {0x37, 0}, /* . */
amigainc 0:2c8568cec97f 204 {0x38, 0}, /* / */
amigainc 0:2c8568cec97f 205 {0x27, 0}, /* 0 */
amigainc 0:2c8568cec97f 206 {0x1e, 0}, /* 1 */
amigainc 0:2c8568cec97f 207 {0x1f, 0}, /* 2 */
amigainc 0:2c8568cec97f 208 {0x20, 0}, /* 3 */
amigainc 0:2c8568cec97f 209 {0x21, 0}, /* 4 */
amigainc 0:2c8568cec97f 210 {0x22, 0}, /* 5 */
amigainc 0:2c8568cec97f 211 {0x23, 0}, /* 6 */
amigainc 0:2c8568cec97f 212 {0x24, 0}, /* 7 */
amigainc 0:2c8568cec97f 213 {0x25, 0}, /* 8 */
amigainc 0:2c8568cec97f 214 {0x26, 0}, /* 9 */
amigainc 0:2c8568cec97f 215 {0x33, SHIFT}, /* : */
amigainc 0:2c8568cec97f 216 {0x33, 0}, /* ; */
amigainc 0:2c8568cec97f 217 {0x36, SHIFT}, /* < */
amigainc 0:2c8568cec97f 218 {0x2e, 0}, /* = */
amigainc 0:2c8568cec97f 219 {0x37, SHIFT}, /* > */
amigainc 0:2c8568cec97f 220 {0x38, SHIFT}, /* ? */
amigainc 0:2c8568cec97f 221 {0x34, SHIFT}, /* @ */
amigainc 0:2c8568cec97f 222 {0x04, SHIFT}, /* A */
amigainc 0:2c8568cec97f 223 {0x05, SHIFT}, /* B */
amigainc 0:2c8568cec97f 224 {0x06, SHIFT}, /* C */
amigainc 0:2c8568cec97f 225 {0x07, SHIFT}, /* D */
amigainc 0:2c8568cec97f 226 {0x08, SHIFT}, /* E */
amigainc 0:2c8568cec97f 227 {0x09, SHIFT}, /* F */
amigainc 0:2c8568cec97f 228 {0x0a, SHIFT}, /* G */
amigainc 0:2c8568cec97f 229 {0x0b, SHIFT}, /* H */
amigainc 0:2c8568cec97f 230 {0x0c, SHIFT}, /* I */
amigainc 0:2c8568cec97f 231 {0x0d, SHIFT}, /* J */
amigainc 0:2c8568cec97f 232 {0x0e, SHIFT}, /* K */
amigainc 0:2c8568cec97f 233 {0x0f, SHIFT}, /* L */
amigainc 0:2c8568cec97f 234 {0x10, SHIFT}, /* M */
amigainc 0:2c8568cec97f 235 {0x11, SHIFT}, /* N */
amigainc 0:2c8568cec97f 236 {0x12, SHIFT}, /* O */
amigainc 0:2c8568cec97f 237 {0x13, SHIFT}, /* P */
amigainc 0:2c8568cec97f 238 {0x14, SHIFT}, /* Q */
amigainc 0:2c8568cec97f 239 {0x15, SHIFT}, /* R */
amigainc 0:2c8568cec97f 240 {0x16, SHIFT}, /* S */
amigainc 0:2c8568cec97f 241 {0x17, SHIFT}, /* T */
amigainc 0:2c8568cec97f 242 {0x18, SHIFT}, /* U */
amigainc 0:2c8568cec97f 243 {0x19, SHIFT}, /* V */
amigainc 0:2c8568cec97f 244 {0x1a, SHIFT}, /* W */
amigainc 0:2c8568cec97f 245 {0x1b, SHIFT}, /* X */
amigainc 0:2c8568cec97f 246 {0x1c, SHIFT}, /* Y */
amigainc 0:2c8568cec97f 247 {0x1d, SHIFT}, /* Z */
amigainc 0:2c8568cec97f 248 {0x2f, 0}, /* [ */
amigainc 0:2c8568cec97f 249 {0x64, 0}, /* \ */
amigainc 0:2c8568cec97f 250 {0x30, 0}, /* ] */
amigainc 0:2c8568cec97f 251 {0x23, SHIFT}, /* ^ */
amigainc 0:2c8568cec97f 252 {0x2d, SHIFT}, /* _ */
amigainc 0:2c8568cec97f 253 {0x35, 0}, /* ` */
amigainc 0:2c8568cec97f 254 {0x04, 0}, /* a */
amigainc 0:2c8568cec97f 255 {0x05, 0}, /* b */
amigainc 0:2c8568cec97f 256 {0x06, 0}, /* c */
amigainc 0:2c8568cec97f 257 {0x07, 0}, /* d */
amigainc 0:2c8568cec97f 258 {0x08, 0}, /* e */
amigainc 0:2c8568cec97f 259 {0x09, 0}, /* f */
amigainc 0:2c8568cec97f 260 {0x0a, 0}, /* g */
amigainc 0:2c8568cec97f 261 {0x0b, 0}, /* h */
amigainc 0:2c8568cec97f 262 {0x0c, 0}, /* i */
amigainc 0:2c8568cec97f 263 {0x0d, 0}, /* j */
amigainc 0:2c8568cec97f 264 {0x0e, 0}, /* k */
amigainc 0:2c8568cec97f 265 {0x0f, 0}, /* l */
amigainc 0:2c8568cec97f 266 {0x10, 0}, /* m */
amigainc 0:2c8568cec97f 267 {0x11, 0}, /* n */
amigainc 0:2c8568cec97f 268 {0x12, 0}, /* o */
amigainc 0:2c8568cec97f 269 {0x13, 0}, /* p */
amigainc 0:2c8568cec97f 270 {0x14, 0}, /* q */
amigainc 0:2c8568cec97f 271 {0x15, 0}, /* r */
amigainc 0:2c8568cec97f 272 {0x16, 0}, /* s */
amigainc 0:2c8568cec97f 273 {0x17, 0}, /* t */
amigainc 0:2c8568cec97f 274 {0x18, 0}, /* u */
amigainc 0:2c8568cec97f 275 {0x19, 0}, /* v */
amigainc 0:2c8568cec97f 276 {0x1a, 0}, /* w */
amigainc 0:2c8568cec97f 277 {0x1b, 0}, /* x */
amigainc 0:2c8568cec97f 278 {0x1c, 0}, /* y */
amigainc 0:2c8568cec97f 279 {0x1d, 0}, /* z */
amigainc 0:2c8568cec97f 280 {0x2f, SHIFT}, /* { */
amigainc 0:2c8568cec97f 281 {0x64, SHIFT}, /* | */
amigainc 0:2c8568cec97f 282 {0x30, SHIFT}, /* } */
amigainc 0:2c8568cec97f 283 {0x32, SHIFT}, /* ~ */
amigainc 0:2c8568cec97f 284 {0,0}, /* DEL */
amigainc 0:2c8568cec97f 285 };
amigainc 0:2c8568cec97f 286 #endif
amigainc 0:2c8568cec97f 287
amigainc 0:2c8568cec97f 288
amigainc 0:2c8568cec97f 289 #endif