#include String incoming; int mouse = 1; int separator = 0; int fin = 0; int xmove = 0; int ymove = 0; String xvalue = 0; String yvalue = 0; int responseDelay=2; void setup() { Serial1.begin(9600); Keyboard.begin(); Mouse.begin(); pinMode (6, OUTPUT); digitalWrite(6, HIGH); pinMode (11, OUTPUT); digitalWrite(11, HIGH); } void loop() { while (Serial1.available()) {// Read the value sent by the serial port delay(2); char c = Serial1.read(); incoming += c; // Convert characters to string } if (incoming.length() > 0) { //START OF MOUSE COMMANDS if (incoming == "MOUSELEFTCLICK") { Mouse.click(MOUSE_LEFT); delay(responseDelay); } if (incoming == "MOUSERIGHTCLICK") { Mouse.click(MOUSE_RIGHT); delay(responseDelay); } if (incoming == "MOUSELEFTHOLD") { Mouse.press(MOUSE_LEFT); delay(responseDelay); } if (incoming == "MOUSERIGHTHOLD") { Mouse.press(MOUSE_RIGHT); delay(responseDelay); } if (incoming == "MOUSERELEASE") { Mouse.release(); delay(responseDelay); } if (incoming == "MOUSEON") { int (mouse = 0); delay(responseDelay); } if (incoming == "MOUSEEND") { int (mouse = 1); Mouse.release(); delay(responseDelay); } //END OF MOUSE COMMANDS int separator = incoming.indexOf(';'); int fin = incoming.indexOf(':'); xvalue = incoming.substring(0 , separator); yvalue = incoming.substring(separator+1 , fin); //START OF MODIFIERS if (xvalue == "KBD") { if (yvalue == "KEY_A_OFF") { Keyboard.release(KEY_LEFT_SHIFT); delay(responseDelay); Keyboard.release(KEY_RIGHT_SHIFT); delay(responseDelay); Keyboard.release(KEY_LEFT_CTRL); delay(responseDelay); Keyboard.release(KEY_LEFT_ALT); delay(responseDelay); Keyboard.release(KEY_RIGHT_ALT); delay(responseDelay); Keyboard.set_modifier(0); Keyboard.send_now(); } if (yvalue == "KEY_LEFT_CTRL") { Keyboard.press(KEY_LEFT_CTRL); } if (yvalue == "KEY_LEFTC_OFF") { Keyboard.release(KEY_LEFT_CTRL); } if (yvalue == "KEY_LEFT_SHIFT") { Keyboard.press(KEY_LEFT_SHIFT); } if (yvalue == "KEY_LEFT_RELEASE") { Keyboard.release(KEY_LEFT_SHIFT); } if (yvalue == "KEY_LEFT_ALT") { Keyboard.press(KEY_LEFT_ALT); } if (yvalue == "KEY_LEFTA_OFF") { Keyboard.release(KEY_LEFT_ALT); } if (yvalue == "KEY_RIGHT_ALT") { Keyboard.press(KEY_RIGHT_ALT); } if (yvalue == "KEY_RIGHTA_OFF") { Keyboard.release(KEY_RIGHT_ALT); } if (yvalue == "KEY_UP_ARROW") { Keyboard.press(KEY_UP_ARROW); Keyboard.release(KEY_UP_ARROW); } if (yvalue == "KEY_DOWN_ARROW") { Keyboard.press(KEY_DOWN_ARROW); Keyboard.release(KEY_DOWN_ARROW); } if (yvalue == "KEY_RIGHT_ARROW") { Keyboard.press(KEY_RIGHT_ARROW); Keyboard.release(KEY_RIGHT_ARROW); } if (yvalue == "KEY_LEFT_ARROW") { Keyboard.press(KEY_LEFT_ARROW); Keyboard.release(KEY_LEFT_ARROW); } if (yvalue == "KEY_ESC") { Keyboard.press(KEY_ESC); Keyboard.release(KEY_ESC); } if (yvalue == "KEY_RETURN") { Keyboard.press(KEY_RETURN); Keyboard.release(KEY_RETURN); } if (yvalue == "KEY_BACKSPACE") { Keyboard.press(KEY_BACKSPACE); Keyboard.release(KEY_BACKSPACE); } if (yvalue == "KEY_TAB") { Keyboard.press(KEY_TAB); Keyboard.release(KEY_TAB); } if (yvalue == "KEY_INSERT") { Keyboard.press(KEY_INSERT); Keyboard.release(KEY_INSERT); } if (yvalue == "KEY_DELETE") { Keyboard.press(KEY_DELETE); Keyboard.release(KEY_DELETE); Keyboard.release(KEY_LEFT_CTRL); Keyboard.release(KEY_LEFT_ALT); Keyboard.release(KEY_RIGHT_ALT); } if (yvalue == "KEY_PAGE_UP") { Keyboard.press(KEY_PAGE_UP); Keyboard.release(KEY_PAGE_UP); } if (yvalue == "KEY_PAGE_DOWN") { Keyboard.press(KEY_PAGE_DOWN); Keyboard.release(KEY_PAGE_DOWN); } if (yvalue == "KEY_HOME") { Keyboard.press(KEY_HOME); Keyboard.release(KEY_HOME); } if (yvalue == "KEY_END") { Keyboard.press(KEY_END); Keyboard.release(KEY_END); } if (yvalue == "KEY_CAPS_LOCK") { Keyboard.press(KEY_CAPS_LOCK); Keyboard.release(KEY_CAPS_LOCK); } if (yvalue == "SKEY") { Keyboard.set_modifier(MODIFIERKEY_GUI); Keyboard.send_now(); } if (yvalue == "SKEYR") { Keyboard.set_modifier(0); Keyboard.send_now(); } if (yvalue == "KEY_F1") { Keyboard.press(KEY_F3); Keyboard.release(KEY_F3); } if (yvalue == "KEY_F2") { Keyboard.press(KEY_F3); Keyboard.release(KEY_F3); } if (yvalue == "KEY_F3") { Keyboard.press(KEY_F3); Keyboard.release(KEY_F3); } if (yvalue == "KEY_F4") { Keyboard.press(KEY_F4); Keyboard.release(KEY_F4); } if (yvalue == "KEY_F5") { Keyboard.press(KEY_F5); Keyboard.release(KEY_F5); } if (yvalue == "KEY_F6") { Keyboard.press(KEY_F6); Keyboard.release(KEY_F6); } if (yvalue == "KEY_F7") { Keyboard.press(KEY_F7); Keyboard.release(KEY_F7); } if (yvalue == "KEY_F8") { Keyboard.press(KEY_F8); Keyboard.release(KEY_F8); } if (yvalue == "KEY_F9") { Keyboard.press(KEY_F9); Keyboard.release(KEY_F9); } if (yvalue == "KEY_F10") { Keyboard.press(KEY_F10); Keyboard.release(KEY_F10); } if (yvalue == "KEY_F11") { Keyboard.press(KEY_F11); Keyboard.release(KEY_F11); } if (yvalue == "KEY_F12") { Keyboard.press(KEY_F12); Keyboard.release(KEY_F12); } if (yvalue == "KEY_BACKSLASH") { Keyboard.press(KEY_BACKSLASH); Keyboard.release(KEY_BACKSLASH); } } //END OF MODIFIERS if (xvalue == "CHR") { int kbd = yvalue.toInt(); Keyboard.press(kbd); Keyboard.release(kbd); Keyboard.release(KEY_LEFT_SHIFT); Keyboard.release(KEY_RIGHT_SHIFT); Keyboard.release(KEY_LEFT_CTRL); Keyboard.release(KEY_LEFT_ALT); Keyboard.release(KEY_RIGHT_ALT); } if ( mouse == 0) { xmove = xvalue.toInt(); ymove = yvalue.toInt(); Mouse.move(xmove, ymove, 0); delay(responseDelay); } } incoming = ""; }