diff --git a/src/userland/hid/main.c b/src/userland/hid/main.c index 2dd2f52..0e4458c 100644 --- a/src/userland/hid/main.c +++ b/src/userland/hid/main.c @@ -33,6 +33,7 @@ reader->usage = usage; reader->discard = (data >> 0) & 1; reader->array = !((data >> 1) & 1); + reader->relative = data >> 2 & 1; // signed integers are represented as 2s-complement reader->isSigned = state->logicalMin > state->logicalMax; reader->min = state->logicalMin; @@ -189,7 +190,7 @@ processedData = (int32_t)(int16_t) data; } } - if (reader->previousState == processedData) { + if (reader->previousState == processedData && !reader->relative) { goto end; } if (reader->array) {