diff --git a/src/gestures.c b/src/gestures.c index 9ed2273..c728f10 100644 --- a/src/gestures.c +++ b/src/gestures.c @@ -37,21 +37,20 @@ void extract_mouse(struct Gestures *gs, struct MTouch* mt) { static int tracking_id = -1; - if (mt->prev_state.nfinger == 0 && mt->state.nfinger == 1) { - // pressed exactly one finger + if (tracking_id == -1) { + // looking for lmb down - // lmb pressed - tracking_id = mt->state.finger[0].tracking_id; - gs->posx = mt->state.finger[0].position_x; - gs->posy = mt->state.finger[0].position_y; - SETBIT(gs->btmask, MT_BUTTON_LEFT); - SETBIT(gs->btdata, MT_BUTTON_LEFT); - mt->mem.btdata = BITMASK(MT_BUTTON_LEFT); + if (mt->state.nfinger == 1) { + // lmb pressed - return; - } - - if (GETBIT(mt->mem.btdata, MT_BUTTON_LEFT)) { + tracking_id = mt->state.finger[0].tracking_id; + gs->posx = mt->state.finger[0].position_x; + gs->posy = mt->state.finger[0].position_y; + SETBIT(gs->btmask, MT_BUTTON_LEFT); + SETBIT(gs->btdata, MT_BUTTON_LEFT); + mt->mem.btdata = BITMASK(MT_BUTTON_LEFT); + } + } else { // lmb is pressed const struct FingerState *finger_state = find_finger(&mt->state, tracking_id); diff --git a/src/mtouch.c b/src/mtouch.c index a6b96b8..388d68e 100644 --- a/src/mtouch.c +++ b/src/mtouch.c @@ -43,6 +43,10 @@ int open_mtouch(struct MTouch *mt, int fd) init_mtstate(&mt->prev_state); init_mtstate(&mt->state); init_memory(&mt->mem); + + mtdev_set_abs_fuzz(&mt->dev, ABS_MT_POSITION_X, 0); + mtdev_set_abs_fuzz(&mt->dev, ABS_MT_POSITION_Y, 0); + if (use_grab) { SYSCALL(ret = ioctl(fd, EVIOCGRAB, 1)); if (ret) @@ -74,9 +78,9 @@ int read_packet(struct MTouch *mt, int fd) if (ret <= 0) return ret; extract_mtstate(&mt->state, &mt->hs, &mt->caps); -#if 0 +//#if 0 output_mtstate(&mt->state); -#endif +//#endif refresh_memory(&mt->mem, &mt->prev_state, &mt->state, &mt->caps); #if 0 output_memory(&mt->mem);