Created
January 5, 2013 17:38
-
-
Save 0xa/4462668 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <X11/Xlib.h> | |
#include <X11/keysym.h> | |
#include <unistd.h> | |
#include <string.h> | |
#include <stdio.h> | |
#include <stdlib.h> | |
const char* text = "le avoir savoir nuit leur ton je avant qui pays te se homme chez entrer tout leur encore heure regard " | |
"jour elle ne au savoir entrer appeler ton revenir fille pied enfant contre ame chambre " | |
"toujours ce parler coup ne rendre noir pied donc quelque sans peu ciel vie ici mille tres " | |
"sur main main rester quelque de sembler ni ce avoir vouloir voix vingt voir soir autre " | |
"avec eau parce que pendant oui votre cent reprendre ça lequel en voix vivre enfin fois " | |
"toujours avec sous on seul falloir regarder amour puis lui aimer sous pour la comme gens " | |
"le mille votre porter aussi lui chercher en maintenant dont en croire trois monde au nuit " | |
"pere moins yeux alors entre prendre faire car bien quand parce que quand parler contre cent " | |
"maison sortir et moi tete car etre pas tant ville où penser connaitre celui parce que ou " | |
"trop femme mourir terre falloir entendre avec jour pas trouver petit ou sur jeune cote " | |
"mille mot toi regard voir arriver sembler pere donc au homme ca ami depuis quatre pour " | |
"y comme entendre yeux tu deux aussi celui on toi bon rester trois autre nouveau plus " | |
"lequel sous eau terre apres moins aussi croire tête enfant y mettre tenir trop devant chambre " | |
"tres mon depuis premier ni avoir si toujours ainsi me deja ville chose dont lui grand dieu " | |
"porter femme rien y petit elle moi yeux an de quel aimer fille sentir bien il revenir mer mourir " | |
"devant vingt son mari vivre beau jamais sentir encore moi non chaque ville jamais trouver même toi peu etre repondre penser"; | |
/// -- thanks -- | |
// Send a fake keystroke event to an X window. | |
// by Adam Pierce - http://www.doctort.org/adam/ | |
// This is public domain software. It is free to use by anyone for any purpose. | |
XKeyEvent createKeyEvent(Display *display, Window &win, | |
Window &winRoot, bool press, | |
int keycode, int modifiers) | |
{ | |
XKeyEvent event; | |
event.display = display; | |
event.window = win; | |
event.root = winRoot; | |
event.subwindow = None; | |
event.time = CurrentTime; | |
event.x = 1; | |
event.y = 1; | |
event.x_root = 1; | |
event.y_root = 1; | |
event.same_screen = True; | |
event.keycode = XKeysymToKeycode(display, keycode); | |
event.state = modifiers; | |
if(press) | |
event.type = KeyPress; | |
else | |
event.type = KeyRelease; | |
return event; | |
} | |
int getRandMultiplier() { | |
return rand()%4000+500; | |
} | |
int main() { | |
int len = strlen(text); | |
int i = 0; | |
int keycode = 0; | |
int waitms = 10; | |
int revert; | |
Window winRoot; | |
Window winFocus; | |
while(i < len) { | |
if (text[i] == ' ') { | |
keycode = XK_space; | |
} else { | |
keycode = XK_a + (text[i] - 'a'); | |
} | |
Display *display = XOpenDisplay(0); | |
if(display == NULL) | |
return -1; | |
winRoot = XDefaultRootWindow(display); | |
XGetInputFocus(display, &winFocus, &revert); | |
XKeyEvent event = createKeyEvent(display, winFocus, winRoot, true, keycode, 0); | |
XSendEvent(event.display, event.window, True, KeyPressMask, (XEvent *)&event); | |
usleep(waitms*getRandMultiplier()); | |
event = createKeyEvent(display, winFocus, winRoot, false, keycode, 0); | |
XSendEvent(event.display, event.window, True, KeyPressMask, (XEvent *)&event); | |
usleep(waitms*getRandMultiplier()); | |
XCloseDisplay(display); | |
i++; | |
} | |
return 0; | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment