Xlib/XKBlib - отловить событие смены раскладки

Модератор: Модераторы разделов

Аватара пользователя
VladislavTepes
Сообщения: 14
ОС: Debian 7 + Openbox WM

Xlib/XKBlib - отловить событие смены раскладки

Сообщение VladislavTepes »

Hi all. Пытаюсь отловить событие смены раскладки клавиатуры (XkbStateNotify), но пока что-то не особо получается. В совсем общих чертах так:

Код:

int xkb_event_type; XkbQueryExtension(si->dpy, NULL, &xkb_event_type, NULL, NULL, NULL); //.... union { XEvent x_event; # ifdef HAVE_RANDR XRRScreenChangeNotifyEvent xrr_event; # endif } event; while (some_necessary_condition) { if (event.x_event.type == xkb_event_type) { XkbEvent *xkbevt = (XkbEvent*) &(event.x_event); if (xkbevt->any.xkb_type == XkbStateNotify) { // do something } } } // ...


Но нужные действия не выполняются. В каком месте я поступаю неправильно?
Спасибо сказали:
Аватара пользователя
VladislavTepes
Сообщения: 14
ОС: Debian 7 + Openbox WM

Re: Xlib/XKBlib - отловить событие смены раскладки

Сообщение VladislavTepes »

Отвечу сам себе. Я у мамы слабоумный и не лечусь :D Нужно было указать обрабатываемые XKBlib события с помощью XkbSelectEventDetails. Что-то вроде:

Код:

XkbSelectEventDetails(si->dpy, XkbUseCoreKbd, XkbStateNotify, XkbAllStateComponentsMask, XkbGroupStateMask);

Надеюсь, кому-нибудь поможет.
P.S. А нужны были эти пляски вокруг голой Xlib для впиливания вменяемого индикатора/переключателя раскалдки в экран блокировки XScreenSaver.
Изображение
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21433
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Xlib/XKBlib - отловить событие смены раскладки

Сообщение Bizdelnick »

В апстриме будет?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
yars
Сообщения: 1147
Статус: Slacker!
ОС: Slackware64-current

Re: Xlib/XKBlib - отловить событие смены раскладки

Сообщение yars »

Да, можно патчик?
Slackware64-current/Xfce/Xiaomi Mi Notebook Pro 15.6 | Arch Linux/Xfce/Lenovo G580
-------------
Registered Linux User #557010
Спасибо сказали:
Аватара пользователя
VladislavTepes
Сообщения: 14
ОС: Debian 7 + Openbox WM

Re: Xlib/XKBlib - отловить событие смены раскладки

Сообщение VladislavTepes »

Bizdelnick писал(а):
09.02.2015 21:55
В апстриме будет?

yars писал(а):
09.02.2015 23:39
Да, можно патчик?


Сегодня - завтра постараюсь причесать все это дело и сделать pull request на github. Мне бы еще с их makefile-ами разобраться. Хотя могу патч в исходниках и сюда выложить.
Спасибо сказали:
Аватара пользователя
VladislavTepes
Сообщения: 14
ОС: Debian 7 + Openbox WM

Re: Xlib/XKBlib - отловить событие смены раскладки

Сообщение VladislavTepes »

Вот, выкладываю патч. Содержимое архива распаковать в каталог driver в исходниках XScreenSaver, а дальше все стандартно - ./configure -> make -> checkinstall/make install.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали: