1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
// edit source code from: https://github.com/gvalkov/xrectsel
//#include <stdio.h>
#include <X11/Xlib.h>
#include <unistd.h>
//int main (int argc, char *argv[])
int main (void)
{
int int_tmp;
unsigned int uint_tmp;
Window window_tmp;
int rootx=0, rooty=0;
Display * disp = XOpenDisplay(NULL);
Screen * scr = ScreenOfDisplay(disp, DefaultScreen(disp));
Window root = RootWindow(disp, XScreenNumberOfScreen(scr));
XGCValues gcval;
gcval.foreground = XWhitePixel(disp, 0);
gcval.function = GXxor;
gcval.background = XBlackPixel(disp, 0);
gcval.plane_mask = gcval.background ^ gcval.foreground;
gcval.subwindow_mode = IncludeInferiors;
GC gc = XCreateGC(disp, root,
GCFunction|GCForeground|GCBackground|GCSubwindowMode,
&gcval);
XQueryPointer(disp, root, &window_tmp, &window_tmp, &rootx, &rooty, &int_tmp, &int_tmp, &uint_tmp);
//printf("%d\n", DisplayWidth(disp, DefaultScreen(disp)));
//printf("%d\n\n", DisplayHeight(disp, DefaultScreen(disp)));
// XGetGeometry() maybe better, instead of DisplayHeight() and DisplayWidth()
XDrawLine(disp, root, gc, rootx, 0, rootx, DisplayHeight(disp, DefaultScreen(disp)));
XDrawLine(disp, root, gc, 0, rooty, DisplayWidth(disp, DefaultScreen(disp)), rooty);
//XDrawRectangle(disp, root, gc, 1000, 1000, 1000, 1000);
XFlush(disp);
XUngrabPointer(disp, CurrentTime);
XUngrabKeyboard(disp, CurrentTime);
//XFreeCursor(disp, cursor);
XFreeGC(disp, gc);
XSync(disp, True);
XCloseDisplay(disp);
return 0;
}
|