Skip to content

Instantly share code, notes, and snippets.

@lostdj
Created March 4, 2018 13:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lostdj/77f433480bde32cbbf5fa40785610d63 to your computer and use it in GitHub Desktop.
Save lostdj/77f433480bde32cbbf5fa40785610d63 to your computer and use it in GitHub Desktop.
define X
load-library "libX11.so"
load-library "libXtst.so"
import-c "import_x11.c" "
//
#include <stdint.h>
// Sigh...
int usleep(uint32_t usec);
//
#ifndef _Xconst
#define _Xconst const
#endif /* _Xconst */
#define Bool int
//
typedef struct {} Display;
typedef uint32_t XID;
typedef XID KeySym;
typedef unsigned char KeyCode;
//
extern Display *XOpenDisplay(
_Xconst char* /* display_name */
);
extern int XFlush(
Display* /* display */
);
extern KeyCode XKeysymToKeycode(
Display* /* display */,
KeySym /* keysym */
);
//
extern int XTestFakeKeyEvent(
Display* /* dpy */,
unsigned int /* keycode */,
Bool /* is_press */,
unsigned long /* delay */
);
//
#define XK_Return 0xff0d /* Return, enter */
#define XK_Up 0xff52 /* Move up, up arrow */
#define XK_Down 0xff54 /* Move down, down arrow */
"
list
"-Wno-macro-redefined"
let display =
X.XOpenDisplay null
#print display
#while true
X.XTestFakeKeyEvent
display
X.XKeysymToKeycode
display
X.XK_Up
1
0
X.XFlush display
X.usleep 500000
X.XTestFakeKeyEvent
display
X.XKeysymToKeycode
display
X.XK_Down
1
0
X.XFlush display
X.usleep 500000
do
X.usleep 2000000
while true
X.XTestFakeKeyEvent
display
X.XKeysymToKeycode
display
X.XK_Return
1
0
X.XTestFakeKeyEvent
display
X.XKeysymToKeycode
display
X.XK_Return
0
0
X.XFlush display
X.usleep 500000
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment