123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- unsigned long taskSwButton_triggeredMillis = 0;
- unsigned long taskSwButton_lastPressedMillis = 0;
- unsigned long taskSwButton_disableMillis = 0;
- unsigned long taskSwButton_tabKeyDownMillis = 0;
- unsigned long taskSwButton_winKeyDownMillis = 0;
- unsigned int taskSwButton_execLoopAfter = 250;
- unsigned int taskSwButton_disableAfterAction = 1000;
- unsigned int taskSwButton_pressDurationMin_veryShortHold = 1;
- unsigned int taskSwButton_pressDurationMax_veryShortHold = 250;
- unsigned int taskSwButton_pressDurationMin_shortHold = 350;
- unsigned int taskSwButton_pressDurationMax_shortHold = 900;
- unsigned int taskSwButton_pressDuration_longHold = 1000;
- unsigned int taskSwButton_tabKey_Up_After = 2000;
- //unsigned int taskSwButton_winKey_Up_After = 3000;
- void handleTaskSwitchButton() {
- taskSwButton_lastPressedMillis = millis();
- if (taskSwButton_disableMillis > 0 ) taskSwButton_disableMillis = millis();
- if (taskSwButton_disableMillis == 0) {
- if (taskSwButton_triggeredMillis == 0) {
- taskSwButton_triggeredMillis = millis();
- if(useSerial) Serial.println(F("TASKSWITCH INITIALLY PRESSED"));
- if ( taskSwButton_tabKeyDownMillis > 0 ) {
- taskSwButton_tabKeyDownMillis = millis();
- BootKeyboard.write(KEY_TAB);
- }
- // else if ( taskSwButton_winKeyDownMillis > 0 ) {
- // taskSwButton_winKeyDownMillis = millis();
- // BootKeyboard.write(KEY_ESC);
- // }
- }
- else if ( (millis() - taskSwButton_triggeredMillis) >= taskSwButton_pressDuration_longHold) {
- // LONG PRESSED
- taskSwButton_triggeredMillis = 0;
- taskSwButton_lastPressedMillis = 0;
- taskSwButton_disableMillis = millis();
- if (useSerial) {
- Serial.println(F("TASKSWITCH LONG HOLD"));
- }
- if (sendHID) {
- if(useSerial) Serial.println(F("sending ALT+F4"));
- BootKeyboard.press(KEY_LEFT_ALT);
- BootKeyboard.press(KEY_F4);
- delay(50);
- BootKeyboard.releaseAll();
- }
- }
- }
- }
- void handleTaskSwitchButton_extendAltTabTimeout() {
- if(taskSwButton_tabKeyDownMillis > 0) taskSwButton_tabKeyDownMillis = millis();
- }
- void handleTaskSwitchButton_loop() {
- // handle Power Button short press
- if (taskSwButton_triggeredMillis > 0) {
- if (taskSwButton_lastPressedMillis > 0) {
- if ((millis() - taskSwButton_lastPressedMillis) > taskSwButton_execLoopAfter) {
- unsigned int tDelta;
- if(taskSwButton_lastPressedMillis == taskSwButton_triggeredMillis) tDelta = 1;
- else tDelta = taskSwButton_lastPressedMillis - taskSwButton_triggeredMillis;
- if (debug) {
- Serial.print(F("TASKSWITCH held for "));
- Serial.print(tDelta);
- Serial.println("ms");
- }
- if (tDelta >= taskSwButton_pressDurationMin_shortHold && tDelta <= taskSwButton_pressDurationMax_shortHold) {
- // SHORT PRESSED
- if (useSerial) {
- Serial.println(F("TASKSWITCH SHORT HOLD"));
- Serial.println("sending ALT+TAB");
- }
- if (sendHID) {
- // sending ALT+TAB (leaving TAB engaged
- BootKeyboard.press(KEY_LEFT_ALT);
- BootKeyboard.write(KEY_TAB);
- }
- taskSwButton_tabKeyDownMillis = millis();
- taskSwButton_triggeredMillis = 0;
- taskSwButton_lastPressedMillis = 0;
- //taskSwButton_disableMillis = millis();
- }
- else if (tDelta >= taskSwButton_pressDurationMin_veryShortHold && tDelta < taskSwButton_pressDurationMax_veryShortHold) {
- // VERY SHORT HOLD
- if (useSerial) Serial.println(F("POWER VERY SHORT HOLD"));
- //if ((millis() - taskSwButton_winKeyDownMillis) > taskSwButton_winKey_Up_After) {
- if (taskSwButton_tabKeyDownMillis == 0) {
- if (useSerial) Serial.println("sending WIN-KEY");
- if (sendHID) {
- BootKeyboard.write(KEY_LEFT_WINDOWS);
- }
- //taskSwButton_winKeyDownMillis = millis();
- }
- taskSwButton_triggeredMillis = 0;
- taskSwButton_lastPressedMillis = 0;
- //taskSwButton_disableMillis = millis();
- }
- else {
- // button was pressed too long for "SHORT PRESSED"
- if (useSerial) {
- Serial.println(F("TASKSWITCH BUTTON CANCELLED"));
- }
- taskSwButton_triggeredMillis = 0;
- taskSwButton_lastPressedMillis = 0;
- }
- }
- }
- }
- if (taskSwButton_disableMillis > 0) {
- if ((millis() - taskSwButton_disableMillis) > taskSwButton_disableAfterAction) {
- taskSwButton_triggeredMillis = 0;
- taskSwButton_lastPressedMillis = 0;
- taskSwButton_disableMillis = 0;
- }
- }
- if (taskSwButton_tabKeyDownMillis > 0) {
- if ((millis() - taskSwButton_tabKeyDownMillis) > taskSwButton_tabKey_Up_After) {
- taskSwButton_tabKeyDownMillis = 0;
- if (sendHID) BootKeyboard.releaseAll();
- }
- }
- // if (taskSwButton_winKeyDownMillis > 0) {
- // if ((millis() - taskSwButton_winKeyDownMillis) > taskSwButton_winKey_Up_After) {
- // taskSwButton_winKeyDownMillis = 0;
- // }
- // }
- }
|