Arrgh. I just did something like a hundred SDL_PAD edits. But you're right. It seems like a generic SDL_PAD is a only good fit about 80% of the time. Like when it's left, right, up, down, select, quit, and maybe menu. I'll switch over to ZIPIT_Z2_PAD once I get it all to compile.
Meanwhile I found 2 files that should be fixed to separate HAVE_BUTTON_DATA from HAVE_TOUCHSCREEN.
In button.c lastdata should be declared when HAVE_BUTTON_DATA, not HAVE_TOUCHSCREEN, but it should require both defined when it's compared to data.
And button-sdl.c should be fixed to return *data unchanged when HAVE_BUTTON_DATA but not HAVE_TOUCHSCREEN. Or hey, maybe it could return keyboard data. I believe I saw something about a really old patch for that somewhere in the recent IRC logs.