I have a rotary encoder implemented as a USB Keyboard, which sends 'n' press and release for each detent on counter-clockwise, and 'm' for each detent clockwise.
It works flawlessly in Terminal; one quick full spin clockwise gives me 20 'm's.
But in M8 I only get 2 or 3 press/release pairs.
I see this both in DirectEvent() and when binding 'n' or 'm' to a module button then printing.
As a result, the rotary encoder is basically useless.