#include #include #include #include #include int main(int argc, char **argv) { Display *dpy = XOpenDisplay(NULL); if (dpy == NULL) { fprintf(stderr, "Cannot open display\n"); exit(-1); } XkbStateRec state; XkbGetState(dpy, XkbUseCoreKbd, &state); XkbDescPtr desc = XkbGetKeyboard(dpy, XkbAllComponentsMask, XkbUseCoreKbd); char *group = XGetAtomName(dpy, desc->names->groups[state.group]); //printf("Full name: %s\n", group); XkbRF_VarDefsRec vd; XkbRF_GetNamesProp(dpy, NULL, &vd); char *layout = strtok(vd.layout, ","); for (int i = 0; i < state.group; i++) { layout = strtok(NULL, ","); if (layout == NULL) { return -1; } } //printf("Layout name: %s\n", tok); if (strcmp(layout, "fr")) return 1; char *variant = strtok(vd.variant, ","); for (int i = 0; i < state.group; i++) { variant = strtok(NULL, ","); if (variant == NULL) { return -1; } } //printf("Variant name: %s\n", variant); if (strcmp(variant, "bepo")) return 1; printf("Bépo détecté\n"); return 0; }