Russian Qt Forum
Май 18, 2024, 00:53 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: События Xorg в Qt4  (Прочитано 2455 раз)
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 обработчик кушает все события и там нужно ставить фильтры.
« Последнее редактирование: Сентябрь 28, 2007, 22:51 от mega_m » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 20.