For a description on the new libinput API see here: https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/139
For a description of the new protocol event see here: https://gitlab.freedesktop.org/wayland/wayland/-/merge_requests/72/
The new events use 120 as baseline to represent a logical scroll unit (one wheel detent). Windows has been using that value since Vista now, it's copied from there.
The libinput events should be considered separate event streams, i.e for wheel events we now get *both an AXIS and an AXIS_WHEEL event. This is for technical reasons, the new and old events cannot always be lined up with the data the hw provides.
In mutter we rely on libinput to always give us AXIS_WHEEL events even on kernels where it's not supported (pre 5.0). All we have to do then is treat the new AXIS_WHEEL events as smooth scroll events and done.
Marked as WIP because we need to line up all pieces before we can merge and, mea culpa, I've so far only tested this patch on top of 3.36.1. I'm pretty sure there are bits missing here as well though in the testing so far everything seems to work. cc @carlosg