embox
1/**
2* @file
3*
4* @date May 1, 2021
5* @author Anton Bondarev
6*/
7
8#include <stdint.h>
9
10#include <drivers/input/input_dev.h>
11#include <drivers/ps_mouse.h>
12
13int ps_mouse_event_send(struct input_dev *indev, uint8_t data[3]) {
14struct input_event ev;
15
16ev.value = ((data[0] & MSTAT_XSIGN ? 0xff00 : 0) | data[1]) << 16;
17ev.value |= (data[0] & MSTAT_YSIGN ? 0xff00 : 0) | data[2];
18
19ev.type = 0;
20if (data[0] & MSTAT_BUTLEFT) {
21ev.type |= MOUSE_BUTTON_LEFT;
22}
23if (data[0] & MSTAT_BUTRIGHT) {
24ev.type |= MOUSE_BUTTON_RIGHT;
25}
26if (data[0] & MSTAT_BUTMIDDLE) {
27ev.type |= MOUSE_BUTTON_MIDDLE;
28}
29
30input_dev_report_event(indev, &ev);
31
32return 0;
33}
34