#include #include #include #define XK_LATIN1 #include #include #include int main(void) { Display *dpy; dpy = XOpenDisplay(""); KeyCode keycode = 248; int keysym = XK_ecircumflex; XkbDescPtr xkb; if (!(xkb = XkbGetMap (dpy, XkbKeyTypesMask|XkbKeySymsMask, XkbUseCoreKbd))) { fprintf (stderr, "ERROR getting map\n"); exit(1); } XFlush (dpy); XSync (dpy, False); XkbMapChangesRec changes = { .changed = XkbKeyTypesMask|XkbKeySymsMask }; int oneGroupType[XkbNumKbdGroups] = { XkbOneLevelIndex }; changes.first_key_sym = keycode; changes.num_key_syms = 1; if (XkbChangeTypesOfKey(xkb, keycode, 1, XkbGroup1Mask, oneGroupType, &changes)) { fprintf(stderr, "ERROR changing type of key\n"); exit(1); } XkbKeySymEntry(xkb,keycode,0,0) = keysym; if (!XkbChangeMap(dpy,xkb,&changes)) { fprintf(stderr, "ERROR changing map\n"); exit(1); } XkbFreeKeyboard (xkb, 0, TRUE); XFlush (dpy); XSync (dpy, False); fprintf(stderr,"ok\n"); return 0; }