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 обработчик кушает все события и там нужно ставить фильтры.
|