LINUX.ORG.RU

Посмотри код XNeur. Есть предположение, что придется слушать event у всех существующих окон, но могу сильно гнать.

m0rph ★★★★★
()

void x11Events(XEvent *event)
{
        if(event->type == xkbEventType) {
                XkbEvent *xkbev = (XkbEvent *) event;
                if ( xkbev->any.xkb_type == XkbStateNotify ) {
                        int curLang = xkbev->state.group;
  ...

unfo ★★★★★
()
Ответ на: комментарий от unfo

Огромное спасибо, сейчас попробую.

deterok ★★★★★
() автор топика
Ответ на: комментарий от deterok

xkbEventType получается из вызова:

int dummy;
XkbQueryExtension(QX11Info::display(), &dummy, &xkbEventType, &dummy, &dummy, &dummy);

Эта функция объявлена в XKBlib.h

Первый параметр, Display*, у меня возвращает стандартный класс Qt. Вам, вероятно, надо еще что-то поискать.

unfo ★★★★★
()
Ответ на: комментарий от unfo

Да дисплей я уже получил( окно у меня генерируется чисто с использованием Xlib)
Сейчас спецификацию XKBlib изучаю.
Спасибо за помощь.

deterok ★★★★★
() автор топика
Последнее исправление: deterok (всего исправлений: 1)
Ответ на: комментарий от unfo

А как правильно XEvent к XkbEvent привести в C++?
Через reinterpret_cast или создать объект типа XkbEvent и присвоить поле core напрямую?

deterok ★★★★★
() автор топика
Ответ на: комментарий от deterok
XkbEvent *xkbev = (XkbEvent *) event;

У меня вот так, работает.

unfo ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.