More to come...
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

67 рядки
1.5KB

  1. #include <xcb/xcb.h>
  2. #include <stdlib.h>
  3. int main (void) {
  4. int active = 1;
  5. unsigned short int window_width = 640;
  6. unsigned short int window_height = 480;
  7. xcb_window_t window = 0;
  8. xcb_connection_t * connection = NULL;
  9. xcb_screen_t * screen = NULL;
  10. xcb_generic_event_t * event = NULL;
  11. unsigned int window_flags [2] = {
  12. 0,
  13. XCB_EVENT_MASK_NO_EVENT |
  14. XCB_EVENT_MASK_EXPOSURE |
  15. XCB_EVENT_MASK_RESIZE_REDIRECT |
  16. XCB_EVENT_MASK_KEY_RELEASE |
  17. XCB_EVENT_MASK_KEY_PRESS |
  18. XCB_EVENT_MASK_BUTTON_RELEASE |
  19. XCB_EVENT_MASK_BUTTON_PRESS
  20. };
  21. connection = xcb_connect (NULL, NULL);
  22. screen = xcb_setup_roots_iterator (xcb_get_setup (connection)).data;
  23. window = xcb_generate_id (connection);
  24. window_flags [0] = screen->black_pixel;
  25. xcb_create_window (connection, screen->root_depth, window, screen->root, 0, 0, window_width, window_height, 10, XCB_WINDOW_CLASS_INPUT_OUTPUT, screen->root_visual,
  26. XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK, window_flags);
  27. xcb_map_window (connection, window);
  28. xcb_flush (connection);
  29. while (active) {
  30. event = xcb_wait_for_event (connection);
  31. switch (event->response_type & 127) {
  32. case XCB_EXPOSE:
  33. xcb_flush (connection);
  34. break;
  35. case XCB_KEY_PRESS:
  36. if ((int) ((xcb_key_press_event_t *) event)->detail == 24) {
  37. active = 0;
  38. }
  39. break;
  40. default:
  41. break;
  42. }
  43. free (event);
  44. }
  45. xcb_destroy_window (connection, window);
  46. xcb_disconnect (connection);
  47. return (0);
  48. }