Tableau: Tablet keyboard IDD HW2 Tony Wu

Dependencies:   PinDetect USBDevice mbed

Fork of idd_fall15_hw2_twuster_tableautabletkeyboard by TONY WU

Committer:
twuster
Date:
Mon Sep 14 00:24:49 2015 +0000
Revision:
0:ba0cb1f20076
Submission for HW2

Who changed what in which revision?

UserRevisionLine numberNew 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