Tableau: Tablet keyboard IDD HW2 Tony Wu

Dependencies:   PinDetect USBDevice mbed

Fork of idd_fall15_hw2_twuster_tableautabletkeyboard by TONY WU

main.cpp

Committer:
twuster
Date:
2015-09-14
Revision:
0:ba0cb1f20076

File content as of revision 0:ba0cb1f20076:

#include "mbed.h"
#include "PinDetect.h"
#include <string>
#include <ctime>
#include "USBKeyboard.h"


Serial pc(USBTX, USBRX);
PinDetect input4(D4);
PinDetect input5(D5);
PinDetect input6(D6);
PinDetect input7(D7);
PinDetect input8(D8);
PinDetect input9(D9);
PinDetect input10(D10);
PinDetect input11(D11);
PinDetect input12(D12);
PinDetect input13(D13);
USBKeyboard keyboard;


int main() {
    time_t seconds_since_last_action = time(NULL);
    clock_t begin = clock();
    string last_action = "";
    double buffer_time = 50.0;
    while(1) {
        if (input4 == 0) {
            if (double(clock()-begin) < buffer_time) { // move to next letter
                if (last_action.compare("w") == 0) {
                    keyboard.keyCode(8);
                    keyboard.printf("%s", "x");
                    last_action = "X";
                } else if (last_action.compare("x") == 0) {
                    keyboard.keyCode(8);
                    keyboard.printf("%s", "w");
                    last_action = "w";
                } else {
                    keyboard.printf("%s", "w");
                    last_action = "w";
                }
            } else {
                keyboard.printf("%s", "w");
                last_action = "w";
            }
            wait(0.3);
            begin = clock();
        } else if (input5 == 0) {
            pc.printf("%s", "QRS");
            if (double(clock()-begin) < buffer_time) { // move to next letter
                if (last_action.compare("q") == 0) {
                    keyboard.keyCode(8);
                    keyboard.printf("%s", "r");
                    last_action = "r";
                } else if (last_action.compare("r") == 0) {
                    keyboard.keyCode(8);
                    keyboard.printf("%s", "s");
                    last_action = "s";
                } else if (last_action.compare("r") == 0 || last_action.compare("s") == 0) {
                    keyboard.keyCode(8);
                    keyboard.printf("%s", "q");
                    last_action = "q";
                } else {
                    keyboard.printf("%s", "q");
                    last_action = "q";
                }
            } else {
                keyboard.printf("%s", "q");
                last_action = "q";
            }
            wait(0.3);
            begin = clock();
        } else if (input6 == 0) {
            pc.printf("%s", "IJKL");
            if (double(clock()-begin) < buffer_time) { // move to next letter
                if (last_action.compare("i") == 0) {
                    keyboard.keyCode(8);
                    keyboard.printf("%s", "j");
                    last_action = "j";
                } else if (last_action.compare("j") == 0) {
                    keyboard.keyCode(8);
                    keyboard.printf("%s", "k");
                    last_action = "k";
                } else if (last_action.compare("k") == 0) {
                    keyboard.keyCode(8);
                    keyboard.printf("%s", "l");
                    last_action = "l";
                } else if (last_action.compare("j") == 0 || last_action.compare("k") == 0 || last_action.compare("l") == 0) {
                    keyboard.keyCode(8);
                    keyboard.printf("%s", "i");
                    last_action = "i";
                } else {
                    keyboard.printf("%s", "i");
                    last_action = "i";
                }
            } else {
                keyboard.printf("%s", "i");
                last_action = "i";
            }
            wait(0.3);
            begin = clock();
        } else if (input7 == 0) {
            pc.printf("%s", "ABCD");
            if (double(clock()-begin) < buffer_time) { // move to next letter
                if (last_action.compare("a") == 0) {
                    keyboard.keyCode(8);
                    keyboard.printf("%s", "b");
                    last_action = "b";
                } else if (last_action.compare("b") == 0) {
                    keyboard.keyCode(8);
                    keyboard.printf("%s", "c");
                    last_action = "c";
                } else if (last_action.compare("c") == 0) {
                    keyboard.keyCode(8);
                    keyboard.printf("%s", "d ");
                    last_action = "d";
                } else if (last_action.compare("b") == 0 || last_action.compare("c") == 0 || last_action.compare("d") == 0) {
                    keyboard.keyCode(8);
                    keyboard.printf("%s", "a");
                    last_action = "a";
                } else {
                    keyboard.printf("%s", "a");
                    last_action = "a";
                }
            } else {
                keyboard.printf("%s", "a");
                last_action = "a";
            }
            wait(0.3);
            begin = clock();
        } else if (input8 == 0) {
            pc.printf("%s", "space");
            keyboard.keyCode(32);
            last_action = "space";
            wait(0.3);
        } else if (input9 == 0) {
            pc.printf("%s", "YZ");
            if (double(clock()-begin) < buffer_time) {
                if (last_action.compare("y") == 0) {
                    keyboard.keyCode(8);
                    keyboard.printf("%s", "z");
                    last_action = "z";
                } else if (last_action.compare("z") == 0) {
                    keyboard.keyCode(8);
                    keyboard.printf("%s", "y");
                    last_action = "y";
                } else {
                    keyboard.printf("%s", "y");
                    last_action = "y";
                }
            } else {
                keyboard.printf("%s", "y");
                last_action = "y";
            }
            wait(0.3);
            begin = clock();
        } else if (input10 == 0) {
            pc.printf("%s", "TUV");
            if (double(clock()-begin) < buffer_time) { // move to next letter
                if (last_action.compare("t") == 0) {
                    keyboard.keyCode(8);
                    keyboard.printf("%s", "u");
                    last_action = "u";
                } else if (last_action.compare("u") == 0) {
                    keyboard.keyCode(8);
                    keyboard.printf("%s", "v");
                    last_action = "v";
                } else if (last_action.compare("u") == 0 || last_action.compare("v") == 0) {
                    keyboard.keyCode(8);
                    keyboard.printf("%s", "t");
                    last_action = "t";
                } else {
                    keyboard.printf("%s", "t");
                    last_action = "t";
                }
            } else {
                keyboard.printf("%s", "t");
                last_action = "t";
            }
            wait(0.3);
            begin = clock();
        } else if (input11 == 0) {
            pc.printf("%s", "MNOP");
            if (double(clock()-begin) < buffer_time) { // move to next letter
                if (last_action.compare("m") == 0) {
                    keyboard.keyCode(8);
                    keyboard.printf("%s", "n");
                    last_action = "n";
                } else if (last_action.compare("n") == 0) {
                    keyboard.keyCode(8);
                    keyboard.printf("%s", "o");
                    last_action = "o";
                } else if (last_action.compare("o") == 0) {
                    keyboard.keyCode(8);
                    keyboard.printf("%s", "p");
                    last_action = "p";
                } else if (last_action.compare("n") == 0 || last_action.compare("o") == 0 || last_action.compare("p") == 0) {
                    keyboard.keyCode(8);
                    keyboard.printf("%s", "m");
                    last_action = "m";
                } else {
                    keyboard.printf("%s", "m");
                    last_action = "m";
                }
            } else {
                keyboard.printf("%s", "m");
                last_action = "m";
            }
            wait(0.3);
            begin = clock();
        } else if (input13 == 0) {
            pc.printf("%s", "EFGH");
            if (double(clock()-begin) < buffer_time) { // move to next letter
                if (last_action.compare("e") == 0) {
                    keyboard.keyCode(8);
                    keyboard.printf("%s", "f");
                    last_action = "f";
                } else if (last_action.compare("f") == 0) {
                    keyboard.keyCode(8);
                    keyboard.printf("%s", "g");
                    last_action = "g";
                } else if (last_action.compare("g") == 0) {
                    keyboard.keyCode(8);
                    keyboard.printf("%s", "h");
                    last_action = "h";
                } else if (last_action.compare("f") == 0 || last_action.compare("g") == 0 || last_action.compare("h") == 0) {
                    keyboard.keyCode(8);
                    keyboard.printf("%s", "e");
                    last_action = "e";
                } else {
                    keyboard.printf("%s", "e");
                    last_action = "e";
                }
            } else {
                keyboard.printf("%s", "e");
                last_action = "e";
            }
            wait(0.3);
            begin = clock();
        } else if (input12 == 0) {
            pc.printf("%s", "DELETE");
            keyboard.keyCode(8);
            last_action = "delete";
            wait(0.3);
            begin = clock();
        }
    }
}