// CODE: External View Code #include "Keyboard.h" #include "Mouse.h" #pragma region The Settings (Axis range, keybindings etc) // DEBUG const bool DEBUG = false; // Key Bindings const char chViewForward = KEY_UP_ARROW; const char chViewLeft = KEY_LEFT_ARROW; const char chViewRight = KEY_RIGHT_ARROW; const char chViewBackwards = KEY_DOWN_ARROW; const char chViewLockOnTarget = 't'; const char chToggle1stPerson = 'f'; const char chShipViewCounterClockwise = MOUSE_LEFT; const char chShipViewClockwise = MOUSE_RIGHT; #pragma endregion #pragma region The Pin Settings (ALL PINS) // The Keyboard Buttons const int pinViewForward = 2; const int pinViewLeft = 3; const int pinViewRight = 4; const int pinViewBackwards = 5; const int pinViewLockOnTarget = 6; const int pinToggle1stPerson = 9; const int pinShipViewCounterClockwise = 15; const int pinShipViewClockwise = 16; #pragma endregion #pragma region Global Variables #pragma region Button States //BUTONS int btnState_ViewForward = 0; int btnState_ViewLeft = 0; int btnState_ViewRight = 0; int btnState_ViewBackwards = 0; int btnState_ViewLockOnTarget = 0; int btnState_Toggle1stPerson = 0; int btnState_ShipViewCounterClockwise = 0; int btnState_ShipViewClockwise = 0; int btnPrevState_ViewForward = HIGH; int btnPrevState_ViewLeft = HIGH; int btnPrevState_ViewRight = HIGH; int btnPrevState_ViewBackwards = HIGH; int btnPrevState_ViewLockOnTarget = HIGH; int btnPrevState_Toggle1stPerson = HIGH; int btnPrevState_ShipViewCounterClockwise = HIGH; int btnPrevState_ShipViewClockwise = HIGH; #pragma endregion #pragma endregion void setup() { // DEBUGING if(DEBUG) Serial.begin(9600); // Initialize Keyboard/Mouse Library Keyboard.begin(); Mouse.begin(); #pragma region Setup Pin pinMode(pinViewForward, INPUT_PULLUP); pinMode(pinViewLeft, INPUT_PULLUP); pinMode(pinViewRight, INPUT_PULLUP); pinMode(pinViewBackwards, INPUT_PULLUP); pinMode(pinViewLockOnTarget, INPUT_PULLUP); pinMode(pinToggle1stPerson, INPUT_PULLUP); pinMode(pinShipViewCounterClockwise, INPUT_PULLUP); pinMode(pinShipViewClockwise, INPUT_PULLUP); #pragma endregion } void loop() { #pragma region Handle Keyboard Buttons #pragma region Get Button States btnState_ViewForward = digitalRead(pinViewForward); btnState_ViewLeft = digitalRead(pinViewLeft); btnState_ViewRight = digitalRead(pinViewRight); btnState_ViewBackwards = digitalRead(pinViewBackwards); btnState_ViewLockOnTarget = digitalRead(pinViewLockOnTarget); btnState_Toggle1stPerson = digitalRead(pinToggle1stPerson); btnState_ShipViewCounterClockwise = digitalRead(pinShipViewCounterClockwise); btnState_ShipViewClockwise = digitalRead(pinShipViewClockwise); #pragma endregion #pragma region Check Button and Set new Previous State btnPrevState_ViewForward = CheckButton(pinViewForward, btnPrevState_ViewForward, btnState_ViewForward, chViewForward); btnPrevState_ViewLeft = CheckButton(pinViewLeft, btnPrevState_ViewLeft, btnState_ViewLeft, chViewLeft); btnPrevState_ViewRight = CheckButton(pinViewRight, btnPrevState_ViewRight, btnState_ViewRight, chViewRight); btnPrevState_ViewBackwards = CheckButton(pinViewBackwards, btnPrevState_ViewBackwards, btnState_ViewBackwards, chViewBackwards); btnPrevState_ViewLockOnTarget = CheckButton(pinViewLockOnTarget, btnPrevState_ViewLockOnTarget, btnState_ViewLockOnTarget, chViewLockOnTarget); btnPrevState_Toggle1stPerson = CheckButton(pinToggle1stPerson, btnPrevState_Toggle1stPerson, btnState_Toggle1stPerson, chToggle1stPerson); btnPrevState_ShipViewCounterClockwise = CheckMouseButton(pinShipViewCounterClockwise, btnPrevState_ShipViewCounterClockwise, btnState_ShipViewCounterClockwise, chShipViewCounterClockwise); btnPrevState_ShipViewClockwise = CheckMouseButton(pinShipViewClockwise, btnPrevState_ShipViewClockwise, btnState_ShipViewClockwise, chShipViewClockwise); #pragma endregion delay(50); if(DEBUG) { Keyboard.press(KEY_UP_ARROW); Mouse.click(MOUSE_RIGHT); Keyboard.releaseAll(); delay(5000); } } int CheckButton(int Pin, int PrevState, int CurrentState, char KeyToPress) { if ((CurrentState != PrevState) && (CurrentState == HIGH)) { Keyboard.press(KeyToPress); if(DEBUG) Serial.println(KeyToPress); delay(50); Keyboard.releaseAll(); // This is important after every Keyboard.press it will continue to be pressed } return CurrentState; } int CheckMouseButton(int Pin, int PrevState, int CurrentState, char KeyToPress) { if ((CurrentState != PrevState) && (CurrentState == HIGH)) { Mouse.press(KeyToPress); if(DEBUG) Serial.println(KeyToPress); delay(50); } if((CurrentState != PrevState) && CurrentState == LOW){ Mouse.release(KeyToPress); // This is important after every Keyboard.press it will continue to be pressed } return CurrentState; }