Changeset 681 for libcaca/trunk/caca/driver_x11.c
- Timestamp:
- Mar 23, 2006, 7:36:59 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcaca/trunk/caca/driver_x11.c
r672 r681 400 400 } 401 401 402 static unsigned int x11_get_event(caca_t *kk) 403 { 404 unsigned int event = 0; 402 static int x11_get_event(caca_t *kk, struct caca_event *ev) 403 { 405 404 XEvent xevent; 406 405 char key; … … 458 457 kk->mouse.y = newy; 459 458 460 return CACA_EVENT_MOUSE_MOTION | (kk->mouse.x << 12) | kk->mouse.y; 459 ev->type = CACA_EVENT_MOUSE_MOTION; 460 ev->data.mouse.x = kk->mouse.x; 461 ev->data.mouse.y = kk->mouse.y; 462 return 1; 461 463 } 462 464 463 465 /* Check for mouse press and release events */ 464 466 if(xevent.type == ButtonPress) 465 return CACA_EVENT_MOUSE_PRESS 466 | ((XButtonEvent *)&xevent)->button; 467 { 468 ev->type = CACA_EVENT_MOUSE_PRESS; 469 ev->data.mouse.button = ((XButtonEvent *)&xevent)->button; 470 return 1; 471 } 467 472 468 473 if(xevent.type == ButtonRelease) 469 return CACA_EVENT_MOUSE_RELEASE 470 | ((XButtonEvent *)&xevent)->button; 474 { 475 ev->type = CACA_EVENT_MOUSE_RELEASE; 476 ev->data.mouse.button = ((XButtonEvent *)&xevent)->button; 477 return 1; 478 } 471 479 472 480 /* Check for key press and release events */ 473 481 if(xevent.type == KeyPress) 474 ev ent |= CACA_EVENT_KEY_PRESS;482 ev->type = CACA_EVENT_KEY_PRESS; 475 483 else if(xevent.type == KeyRelease) 476 ev ent |= CACA_EVENT_KEY_RELEASE;484 ev->type = CACA_EVENT_KEY_RELEASE; 477 485 else 478 486 continue; 479 487 480 488 if(XLookupString(&xevent.xkey, &key, 1, NULL, NULL)) 481 return event | key; 489 { 490 ev->data.key.c = key; 491 ev->data.key.ucs4 = key; 492 ev->data.key.utf8[0] = key; 493 ev->data.key.utf8[1] = '\0'; 494 return 1; 495 } 482 496 483 497 keysym = XKeycodeToKeysym(kk->drv.p->dpy, xevent.xkey.keycode, 0); 484 498 switch(keysym) 485 499 { 486 case XK_F1: return event | CACA_KEY_F1; 487 case XK_F2: return event | CACA_KEY_F2; 488 case XK_F3: return event | CACA_KEY_F3; 489 case XK_F4: return event | CACA_KEY_F4; 490 case XK_F5: return event | CACA_KEY_F5; 491 case XK_F6: return event | CACA_KEY_F6; 492 case XK_F7: return event | CACA_KEY_F7; 493 case XK_F8: return event | CACA_KEY_F8; 494 case XK_F9: return event | CACA_KEY_F9; 495 case XK_F10: return event | CACA_KEY_F10; 496 case XK_F11: return event | CACA_KEY_F11; 497 case XK_F12: return event | CACA_KEY_F12; 498 case XK_F13: return event | CACA_KEY_F13; 499 case XK_F14: return event | CACA_KEY_F14; 500 case XK_F15: return event | CACA_KEY_F15; 501 case XK_Left: return event | CACA_KEY_LEFT; 502 case XK_Right: return event | CACA_KEY_RIGHT; 503 case XK_Up: return event | CACA_KEY_UP; 504 case XK_Down: return event | CACA_KEY_DOWN; 505 default: return CACA_EVENT_NONE; 506 } 500 case XK_F1: ev->data.key.c = CACA_KEY_F1; break; 501 case XK_F2: ev->data.key.c = CACA_KEY_F2; break; 502 case XK_F3: ev->data.key.c = CACA_KEY_F3; break; 503 case XK_F4: ev->data.key.c = CACA_KEY_F4; break; 504 case XK_F5: ev->data.key.c = CACA_KEY_F5; break; 505 case XK_F6: ev->data.key.c = CACA_KEY_F6; break; 506 case XK_F7: ev->data.key.c = CACA_KEY_F7; break; 507 case XK_F8: ev->data.key.c = CACA_KEY_F8; break; 508 case XK_F9: ev->data.key.c = CACA_KEY_F9; break; 509 case XK_F10: ev->data.key.c = CACA_KEY_F10; break; 510 case XK_F11: ev->data.key.c = CACA_KEY_F11; break; 511 case XK_F12: ev->data.key.c = CACA_KEY_F12; break; 512 case XK_F13: ev->data.key.c = CACA_KEY_F13; break; 513 case XK_F14: ev->data.key.c = CACA_KEY_F14; break; 514 case XK_F15: ev->data.key.c = CACA_KEY_F15; break; 515 case XK_Left: ev->data.key.c = CACA_KEY_LEFT; break; 516 case XK_Right: ev->data.key.c = CACA_KEY_RIGHT; break; 517 case XK_Up: ev->data.key.c = CACA_KEY_UP; break; 518 case XK_Down: ev->data.key.c = CACA_KEY_DOWN; break; 519 520 default: ev->type = CACA_EVENT_NONE; return 0; 521 } 522 523 ev->data.key.ucs4 = 0; 524 ev->data.key.utf8[0] = '\0'; 525 return 1; 507 526 } 508 527 509 return CACA_EVENT_NONE; 528 ev->type = CACA_EVENT_NONE; 529 return 0; 510 530 } 511 531
Note: See TracChangeset
for help on using the changeset viewer.