LINUX.ORG.RU

Получить активную раскладку клавиатуры

 , ,


1

1

Под иксами все просто:

int result;
auto display = XkbOpenDisplay( getenv( "DISPLAY" ), NULL, NULL, NULL, NULL, &result );
auto keyboard = XkbAllocKeyboard();
XkbGetNames( display, XkbGroupNamesMask, keyboard );
XkbStateRec state;
XkbGetState( display, XkbUseCoreKbd, &state );
keyboard->names->groups[state.group];

А как под Wayland? Можно ли под ним вообще как-то универсально получать информацию о раскладке, не зависимо от DM?

★★★★★

Ответ на: комментарий от Architector

Да как-то не очень похоже на то, что мне надо. Там для использования надо родить контекст, в который надо запихать свой keymap, а тот, что используется в системе рожает композитор:

But Wayland does not define how this keymap is decided on. This decision is up to the compositor.

SR_team ★★★★★
() автор топика

Вангую что никак, вейланд вообще условно занимается только вопросом отрисовки окон. Всё остальное - на усмотрение разработчиков композитора.

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

Там же написано: надо слушать событие wl_keyboard.keymap.

Вот можете взглянуть, как это в mpv реализовано: обработчик прямо посредством wl_keyboard_add_listener из wayland-client-protocol.h вешается, достаёт из сокета строку раскладки (Вам, видимо, этого достаточно ;)), ну и генерирует уже дальше по ней раскладку.

Минус в том, что нельзя достать раскладку по запросу, нужно слушать постоянно и хранить состояние, ну и надеяться, что композитор добросовестно пошлёт это событие клиенту при старте — а не аж при следующей смене раскладки. Ну и вклиниться в обработку событий будет проблематично, если для создания Wayland-клиента используется более высокоуровневая библиотека.

mertvoprog
()

независимо от dm - нельзя. Что до плазмы, то там недавно запилили работающий в трее индикатор раскладки. Можно посмотреть, как он работает

Lrrr ★★★★★
()
23 апреля 2021 г.

Забавная ситуация - в wayland прекрасно работает через XWayland определение, и это при том что wayland по умолчанию раскладкой не рулит. Не ужели заставили всех разрабов DM передавать в XWayland инфу о раскладке?

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