123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- unsigned long powerButton_triggeredMillis = 0;
- unsigned long powerButton_lastPressedMillis = 0;
- unsigned long powerButton_disableMillis = 0;
- unsigned int powerButton_execLoopAfter = 250;
- unsigned int powerButton_disableAfterAction = 1500;
- unsigned int powerButton_pressDurationMin_shortHoldAction = 250;
- unsigned int powerButton_pressDurationMax_shortHoldAction = 600;
- unsigned int powerButton_pressDurationMin_sleep = 800;
- unsigned int powerButton_pressDurationMax_sleep = 2000;
- unsigned int powerButton_pressDuration_shutdown = 3000;
- void handlePowerButton() {
- powerButton_lastPressedMillis = millis();
- if (powerButton_disableMillis > 0 ) powerButton_disableMillis = millis();
- if (powerButton_disableMillis == 0) {
- if (powerButton_triggeredMillis == 0) {
- powerButton_triggeredMillis = millis();
- if(useSerial) Serial.println(F("POWER INITIALLY PRESSED"));
- //Serial.println(F("sending ALT+F4"));
- //BootKeyboard.press(KEY_LEFT_ALT);
- //BootKeyboard.press(KEY_F4);
- //delay(50);
- //BootKeyboard.releaseAll();
- }
- else if ( (millis() - powerButton_triggeredMillis) >= powerButton_pressDuration_shutdown) {
- // LONG PRESSED
- powerButton_triggeredMillis = 0;
- powerButton_lastPressedMillis = 0;
- powerButton_disableMillis = millis();
- if (useSerial) {
- Serial.println(F("POWER LONG HOLD"));
- Serial.println(F("sending SYSTEM_POWER_DOWN"));
- }
- if (sendHID) System.write(SYSTEM_POWER_DOWN);
- }
- }
- }
- void handlePowerButton_loop() {
- // handle Power Button short press
- if (powerButton_triggeredMillis > 0) {
- if (powerButton_lastPressedMillis > 0) {
- if ((millis() - powerButton_lastPressedMillis) > powerButton_execLoopAfter) {
- unsigned int tDelta = powerButton_lastPressedMillis - powerButton_triggeredMillis;
- if (debug) {
- Serial.print(F("POWER held for "));
- Serial.print(tDelta);
- Serial.println("ms");
- }
- if (tDelta >= powerButton_pressDurationMin_sleep && tDelta <= powerButton_pressDurationMax_sleep) {
- // SHORT PRESSED
- if (useSerial) {
- Serial.println(F("POWER SHORT HOLD"));
- Serial.println(F("sending SYSTEM_SLEEP"));
- }
- if (sendHID) System.write(SYSTEM_SLEEP);
- powerButton_triggeredMillis = 0;
- powerButton_lastPressedMillis = 0;
- powerButton_disableMillis = millis();
- }
- else if (tDelta >= powerButton_pressDurationMin_shortHoldAction && tDelta < powerButton_pressDurationMax_shortHoldAction) {
- // VERY SHORT HOLD
- if (useSerial) {
- Serial.println(F("POWER VERY SHORT HOLD"));
- Serial.println("sending WIN KEY");
- }
- if (sendHID) BootKeyboard.write(KEY_LEFT_WINDOWS);
- powerButton_triggeredMillis = 0;
- powerButton_lastPressedMillis = 0;
- //powerButton_disableMillis = millis();
- }
- else {
- // button was pressed too long for "SHORT PRESSED"
- if (useSerial) {
- Serial.println(F("POWER BUTTON CANCELLED"));
- }
- powerButton_triggeredMillis = 0;
- powerButton_lastPressedMillis = 0;
- }
- }
- }
- }
- if (powerButton_disableMillis > 0) {
- if ((millis() - powerButton_disableMillis) > powerButton_disableAfterAction) {
- powerButton_triggeredMillis = 0;
- powerButton_lastPressedMillis = 0;
- powerButton_disableMillis = 0;
- }
- }
- }
|