#include #include #include #define XStringToKeycode(d, s) XKeysymToKeycode(d, XStringToKeysym(s)) int main(int argc, char *argv[]) { Display *d; Window w; XEvent ev; int state = 0; if (argc < 3) exit(1); else if (argc > 3) while (argc-- > 3) { if (!strcmp(argv[argc], "shift")) state |= ShiftMask; else if (!strcmp(argv[argc], "lock")) state |= LockMask; else if (!strcmp(argv[argc], "control")) state |= ControlMask; else if (!strcmp(argv[argc], "alt")) state |= Mod1Mask; else if (!strcmp(argv[argc], "num")) state |= Mod2Mask; else if (!strcmp(argv[argc], "meta")) state |= Mod3Mask; else if (!strcmp(argv[argc], "super")) state |= Mod4Mask; else if (!strcmp(argv[argc], "scroll")) state |= Mod5Mask; } w = strtol(argv[1], NULL, 0); d = XOpenDisplay(""); ev.xkey.window = w; ev.xkey.state = state; ev.xkey.keycode = XStringToKeycode(d, argv[2]); ev.type = KeyPress; XSendEvent(d, w, False, 0, &ev); ev.type = KeyRelease; XSendEvent(d, w, False, 0, &ev); XSync(d, False); return 0; }