Why generate synthetic events in newer SDL2?

I just looked at newer SDL2, was using 2.0.8 before. And to my horror, touch gesture recognition didn’t work correctly any more in any of my projects.

I found this in the SDL2 source code in src/events/SDL_touch.c
#define SYNTHESIZE_TOUCH_TO_MOUSE 1

What on earth? By changing this to 0, everything works again.

Why would you suddenly start generating mouse events on touch? So updating my SDL2 lib suddenly breaks everything.

I can sort my events myself. I don’t need SDL to generate ghost events for me.

In addition, the above line causes double events, it doesn’t just translate touch to mouse. It makes an additional mouse event whenever there is a touch event.

This makes me wonder what the design goal behind SDL really is. If you start putting such stuff in, then I can never be sure I know what the user is actually doing anymore.

If I use SDL, I expect to see actual events, not some ghost events generated from other events.

And to top it all: Why would this be forced at COMPILE TIME, so it can never be changed later?

EDIT: I just found I can apparently disable this behavior using SDL_SetHint(SDL_HINT_TOUCH_MOUSE_EVENTS, “0”),
but it shouldn’t be enabled by default IMO.