Модератор: Модераторы разделов
VladislavTepes
Сообщения: 14
ОС: Debian 7 + Openbox WM
Сообщение
VladislavTepes » 08.02.2015 11:39
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
Сообщение
VladislavTepes » 09.02.2015 20:32
Отвечу сам себе. Я у мамы слабоумный и не лечусь
Нужно было указать обрабатываемые XKBlib события с помощью XkbSelectEventDetails. Что-то вроде:
Код:
XkbSelectEventDetails(si->dpy, XkbUseCoreKbd, XkbStateNotify, XkbAllStateComponentsMask, XkbGroupStateMask);
Надеюсь, кому-нибудь поможет.
P.S. А нужны были эти пляски вокруг голой Xlib для впиливания вменяемого индикатора/переключателя раскалдки в экран блокировки XScreenSaver.
Bizdelnick
Модератор
Сообщения: 21433
Статус: nulla salus bello
ОС: Debian GNU/Linux
Сообщение
Bizdelnick » 09.02.2015 21:55
В апстриме будет?
Пишите правильно:
в консоли
вк у́пе (с чем-либо)
в о бщем
воо бще в течение (часа)
новичо к
ню анс
по у молчанию приемле мо
проблем а
пробо вать
траф ик
yars
Сообщения: 1147
Статус: Slacker!
ОС: Slackware64-current
Сообщение
yars » 09.02.2015 23:39
Да, можно патчик?
VladislavTepes
Сообщения: 14
ОС: Debian 7 + Openbox WM
Сообщение
VladislavTepes » 10.02.2015 12:30
Bizdelnick писал(а): ↑ 09.02.2015 21:55
В апстриме будет?
yars писал(а): ↑ 09.02.2015 23:39
Да, можно патчик?
Сегодня - завтра постараюсь причесать все это дело и сделать pull request на github. Мне бы еще с их makefile-ами разобраться. Хотя могу патч в исходниках и сюда выложить.
VladislavTepes
Сообщения: 14
ОС: Debian 7 + Openbox WM
Сообщение
VladislavTepes » 11.02.2015 16:19
Вот, выкладываю патч. Содержимое архива распаковать в каталог driver в исходниках XScreenSaver, а дальше все стандартно - ./configure -> make -> checkinstall/make install.
У вас нет необходимых прав для просмотра вложений в этом сообщении.