#include "Keyboard.h" #include "Mouse.h" #pragma region The Settings (Axis range, keybindings etc) // DEBUG const bool DEBUG = false; // Key Bindings const char chViewTacticalRadar = KEY_TAB; const char chViewLongRangeRadar = 'q'; const char chTacticalLongRangeRadarToggle = MOUSE_MIDDLE; #pragma endregion #pragma region The Pin Settings (ALL PINS) // The Keyboard Buttons const int pinViewTacticalRadar = 7; const int pinViewLongRangeRadar = 8; const int pinTacticalLongRangeRadarToggle = 16; #pragma endregion #pragma region Global Variables #pragma region Button States //BUTONS int btnState_ViewTacticalRadar = 0; int btnState_ViewLongRangeRadar = 0; int btnState_TacticalLongRangeRadarToggle = 0; int btnPrevState_ViewTacticalRadar = HIGH; int btnPrevState_ViewLongRangeRadar = HIGH; int btnPrevState_TacticalLongRangeRadarToggle = 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(pinViewTacticalRadar, INPUT_PULLUP); pinMode(pinViewLongRangeRadar, INPUT_PULLUP); pinMode(pinTacticalLongRangeRadarToggle, INPUT_PULLUP); #pragma endregion } void loop() { #pragma region Handle Keyboard Buttons #pragma region Get Button States btnState_ViewTacticalRadar = digitalRead(pinViewTacticalRadar); btnState_ViewLongRangeRadar = digitalRead(pinViewLongRangeRadar); btnState_TacticalLongRangeRadarToggle = digitalRead(pinTacticalLongRangeRadarToggle); #pragma endregion #pragma region Check Button and Set new Previous State btnPrevState_ViewTacticalRadar = CheckButton(pinViewTacticalRadar, btnPrevState_ViewTacticalRadar, btnState_ViewTacticalRadar, chViewTacticalRadar); btnPrevState_ViewLongRangeRadar = CheckButton(pinViewLongRangeRadar, btnPrevState_ViewLongRangeRadar, btnState_ViewLongRangeRadar, chViewLongRangeRadar); btnPrevState_TacticalLongRangeRadarToggle = CheckMouseButton(pinTacticalLongRangeRadarToggle, btnPrevState_TacticalLongRangeRadarToggle, btnState_TacticalLongRangeRadarToggle, chTacticalLongRangeRadarToggle); #pragma endregion delay(50); } 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; }