aboutsummaryrefslogtreecommitdiffstats
path: root/src/hwdata.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/hwdata.c')
-rw-r--r--src/hwdata.c33
1 files changed, 13 insertions, 20 deletions
diff --git a/src/hwdata.c b/src/hwdata.c
index cd93fe0..aa4c271 100644
--- a/src/hwdata.c
+++ b/src/hwdata.c
@@ -15,7 +15,12 @@ bool read_hwdata(struct HWData *hw, const struct input_event* ev)
case EV_SYN:
switch (ev->code) {
case SYN_REPORT:
+ hw->nread = 0;
return 1;
+ case SYN_MT_REPORT:
+ hw->nread++;
+ hw->nfinger = hw->nread;
+ break;
}
break;
case EV_KEY:
@@ -38,44 +43,32 @@ bool read_hwdata(struct HWData *hw, const struct input_event* ev)
else
CLEARBIT(hw->button, MT_BUTTON_RIGHT);
break;
- case BTN_MT_REPORT_PACKET:
- hw->in_packet = ev->value;
- if (ev->value)
- hw->nfinger = 0;
- break;
- case BTN_MT_REPORT_FINGER:
- hw->in_finger = ev->value;
- if (!ev->value && hw->nfinger < DIM_FINGER)
- hw->nfinger++;
- break;
}
break;
case EV_ABS:
- if (!hw->in_packet || !hw->in_finger)
- break;
- if (hw->nfinger == DIM_FINGER)
+ if (hw->nread == DIM_FINGER)
break;
switch (ev->code) {
case ABS_MT_TOUCH_MAJOR:
- hw->finger[hw->nfinger].touch_major = ev->value;
+ hw->finger[hw->nread].touch_major = ev->value;
break;
case ABS_MT_TOUCH_MINOR:
- hw->finger[hw->nfinger].touch_minor = ev->value;
+ hw->finger[hw->nread].touch_minor = ev->value;
break;
case ABS_MT_WIDTH_MAJOR:
- hw->finger[hw->nfinger].width_major = ev->value;
+ hw->finger[hw->nread].width_major = ev->value;
break;
case ABS_MT_WIDTH_MINOR:
- hw->finger[hw->nfinger].width_minor = ev->value;
+ hw->finger[hw->nread].width_minor = ev->value;
break;
case ABS_MT_ORIENTATION:
- hw->finger[hw->nfinger].orientation = ev->value;
+ hw->finger[hw->nread].orientation = ev->value;
break;
case ABS_MT_POSITION_X:
- hw->finger[hw->nfinger].position_x = ev->value;
+ hw->finger[hw->nread].position_x = ev->value;
break;
case ABS_MT_POSITION_Y:
- hw->finger[hw->nfinger].position_y = ev->value;
+ hw->finger[hw->nread].position_y = ev->value;
break;
}
break;