Tableau: Tablet keyboard IDD HW2 Tony Wu
Dependencies: PinDetect USBDevice mbed
Fork of idd_fall15_hw2_twuster_tableautabletkeyboard by
main.cpp@0:ba0cb1f20076, 2015-09-14 (annotated)
- Committer:
- twuster
- Date:
- Mon Sep 14 00:24:49 2015 +0000
- Revision:
- 0:ba0cb1f20076
Submission for HW2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
twuster | 0:ba0cb1f20076 | 1 | #include "mbed.h" |
twuster | 0:ba0cb1f20076 | 2 | #include "PinDetect.h" |
twuster | 0:ba0cb1f20076 | 3 | #include <string> |
twuster | 0:ba0cb1f20076 | 4 | #include <ctime> |
twuster | 0:ba0cb1f20076 | 5 | #include "USBKeyboard.h" |
twuster | 0:ba0cb1f20076 | 6 | |
twuster | 0:ba0cb1f20076 | 7 | |
twuster | 0:ba0cb1f20076 | 8 | Serial pc(USBTX, USBRX); |
twuster | 0:ba0cb1f20076 | 9 | PinDetect input4(D4); |
twuster | 0:ba0cb1f20076 | 10 | PinDetect input5(D5); |
twuster | 0:ba0cb1f20076 | 11 | PinDetect input6(D6); |
twuster | 0:ba0cb1f20076 | 12 | PinDetect input7(D7); |
twuster | 0:ba0cb1f20076 | 13 | PinDetect input8(D8); |
twuster | 0:ba0cb1f20076 | 14 | PinDetect input9(D9); |
twuster | 0:ba0cb1f20076 | 15 | PinDetect input10(D10); |
twuster | 0:ba0cb1f20076 | 16 | PinDetect input11(D11); |
twuster | 0:ba0cb1f20076 | 17 | PinDetect input12(D12); |
twuster | 0:ba0cb1f20076 | 18 | PinDetect input13(D13); |
twuster | 0:ba0cb1f20076 | 19 | USBKeyboard keyboard; |
twuster | 0:ba0cb1f20076 | 20 | |
twuster | 0:ba0cb1f20076 | 21 | |
twuster | 0:ba0cb1f20076 | 22 | int main() { |
twuster | 0:ba0cb1f20076 | 23 | time_t seconds_since_last_action = time(NULL); |
twuster | 0:ba0cb1f20076 | 24 | clock_t begin = clock(); |
twuster | 0:ba0cb1f20076 | 25 | string last_action = ""; |
twuster | 0:ba0cb1f20076 | 26 | double buffer_time = 50.0; |
twuster | 0:ba0cb1f20076 | 27 | while(1) { |
twuster | 0:ba0cb1f20076 | 28 | if (input4 == 0) { |
twuster | 0:ba0cb1f20076 | 29 | if (double(clock()-begin) < buffer_time) { // move to next letter |
twuster | 0:ba0cb1f20076 | 30 | if (last_action.compare("w") == 0) { |
twuster | 0:ba0cb1f20076 | 31 | keyboard.keyCode(8); |
twuster | 0:ba0cb1f20076 | 32 | keyboard.printf("%s", "x"); |
twuster | 0:ba0cb1f20076 | 33 | last_action = "X"; |
twuster | 0:ba0cb1f20076 | 34 | } else if (last_action.compare("x") == 0) { |
twuster | 0:ba0cb1f20076 | 35 | keyboard.keyCode(8); |
twuster | 0:ba0cb1f20076 | 36 | keyboard.printf("%s", "w"); |
twuster | 0:ba0cb1f20076 | 37 | last_action = "w"; |
twuster | 0:ba0cb1f20076 | 38 | } else { |
twuster | 0:ba0cb1f20076 | 39 | keyboard.printf("%s", "w"); |
twuster | 0:ba0cb1f20076 | 40 | last_action = "w"; |
twuster | 0:ba0cb1f20076 | 41 | } |
twuster | 0:ba0cb1f20076 | 42 | } else { |
twuster | 0:ba0cb1f20076 | 43 | keyboard.printf("%s", "w"); |
twuster | 0:ba0cb1f20076 | 44 | last_action = "w"; |
twuster | 0:ba0cb1f20076 | 45 | } |
twuster | 0:ba0cb1f20076 | 46 | wait(0.3); |
twuster | 0:ba0cb1f20076 | 47 | begin = clock(); |
twuster | 0:ba0cb1f20076 | 48 | } else if (input5 == 0) { |
twuster | 0:ba0cb1f20076 | 49 | pc.printf("%s", "QRS"); |
twuster | 0:ba0cb1f20076 | 50 | if (double(clock()-begin) < buffer_time) { // move to next letter |
twuster | 0:ba0cb1f20076 | 51 | if (last_action.compare("q") == 0) { |
twuster | 0:ba0cb1f20076 | 52 | keyboard.keyCode(8); |
twuster | 0:ba0cb1f20076 | 53 | keyboard.printf("%s", "r"); |
twuster | 0:ba0cb1f20076 | 54 | last_action = "r"; |
twuster | 0:ba0cb1f20076 | 55 | } else if (last_action.compare("r") == 0) { |
twuster | 0:ba0cb1f20076 | 56 | keyboard.keyCode(8); |
twuster | 0:ba0cb1f20076 | 57 | keyboard.printf("%s", "s"); |
twuster | 0:ba0cb1f20076 | 58 | last_action = "s"; |
twuster | 0:ba0cb1f20076 | 59 | } else if (last_action.compare("r") == 0 || last_action.compare("s") == 0) { |
twuster | 0:ba0cb1f20076 | 60 | keyboard.keyCode(8); |
twuster | 0:ba0cb1f20076 | 61 | keyboard.printf("%s", "q"); |
twuster | 0:ba0cb1f20076 | 62 | last_action = "q"; |
twuster | 0:ba0cb1f20076 | 63 | } else { |
twuster | 0:ba0cb1f20076 | 64 | keyboard.printf("%s", "q"); |
twuster | 0:ba0cb1f20076 | 65 | last_action = "q"; |
twuster | 0:ba0cb1f20076 | 66 | } |
twuster | 0:ba0cb1f20076 | 67 | } else { |
twuster | 0:ba0cb1f20076 | 68 | keyboard.printf("%s", "q"); |
twuster | 0:ba0cb1f20076 | 69 | last_action = "q"; |
twuster | 0:ba0cb1f20076 | 70 | } |
twuster | 0:ba0cb1f20076 | 71 | wait(0.3); |
twuster | 0:ba0cb1f20076 | 72 | begin = clock(); |
twuster | 0:ba0cb1f20076 | 73 | } else if (input6 == 0) { |
twuster | 0:ba0cb1f20076 | 74 | pc.printf("%s", "IJKL"); |
twuster | 0:ba0cb1f20076 | 75 | if (double(clock()-begin) < buffer_time) { // move to next letter |
twuster | 0:ba0cb1f20076 | 76 | if (last_action.compare("i") == 0) { |
twuster | 0:ba0cb1f20076 | 77 | keyboard.keyCode(8); |
twuster | 0:ba0cb1f20076 | 78 | keyboard.printf("%s", "j"); |
twuster | 0:ba0cb1f20076 | 79 | last_action = "j"; |
twuster | 0:ba0cb1f20076 | 80 | } else if (last_action.compare("j") == 0) { |
twuster | 0:ba0cb1f20076 | 81 | keyboard.keyCode(8); |
twuster | 0:ba0cb1f20076 | 82 | keyboard.printf("%s", "k"); |
twuster | 0:ba0cb1f20076 | 83 | last_action = "k"; |
twuster | 0:ba0cb1f20076 | 84 | } else if (last_action.compare("k") == 0) { |
twuster | 0:ba0cb1f20076 | 85 | keyboard.keyCode(8); |
twuster | 0:ba0cb1f20076 | 86 | keyboard.printf("%s", "l"); |
twuster | 0:ba0cb1f20076 | 87 | last_action = "l"; |
twuster | 0:ba0cb1f20076 | 88 | } else if (last_action.compare("j") == 0 || last_action.compare("k") == 0 || last_action.compare("l") == 0) { |
twuster | 0:ba0cb1f20076 | 89 | keyboard.keyCode(8); |
twuster | 0:ba0cb1f20076 | 90 | keyboard.printf("%s", "i"); |
twuster | 0:ba0cb1f20076 | 91 | last_action = "i"; |
twuster | 0:ba0cb1f20076 | 92 | } else { |
twuster | 0:ba0cb1f20076 | 93 | keyboard.printf("%s", "i"); |
twuster | 0:ba0cb1f20076 | 94 | last_action = "i"; |
twuster | 0:ba0cb1f20076 | 95 | } |
twuster | 0:ba0cb1f20076 | 96 | } else { |
twuster | 0:ba0cb1f20076 | 97 | keyboard.printf("%s", "i"); |
twuster | 0:ba0cb1f20076 | 98 | last_action = "i"; |
twuster | 0:ba0cb1f20076 | 99 | } |
twuster | 0:ba0cb1f20076 | 100 | wait(0.3); |
twuster | 0:ba0cb1f20076 | 101 | begin = clock(); |
twuster | 0:ba0cb1f20076 | 102 | } else if (input7 == 0) { |
twuster | 0:ba0cb1f20076 | 103 | pc.printf("%s", "ABCD"); |
twuster | 0:ba0cb1f20076 | 104 | if (double(clock()-begin) < buffer_time) { // move to next letter |
twuster | 0:ba0cb1f20076 | 105 | if (last_action.compare("a") == 0) { |
twuster | 0:ba0cb1f20076 | 106 | keyboard.keyCode(8); |
twuster | 0:ba0cb1f20076 | 107 | keyboard.printf("%s", "b"); |
twuster | 0:ba0cb1f20076 | 108 | last_action = "b"; |
twuster | 0:ba0cb1f20076 | 109 | } else if (last_action.compare("b") == 0) { |
twuster | 0:ba0cb1f20076 | 110 | keyboard.keyCode(8); |
twuster | 0:ba0cb1f20076 | 111 | keyboard.printf("%s", "c"); |
twuster | 0:ba0cb1f20076 | 112 | last_action = "c"; |
twuster | 0:ba0cb1f20076 | 113 | } else if (last_action.compare("c") == 0) { |
twuster | 0:ba0cb1f20076 | 114 | keyboard.keyCode(8); |
twuster | 0:ba0cb1f20076 | 115 | keyboard.printf("%s", "d "); |
twuster | 0:ba0cb1f20076 | 116 | last_action = "d"; |
twuster | 0:ba0cb1f20076 | 117 | } else if (last_action.compare("b") == 0 || last_action.compare("c") == 0 || last_action.compare("d") == 0) { |
twuster | 0:ba0cb1f20076 | 118 | keyboard.keyCode(8); |
twuster | 0:ba0cb1f20076 | 119 | keyboard.printf("%s", "a"); |
twuster | 0:ba0cb1f20076 | 120 | last_action = "a"; |
twuster | 0:ba0cb1f20076 | 121 | } else { |
twuster | 0:ba0cb1f20076 | 122 | keyboard.printf("%s", "a"); |
twuster | 0:ba0cb1f20076 | 123 | last_action = "a"; |
twuster | 0:ba0cb1f20076 | 124 | } |
twuster | 0:ba0cb1f20076 | 125 | } else { |
twuster | 0:ba0cb1f20076 | 126 | keyboard.printf("%s", "a"); |
twuster | 0:ba0cb1f20076 | 127 | last_action = "a"; |
twuster | 0:ba0cb1f20076 | 128 | } |
twuster | 0:ba0cb1f20076 | 129 | wait(0.3); |
twuster | 0:ba0cb1f20076 | 130 | begin = clock(); |
twuster | 0:ba0cb1f20076 | 131 | } else if (input8 == 0) { |
twuster | 0:ba0cb1f20076 | 132 | pc.printf("%s", "space"); |
twuster | 0:ba0cb1f20076 | 133 | keyboard.keyCode(32); |
twuster | 0:ba0cb1f20076 | 134 | last_action = "space"; |
twuster | 0:ba0cb1f20076 | 135 | wait(0.3); |
twuster | 0:ba0cb1f20076 | 136 | } else if (input9 == 0) { |
twuster | 0:ba0cb1f20076 | 137 | pc.printf("%s", "YZ"); |
twuster | 0:ba0cb1f20076 | 138 | if (double(clock()-begin) < buffer_time) { |
twuster | 0:ba0cb1f20076 | 139 | if (last_action.compare("y") == 0) { |
twuster | 0:ba0cb1f20076 | 140 | keyboard.keyCode(8); |
twuster | 0:ba0cb1f20076 | 141 | keyboard.printf("%s", "z"); |
twuster | 0:ba0cb1f20076 | 142 | last_action = "z"; |
twuster | 0:ba0cb1f20076 | 143 | } else if (last_action.compare("z") == 0) { |
twuster | 0:ba0cb1f20076 | 144 | keyboard.keyCode(8); |
twuster | 0:ba0cb1f20076 | 145 | keyboard.printf("%s", "y"); |
twuster | 0:ba0cb1f20076 | 146 | last_action = "y"; |
twuster | 0:ba0cb1f20076 | 147 | } else { |
twuster | 0:ba0cb1f20076 | 148 | keyboard.printf("%s", "y"); |
twuster | 0:ba0cb1f20076 | 149 | last_action = "y"; |
twuster | 0:ba0cb1f20076 | 150 | } |
twuster | 0:ba0cb1f20076 | 151 | } else { |
twuster | 0:ba0cb1f20076 | 152 | keyboard.printf("%s", "y"); |
twuster | 0:ba0cb1f20076 | 153 | last_action = "y"; |
twuster | 0:ba0cb1f20076 | 154 | } |
twuster | 0:ba0cb1f20076 | 155 | wait(0.3); |
twuster | 0:ba0cb1f20076 | 156 | begin = clock(); |
twuster | 0:ba0cb1f20076 | 157 | } else if (input10 == 0) { |
twuster | 0:ba0cb1f20076 | 158 | pc.printf("%s", "TUV"); |
twuster | 0:ba0cb1f20076 | 159 | if (double(clock()-begin) < buffer_time) { // move to next letter |
twuster | 0:ba0cb1f20076 | 160 | if (last_action.compare("t") == 0) { |
twuster | 0:ba0cb1f20076 | 161 | keyboard.keyCode(8); |
twuster | 0:ba0cb1f20076 | 162 | keyboard.printf("%s", "u"); |
twuster | 0:ba0cb1f20076 | 163 | last_action = "u"; |
twuster | 0:ba0cb1f20076 | 164 | } else if (last_action.compare("u") == 0) { |
twuster | 0:ba0cb1f20076 | 165 | keyboard.keyCode(8); |
twuster | 0:ba0cb1f20076 | 166 | keyboard.printf("%s", "v"); |
twuster | 0:ba0cb1f20076 | 167 | last_action = "v"; |
twuster | 0:ba0cb1f20076 | 168 | } else if (last_action.compare("u") == 0 || last_action.compare("v") == 0) { |
twuster | 0:ba0cb1f20076 | 169 | keyboard.keyCode(8); |
twuster | 0:ba0cb1f20076 | 170 | keyboard.printf("%s", "t"); |
twuster | 0:ba0cb1f20076 | 171 | last_action = "t"; |
twuster | 0:ba0cb1f20076 | 172 | } else { |
twuster | 0:ba0cb1f20076 | 173 | keyboard.printf("%s", "t"); |
twuster | 0:ba0cb1f20076 | 174 | last_action = "t"; |
twuster | 0:ba0cb1f20076 | 175 | } |
twuster | 0:ba0cb1f20076 | 176 | } else { |
twuster | 0:ba0cb1f20076 | 177 | keyboard.printf("%s", "t"); |
twuster | 0:ba0cb1f20076 | 178 | last_action = "t"; |
twuster | 0:ba0cb1f20076 | 179 | } |
twuster | 0:ba0cb1f20076 | 180 | wait(0.3); |
twuster | 0:ba0cb1f20076 | 181 | begin = clock(); |
twuster | 0:ba0cb1f20076 | 182 | } else if (input11 == 0) { |
twuster | 0:ba0cb1f20076 | 183 | pc.printf("%s", "MNOP"); |
twuster | 0:ba0cb1f20076 | 184 | if (double(clock()-begin) < buffer_time) { // move to next letter |
twuster | 0:ba0cb1f20076 | 185 | if (last_action.compare("m") == 0) { |
twuster | 0:ba0cb1f20076 | 186 | keyboard.keyCode(8); |
twuster | 0:ba0cb1f20076 | 187 | keyboard.printf("%s", "n"); |
twuster | 0:ba0cb1f20076 | 188 | last_action = "n"; |
twuster | 0:ba0cb1f20076 | 189 | } else if (last_action.compare("n") == 0) { |
twuster | 0:ba0cb1f20076 | 190 | keyboard.keyCode(8); |
twuster | 0:ba0cb1f20076 | 191 | keyboard.printf("%s", "o"); |
twuster | 0:ba0cb1f20076 | 192 | last_action = "o"; |
twuster | 0:ba0cb1f20076 | 193 | } else if (last_action.compare("o") == 0) { |
twuster | 0:ba0cb1f20076 | 194 | keyboard.keyCode(8); |
twuster | 0:ba0cb1f20076 | 195 | keyboard.printf("%s", "p"); |
twuster | 0:ba0cb1f20076 | 196 | last_action = "p"; |
twuster | 0:ba0cb1f20076 | 197 | } else if (last_action.compare("n") == 0 || last_action.compare("o") == 0 || last_action.compare("p") == 0) { |
twuster | 0:ba0cb1f20076 | 198 | keyboard.keyCode(8); |
twuster | 0:ba0cb1f20076 | 199 | keyboard.printf("%s", "m"); |
twuster | 0:ba0cb1f20076 | 200 | last_action = "m"; |
twuster | 0:ba0cb1f20076 | 201 | } else { |
twuster | 0:ba0cb1f20076 | 202 | keyboard.printf("%s", "m"); |
twuster | 0:ba0cb1f20076 | 203 | last_action = "m"; |
twuster | 0:ba0cb1f20076 | 204 | } |
twuster | 0:ba0cb1f20076 | 205 | } else { |
twuster | 0:ba0cb1f20076 | 206 | keyboard.printf("%s", "m"); |
twuster | 0:ba0cb1f20076 | 207 | last_action = "m"; |
twuster | 0:ba0cb1f20076 | 208 | } |
twuster | 0:ba0cb1f20076 | 209 | wait(0.3); |
twuster | 0:ba0cb1f20076 | 210 | begin = clock(); |
twuster | 0:ba0cb1f20076 | 211 | } else if (input13 == 0) { |
twuster | 0:ba0cb1f20076 | 212 | pc.printf("%s", "EFGH"); |
twuster | 0:ba0cb1f20076 | 213 | if (double(clock()-begin) < buffer_time) { // move to next letter |
twuster | 0:ba0cb1f20076 | 214 | if (last_action.compare("e") == 0) { |
twuster | 0:ba0cb1f20076 | 215 | keyboard.keyCode(8); |
twuster | 0:ba0cb1f20076 | 216 | keyboard.printf("%s", "f"); |
twuster | 0:ba0cb1f20076 | 217 | last_action = "f"; |
twuster | 0:ba0cb1f20076 | 218 | } else if (last_action.compare("f") == 0) { |
twuster | 0:ba0cb1f20076 | 219 | keyboard.keyCode(8); |
twuster | 0:ba0cb1f20076 | 220 | keyboard.printf("%s", "g"); |
twuster | 0:ba0cb1f20076 | 221 | last_action = "g"; |
twuster | 0:ba0cb1f20076 | 222 | } else if (last_action.compare("g") == 0) { |
twuster | 0:ba0cb1f20076 | 223 | keyboard.keyCode(8); |
twuster | 0:ba0cb1f20076 | 224 | keyboard.printf("%s", "h"); |
twuster | 0:ba0cb1f20076 | 225 | last_action = "h"; |
twuster | 0:ba0cb1f20076 | 226 | } else if (last_action.compare("f") == 0 || last_action.compare("g") == 0 || last_action.compare("h") == 0) { |
twuster | 0:ba0cb1f20076 | 227 | keyboard.keyCode(8); |
twuster | 0:ba0cb1f20076 | 228 | keyboard.printf("%s", "e"); |
twuster | 0:ba0cb1f20076 | 229 | last_action = "e"; |
twuster | 0:ba0cb1f20076 | 230 | } else { |
twuster | 0:ba0cb1f20076 | 231 | keyboard.printf("%s", "e"); |
twuster | 0:ba0cb1f20076 | 232 | last_action = "e"; |
twuster | 0:ba0cb1f20076 | 233 | } |
twuster | 0:ba0cb1f20076 | 234 | } else { |
twuster | 0:ba0cb1f20076 | 235 | keyboard.printf("%s", "e"); |
twuster | 0:ba0cb1f20076 | 236 | last_action = "e"; |
twuster | 0:ba0cb1f20076 | 237 | } |
twuster | 0:ba0cb1f20076 | 238 | wait(0.3); |
twuster | 0:ba0cb1f20076 | 239 | begin = clock(); |
twuster | 0:ba0cb1f20076 | 240 | } else if (input12 == 0) { |
twuster | 0:ba0cb1f20076 | 241 | pc.printf("%s", "DELETE"); |
twuster | 0:ba0cb1f20076 | 242 | keyboard.keyCode(8); |
twuster | 0:ba0cb1f20076 | 243 | last_action = "delete"; |
twuster | 0:ba0cb1f20076 | 244 | wait(0.3); |
twuster | 0:ba0cb1f20076 | 245 | begin = clock(); |
twuster | 0:ba0cb1f20076 | 246 | } |
twuster | 0:ba0cb1f20076 | 247 | } |
twuster | 0:ba0cb1f20076 | 248 | } |
twuster | 0:ba0cb1f20076 | 249 | |
twuster | 0:ba0cb1f20076 | 250 | |
twuster | 0:ba0cb1f20076 | 251 |