|
- #include <xcb/xcb.h>
-
- #include <stdlib.h>
-
- int main (void) {
- int active = 1;
-
- unsigned short int window_width = 640;
- unsigned short int window_height = 480;
-
- xcb_window_t window = 0;
- xcb_connection_t * connection = NULL;
- xcb_screen_t * screen = NULL;
- xcb_generic_event_t * event = NULL;
-
- unsigned int window_flags [2] = {
- 0,
- XCB_EVENT_MASK_NO_EVENT |
- XCB_EVENT_MASK_EXPOSURE |
- XCB_EVENT_MASK_RESIZE_REDIRECT |
- XCB_EVENT_MASK_KEY_RELEASE |
- XCB_EVENT_MASK_KEY_PRESS |
- XCB_EVENT_MASK_BUTTON_RELEASE |
- XCB_EVENT_MASK_BUTTON_PRESS
- };
-
- connection = xcb_connect (NULL, NULL);
-
- screen = xcb_setup_roots_iterator (xcb_get_setup (connection)).data;
-
- window = xcb_generate_id (connection);
-
- window_flags [0] = screen->black_pixel;
-
- 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,
- XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK, window_flags);
-
- xcb_map_window (connection, window);
-
- xcb_flush (connection);
-
- while (active) {
- event = xcb_wait_for_event (connection);
-
- switch (event->response_type & 127) {
- case XCB_EXPOSE:
- xcb_flush (connection);
- break;
- case XCB_KEY_PRESS:
- if ((int) ((xcb_key_press_event_t *) event)->detail == 24) {
- active = 0;
- }
- break;
- default:
- break;
- }
-
- free (event);
- }
-
- xcb_destroy_window (connection, window);
-
- xcb_disconnect (connection);
-
- return (0);
- }
|