Changeset 2457 for neercs/trunk/src/main.c
- Timestamp:
- Jun 19, 2008, 2:23:46 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
neercs/trunk/src/main.c
r2456 r2457 75 75 int eof = 0, refresh = 1, command = 0; 76 76 long long unsigned int last_key_time = 0; 77 int lock_offset = 0; 77 78 78 79 default_shell = getenv("SHELL"); … … 125 126 screen_list->screensaver_data = NULL; 126 127 screen_list->in_screensaver = 0; 128 screen_list->locked = 0; 129 memset(screen_list->lockmsg, 0, 1024); 130 memset(screen_list->lockpass, 0, 1024); 127 131 128 132 recurrent_list = (struct recurrent_list*) malloc(sizeof(struct recurrent_list)); … … 215 219 { 216 220 unsigned int c = caca_get_event_key_ch(&ev); 217 218 221 if(command) 219 222 { … … 265 268 refresh = 1; 266 269 break; 270 case 'x': 271 case 0x18: //CACA_KEY_CTRL_X: 272 memset(screen_list->lockpass, 0, 1024); 273 screen_list->locked = 1; 274 lock_offset = 0; 275 refresh = 1; 276 break; 267 277 case 'h': 268 278 case 0x08: //CACA_KEY_CTRL_H: … … 285 295 continue; 286 296 } 287 288 289 switch(c) 297 else if(screen_list->locked) 290 298 { 291 case 0x01: //CACA_KEY_CTRL_A: 292 command = 1; break; 293 case CACA_KEY_UP: 294 write(screen_list->screen[screen_list->pty]->fd, "\x1b[A", 3); break; 295 case CACA_KEY_DOWN: 296 write(screen_list->screen[screen_list->pty]->fd, "\x1b[B", 3); break; 297 case CACA_KEY_RIGHT: 298 write(screen_list->screen[screen_list->pty]->fd, "\x1b[C", 3); break; 299 case CACA_KEY_LEFT: 300 write(screen_list->screen[screen_list->pty]->fd, "\x1b[D", 3); break; 301 case CACA_KEY_ESCAPE: 302 if(screen_list->help) 299 if(c==0x08) 303 300 { 304 screen_list->help = 0; 305 refresh = 1; 306 break; 301 if(lock_offset) 302 { 303 screen_list->lockpass[lock_offset-1] = 0; 304 lock_offset--; 305 } 307 306 } 308 default: 309 write(screen_list->screen[screen_list->pty]->fd, &c, 1); break; 307 else if(c==0x0d) // RETURN 308 { 309 memset(screen_list->lockmsg, 0, 1024); 310 if(validate_lock(screen_list, getenv("USER"), screen_list->lockpass)) 311 { 312 memset(screen_list->lockpass, 0, 1024); 313 screen_list->locked = 0; 314 lock_offset = 0; 315 refresh = 1; 316 } 317 else 318 { 319 memset(screen_list->lockpass, 0, 1024); 320 lock_offset = 0; 321 refresh = 1; 322 } 323 } 324 else 325 { 326 if(lock_offset < 1023) 327 { 328 screen_list->lockpass[lock_offset++] = c; 329 screen_list->lockpass[lock_offset] = 0; 330 } 331 } 332 } 333 else 334 { 335 switch(c) 336 { 337 case 0x01: //CACA_KEY_CTRL_A: 338 command = 1; break; 339 case CACA_KEY_UP: 340 write(screen_list->screen[screen_list->pty]->fd, "\x1b[A", 3); break; 341 case CACA_KEY_DOWN: 342 write(screen_list->screen[screen_list->pty]->fd, "\x1b[B", 3); break; 343 case CACA_KEY_RIGHT: 344 write(screen_list->screen[screen_list->pty]->fd, "\x1b[C", 3); break; 345 case CACA_KEY_LEFT: 346 write(screen_list->screen[screen_list->pty]->fd, "\x1b[D", 3); break; 347 case CACA_KEY_ESCAPE: 348 if(screen_list->help) 349 { 350 screen_list->help = 0; 351 refresh = 1; 352 break; 353 } 354 default: 355 write(screen_list->screen[screen_list->pty]->fd, &c, 1); break; 356 } 310 357 } 311 358 } … … 344 391 345 392 /* Resfresh screen */ 346 if((refresh || screen_list->in_bell) && 347 (get_ms() - last_key_time < screen_list->screensaver_timeout)) 348 { 349 refresh = 0; 350 refresh_screens(cv, dp, screen_list); 351 } 352 if((get_ms() - last_key_time > screen_list->screensaver_timeout)) 353 { 354 if(!screen_list->in_screensaver) 355 screensaver_init(cv, dp, screen_list); 356 screen_list->in_screensaver = 1; 357 358 caca_set_cursor(dp, 0); 359 draw_screensaver(cv, dp, screen_list); 393 394 if(screen_list->locked) 395 { 396 draw_lock(cv, screen_list); 360 397 caca_refresh_display(dp); 361 398 } 399 else 400 { 401 402 if((refresh || screen_list->in_bell) && 403 (get_ms() - last_key_time < screen_list->screensaver_timeout)) 404 { 405 refresh = 0; 406 refresh_screens(cv, dp, screen_list); 407 } 408 409 if((get_ms() - last_key_time > screen_list->screensaver_timeout)) 410 { 411 if(!screen_list->in_screensaver) 412 screensaver_init(cv, dp, screen_list); 413 screen_list->in_screensaver = 1; 414 415 caca_set_cursor(dp, 0); 416 draw_screensaver(cv, dp, screen_list); 417 caca_refresh_display(dp); 418 } 419 } 362 420 363 421 eof = 1; 364 for(i =0; i < screen_list->count; i++)422 for(i=0; i < screen_list->count; i++) 365 423 if(screen_list->screen[i]->fd >= 0) 366 424 eof = 0;
Note: See TracChangeset
for help on using the changeset viewer.