История изменений
Исправление anonymous2, (текущая версия) :
подскажу через xcb api нужно воспользоваться
xcb_xkb_get_names
у меня проект есть qxkb5 вот пример оттуда
QStringList XcbConnection::getXkbNames(void) const
{
auto xcbReply = getReplyFunc2(xcb_xkb_get_names, conn.get(), XCB_XKB_ID_USE_CORE_KBD, XCB_XKB_NAME_DETAIL_GROUP_NAMES | XCB_XKB_NAME_DETAIL_SYMBOLS);
if(xcbReply.error())
throw std::runtime_error("xcb_xkb_get_names");
QStringList res;
if(auto reply = xcbReply.reply())
{
const void *buffer = xcb_xkb_get_names_value_list(reply.get());
xcb_xkb_get_names_value_list_t list;
xcb_xkb_get_names_value_list_unpack(buffer, reply->nTypes, reply->indicators, reply->virtualMods,
reply->groupNames, reply->nKeys, reply->nKeyAliases, reply->nRadioGroups, reply->which, & list);
int groups = xcb_xkb_get_names_value_list_groups_length(reply.get(), & list);
for(int ii = 0; ii < groups; ++ii)
res << getAtomName(list.groups[ii]);
}
return res;
}
Исходная версия anonymous2, :
подскажу через xcb api нужно воспользоваться
xcb_xkb_get_names
у меня проект есть qxkb5 на github вот пример
QStringList XcbConnection::getXkbNames(void) const
{
auto xcbReply = getReplyFunc2(xcb_xkb_get_names, conn.get(), XCB_XKB_ID_USE_CORE_KBD, XCB_XKB_NAME_DETAIL_GROUP_NAMES | XCB_XKB_NAME_DETAIL_SYMBOLS);
if(xcbReply.error())
throw std::runtime_error("xcb_xkb_get_names");
QStringList res;
if(auto reply = xcbReply.reply())
{
const void *buffer = xcb_xkb_get_names_value_list(reply.get());
xcb_xkb_get_names_value_list_t list;
xcb_xkb_get_names_value_list_unpack(buffer, reply->nTypes, reply->indicators, reply->virtualMods,
reply->groupNames, reply->nKeys, reply->nKeyAliases, reply->nRadioGroups, reply->which, & list);
int groups = xcb_xkb_get_names_value_list_groups_length(reply.get(), & list);
for(int ii = 0; ii < groups; ++ii)
res << getAtomName(list.groups[ii]);
}
return res;
}