LINUX.ORG.RU

Сообщения drupaler

 

Отловить нажатие комбинации клавиш в XLib

Добрый день Мне нужно отловить нажатие CTRL+Y в иксах во всех окнах. Написал небольшую программу. Запускается но не работает. Выполнение останавливается на строке с вызовом XNextEvent. Помогите понять, в чем проблема. Спасибо.


#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
using namespace std;

int main()
{
    XEvent event;
    Display *dis;
    Window root;
    Bool owner_events = False;
    unsigned int modifiers = ControlMask;


    dis = XOpenDisplay(NULL);
    root = XDefaultRootWindow(dis);
    unsigned int keycode = XKeysymToKeycode(dis, XK_Y);
    XSelectInput(dis,root, KeyPressMask);
    XGrabKey(dis, keycode, modifiers, root, owner_events, GrabModeAsync, GrabModeAsync);

    while (1) {
        Bool QuiteCycle = False;
        XNextEvent(dis, &event);
        if (event.type == KeyPress) {
            cout << "Hot key pressed!" << endl;
            XUngrabKey(dis, keycode, modifiers, root);

        }
        if (QuiteCycle) {
            break;
        }
    }
    XCloseDisplay(dis);
    return 0;
}

 ,

drupaler
()

RSS подписка на новые темы