void secret_button() { static unsigned long but1; but1 = millis(); Serial.println(F("1")); while(!digitalRead(ON_PIN)){ delay(20); if (millis() > but1 + 5000){ go_sleep(); } } but1 = millis(); while(millis() < but1 + BUTTON1_DELAY){delay(20); if(!digitalRead(ON_PIN)){ Serial.println(F("2")); while(!digitalRead(ON_PIN)){delay(20);} but1 = millis(); while(millis() < but1 + BUTTON1_DELAY){delay(20); if(!digitalRead(ON_PIN)){ Serial.println(F("3")); while(!digitalRead(ON_PIN)){delay(20);} but1 = millis(); while(millis() < but1 + BUTTON1_DELAY){delay(20); if(!digitalRead(ON_PIN)){ Serial.println(F("4")); while(!digitalRead(ON_PIN)){delay(20);} but1 = millis(); while(millis() < but1 + BUTTON1_DELAY){delay(20); if(!digitalRead(ON_PIN)){ Serial.println(F("5")); but1 = millis(); while(!digitalRead(ON_PIN)){delay(20); Serial.println(F("6")); if(millis() > but1 + 800){ Serial.println(F("Release now!")); lcd.clear(); lcd.setCursor(0, 0); lcd.print(F("Release now!")); delay(500); lcd.clear(); lcd.setCursor(0, 0); lcd.print(F("Press: open box")); lcd.setCursor(0,1); lcd.print(F("Hold: reset game")); delay(1000); while(digitalRead(ON_PIN)){} but1 = millis(); while(!digitalRead(ON_PIN)){delay(20);} if(millis() - but1 > 1000){ lcd.clear(); lcd.print(F("RESET GAME!")); delay(3000); target = 1; EEPROM.write(EEPROM_TARGET_INDEX, 1); break; } else { open_box(); delay(15000); close_box(); break; } } } } } } } } } } } }
void process_file_browser(int skey,int xcur,int ycur) { char cad[NAME_MAX+1]; int i; if(!misgraph(skey)) cnt_busca=0; switch(skey) { case -1: if((xcur==fx+20 || xcur==fx+21) && ycur==fy+1) { if(!cntf) break; Drawitem(0); postab=0; Itemup(ly-4); Drawitem(1); break; } if((xcur==fx+41 || xcur==fx+42) && ycur==fy+1) { Drawitem(0); postab=1; Itemup(ly-4); Drawitem(1); break; } if((xcur==fx+20 || xcur==fx+21) && ycur==ly-2) { if(!cntf) break; Drawitem(0); postab=0; Itemdown(ly-4); Drawitem(1); break; } if((xcur==fx+41 || xcur==fx+42) && ycur==ly-2) { Drawitem(0); postab=1; Itemdown(ly-4); Drawitem(1); break; } if(xcur<fx+3 || xcur>fx+lx-3) break; if(ycur<fy+2 || ycur>fy+ly-3) break; if(xcur<fx+22) { /*i=ycur-fy-2+fromf;*/ i=ycur-fy-2; if(i==positem && postab==0) { i+=fromf; if(i>cntf-1) break; if(strcmp(cur_dir,direct)) sprintf(cad,"%s/%s",cur_dir,files[i]); else strcpy(cad,files[i]); freefiles(); input_handler=0; xgets_enter=-1; close_box(); redraw_twin(); open_file(cad); K_CD(direct); direct[0]='\0'; break; } else { Drawitem(0); postab=0; positem=i; Drawitem(1); break; } } if(xcur>fx+22) { /*i=ycur-fy-2+fromd;*/ i=ycur-fy-2; if(i==positem && postab==1) { i+=fromd; if(i>cntd-1) break; strcpy(cad,dir[i]); freefiles(); K_CD(cad); Draw_file_browser(); break; } else { Drawitem(0); postab=1; positem=i; Drawitem(1); break; } } break; case XK_Escape: freefiles(); input_handler=0; xgets_enter=-1; close_box(); redraw_twin(); K_CD(direct); direct[0]='\0'; break; case XK_Prior: Drawitem(0); Itemup(ly-4); Drawitem(1); break; case XK_Next: Drawitem(0); Itemdown(ly-4); Drawitem(1); break; case XK_Up: Drawitem(0); Itemup(1); Drawitem(1); break; case XK_Down: Drawitem(0); Itemdown(1); Drawitem(1); break; case XK_Tab: if(!cntf) break; Drawitem(0); if(!postab) postab=1; else postab=0; if(positem>cntf-1 && postab==0) positem=cntf-1; if(positem>cntd-1 && postab==1) positem=cntd-1; Drawitem(1); break; case XK_Left: if(!cntf) break; Drawitem(0); if(positem>cntf-1) positem=cntf-1; postab=0; Drawitem(1); break; case XK_Right: Drawitem(0); if(positem>cntd-1) positem=cntd-1; postab=1; Drawitem(1); break; case XK_Return: if(!postab) { /*strcpy(cad,files[positem+fromf]);*/ if(strcmp(cur_dir,direct)) sprintf(cad,"%s/%s",cur_dir,files[positem+fromf]); else strcpy(cad,files[positem+fromf]); freefiles(); input_handler=0; xgets_enter=-1; close_box(); redraw_twin(); open_file(cad); K_CD(direct); direct[0]='\0'; } else { strcpy(cad,dir[positem+fromd]); freefiles(); K_CD(cad); Draw_file_browser(); } break; default: if(misgraph(skey)) { busca_cad[cnt_busca]=skey; cnt_busca++; if(postab==0) { for(i=0;files[i][0]!='\0' && i<2000;i++) { if(!strncmp(files[i],busca_cad,cnt_busca)) { fromf=cntf-(ly-4); if(fromf<0) { fromf=0; positem=cntf; } else positem=ly-4; if(cntf-i<=0) positem=(ly-4)-(cntf-i); else Itemup(cntf-i); Showfiles(); Drawitem(1); break; } } if(files[i][0]=='\0' || i==2000) cnt_busca=0; } else { for(i=0;dir[i][0]!='\0' && i<2000;i++) { if(!strncmp(dir[i],busca_cad,cnt_busca)) { fromd=cntd-(ly-4); if(fromd<0) { fromd=0; positem=cntd; } else positem=ly-4; if(cntd-i<=0) positem=(ly-4)-(cntd-i); else Itemup(cntd-i); Showdir(); Drawitem(1); break; } } if(dir[i][0]=='\0' || i==2000) cnt_busca=0; } } } }