#include <fakekey/fakekey.h>

int
main (int argc, char **argv)
{
	FakeKey *fk;
	char *dpy_name;
	Display *display;
	
	dpy_name = getenv ("DISPLAY");
	if (!dpy_name) {
		printf ("No DISPLAY set!");
		return 1;
	}
	
	if ((argc < 2) || (strlen (argv[1]) < 1)) {
		printf ("Gotta specify a key to press, try again.\n");
		return 2;
	}
	
	display = XOpenDisplay (dpy_name);
	if (!display) {
		printf ("Error opening display.\n");
		return 3;
	}
	fk = fakekey_init (display);
	
	printf ("Pressing %s\n", argv[1]);

	/* Special cases */
	if (strcasecmp (argv[1], "left") == 0) {
		fakekey_press_keysym (fk, XK_Left, 0);
	} else if (strcasecmp (argv[1], "right") == 0) {
		fakekey_press_keysym (fk, XK_Right, 0);
	} else if (strcasecmp (argv[1], "up") == 0) {
		fakekey_press_keysym (fk, XK_Up, 0);
	} else if (strcasecmp (argv[1], "down") == 0) {
		fakekey_press_keysym (fk, XK_Down, 0);
	} else if (strcasecmp (argv[1], "return") == 0) {
		fakekey_press_keysym (fk, XK_Return, 0);
	} else if (strcasecmp (argv[1], "esc") == 0) {
		fakekey_press_keysym (fk, XK_Escape, 0);
	} else if (strcasecmp (argv[1], "quit") == 0) {
		fakekey_press_keysym (fk, XK_F4, FAKEKEYMOD_ALT);
	} else if (strcasecmp (argv[1], "switch") == 0) {
		fakekey_press_keysym (fk, XK_Tab, FAKEKEYMOD_ALT);
	} else if (strcasecmp (argv[1], "menu") == 0) {
		fakekey_press_keysym (fk, XK_F1, FAKEKEYMOD_ALT);
	} else {
		fakekey_press (fk, argv[1], 1, 0);
	}
	fakekey_release (fk);
	XCloseDisplay (display);
	
	return 0;
}

