Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <xcb/xcb.h>
- #define XK_LATIN1
- #include <xcb/xcb_keysyms.h>
- #include <X11/keysymdef.h>
- #include <stdio.h>
- #include <stdlib.h>
- int
- main ()
- {
- xcb_connection_t *conn;
- conn = xcb_connect (NULL, NULL);
- xcb_key_symbols_t * keysyms = xcb_key_symbols_alloc(conn);
- xcb_keycode_t * keycodesPtr = xcb_key_symbols_get_keycode(keysyms, XK_space);
- const xcb_setup_t* setup = xcb_get_setup(conn);
- xcb_screen_iterator_t screens = xcb_setup_roots_iterator(setup);
- int screensCnt = screens.rem;
- for (int i=0; i<screensCnt; i++) {
- xcb_void_cookie_t rez_grab = xcb_grab_key(conn, 1, screens.data->root, XCB_MOD_MASK_ANY, keycodesPtr[0], XCB_GRAB_MODE_ASYNC, XCB_GRAB_MODE_ASYNC);
- const static uint32_t values[] = { XCB_EVENT_MASK_EXPOSURE | XCB_EVENT_MASK_BUTTON_PRESS };
- xcb_change_window_attributes (conn, screens.data->root, XCB_CW_EVENT_MASK, values);
- xcb_screen_next(&screens);
- }
- xcb_flush(conn);
- // start event loop
- while (1) {
- xcb_generic_event_t *ev = xcb_wait_for_event(conn);
- if (ev && ((ev->response_type & ~0x80) == XCB_KEY_PRESS))
- {
- xcb_key_press_event_t *kp = (xcb_key_press_event_t *)ev;
- printf ("Got key press %d\n", (int)kp->event);
- }
- if (ev != NULL) {
- free(ev);
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement