/* * keylang.c * * Created on: 17 февр. 2023 г. * Author: alexander */ #include "keylang.h" #include #include #include #include #include /* * 0 - unknown * 1 - us * 2 - ru */ int getKeyboardLanguage() { Display *dpy = XOpenDisplay(NULL); XkbStateRec state; XkbGetState(dpy, XkbUseCoreKbd, &state); XkbRF_VarDefsRec vd; XkbRF_GetNamesProp(dpy, NULL, &vd); int length = strlen(vd.layout) + 1; char *current = (char *)malloc(sizeof(char) * length); strncpy(current, vd.layout, length); current[length] = '\0'; XCloseDisplay(dpy); char *lang = strtok(current, ","); for (int i = 0; i < state.group; i++) lang = strtok(NULL, ","); int langcode = 0; if (!strcmp(lang, "us")) langcode = 1; if (!strcmp(lang, "ru")) langcode = 2; free(current); return langcode; }