165 lines
3 KiB
C
165 lines
3 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
|
|
#include "read_events.h"
|
|
#include "read_file.h"
|
|
|
|
/*
|
|
#include <X11/Xlib.h>
|
|
|
|
#include <xdo.h>
|
|
|
|
#include <fcntl.h>
|
|
|
|
*/
|
|
|
|
|
|
/*
|
|
void write_mouse_event(mouse_event *event, FILE *file)
|
|
{
|
|
fwrite(event, sizeof(mouse_event), 1, file);
|
|
fflush(file);
|
|
}
|
|
*/
|
|
|
|
/*
|
|
void listen() {
|
|
FILE *ptr = fopen("t", "a");
|
|
if (ptr == NULL) return -1;
|
|
|
|
mouse_event *my_event = (mouse_event *) malloc(sizeof(mouse_event));
|
|
|
|
Display *display;
|
|
Window root_window;
|
|
XEvent event;
|
|
display = XOpenDisplay(0);
|
|
root_window = DefaultRootWindow(display);
|
|
int fd, bytes;
|
|
unsigned char data[3];
|
|
const char *pDevice = "/dev/input/mice";
|
|
|
|
// Open Mouse
|
|
fd = open(pDevice, O_RDWR);
|
|
if(fd == -1)
|
|
{
|
|
printf("ERROR Opening %s\n", pDevice);
|
|
return -1;
|
|
}
|
|
|
|
int left = 0;
|
|
int right = 0;
|
|
int middle = 0;
|
|
signed char x, y;
|
|
while(!left || !right)
|
|
{
|
|
// Read Mouse
|
|
bytes = read(fd, data, sizeof(data));
|
|
|
|
if(bytes > 0)
|
|
{
|
|
left = data[0] & 0x1;
|
|
right = data[0] & 0x2;
|
|
middle = data[0] & 0x4;
|
|
|
|
XQueryPointer(
|
|
display,
|
|
root_window,
|
|
&event.xbutton.root,
|
|
&event.xbutton.subwindow,
|
|
&event.xbutton.x_root,
|
|
&event.xbutton.y_root,
|
|
&event.xbutton.x,
|
|
&event.xbutton.y,
|
|
&event.xbutton.state);
|
|
|
|
if ((left || right) && !(left && right)) {
|
|
my_event->infos &= 0x00; // rese;t
|
|
my_event->infos = 0x80 | (0x01 * left) | (0x02 * right) | (0x03 * middle);
|
|
|
|
my_event->x = event.xmotion.x;
|
|
my_event->y = event.xmotion.y;
|
|
|
|
printf("%d - %d\n", my_event->x, my_event->y);
|
|
|
|
|
|
|
|
write_mouse_event(my_event, ptr);
|
|
|
|
}
|
|
|
|
//printf("====== %d\n", event.xbutton.button);
|
|
|
|
printf("x=%d, y=%d, left=%d, middle=%d, right=%d\n", event.xmotion.x, event.xmotion.y, left, middle, right);
|
|
|
|
}
|
|
}
|
|
|
|
// flush the middle button
|
|
bytes = read(fd, data, sizeof(data));
|
|
|
|
fclose(ptr);
|
|
return 0;
|
|
// TODO on ecoute la souris
|
|
// TODO on repete ce qu'on a entre
|
|
}
|
|
*/
|
|
|
|
/*
|
|
void readfile() {
|
|
FILE *ptr = fopen("t", "r");
|
|
xdo_t *x_t = xdo_new(NULL);
|
|
if (ptr == NULL) return -1;
|
|
mouse_event *my_event = (mouse_event *) malloc(sizeof(mouse_event));
|
|
|
|
int left, right, x, y;
|
|
|
|
while (!feof(ptr))
|
|
{
|
|
printf("Souris \n");
|
|
fread(my_event, sizeof(mouse_event), 1, ptr);
|
|
left = my_event->infos & 0x01;
|
|
right = my_event->infos & 0x02;
|
|
|
|
x = my_event->x;
|
|
y = my_event->y;
|
|
|
|
printf("%d - %d - %d\n", my_event->infos, x, y);
|
|
|
|
|
|
xdo_move_mouse(x_t, x, y, 0);
|
|
sleep(1);
|
|
|
|
if (left) {
|
|
xdo_click_window(x_t, CURRENTWINDOW, 1);
|
|
}
|
|
|
|
if (right) {
|
|
xdo_click_window(x_t, CURRENTWINDOW, 3);
|
|
}
|
|
sleep(5);
|
|
|
|
}
|
|
|
|
xdo_free(x_t);
|
|
}
|
|
*/
|
|
|
|
int main()
|
|
{
|
|
FILE *file = fopen("t", "w+");
|
|
if (file == NULL) return -1;
|
|
|
|
int t = listen(file);
|
|
if (t) return t;
|
|
|
|
printf("Fin\n");
|
|
rewind(file);
|
|
printf("On commence\n");
|
|
sleep(5);
|
|
readfile(file);
|
|
|
|
fclose(file);
|
|
return 0;
|
|
}
|