Название: События Xorg в Qt4 Отправлено: mega_m от Сентябрь 28, 2007, 22:48 Подскажите как зарегистрировать события клавиатуры в xorg глобально,
чтобы их можно было обрабатывать функцией bool Daemon::x11Event(XEvent * event) Я использовал "grab" клавиатуры. Display *display = this->x11Info().display(); XGrabKey (display, 44, ControlMask, DefaultRootWindow(display), False, GrabModeAsync, GrabModeAsync); Указал какие события нужно обрабатывать XSelectInput(display, DefaultRootWindow(display), KeyPress | KeyRelease); Он блокирует клавиши для других приложений, но в обработчик событие не поступает. Если приложение получает фокус,то первый варнинг работает, а второй нет. Это потому, что фокус перехватывает lineedit ? bool Daemon::x11Event(XEvent * event) { qWarning(QString::number( ((XKeyEvent *)event)->keycode).toLocal8Bit()); if(((XKeyEvent *)event)->type == KeyPress) qWarning("ypa"); return false; } Daemon наследуется от QMainWindow В Windows всё получилось. В Gtk обработчик кушает все события и там нужно ставить фильтры. |