I complied Steve's kernel (very easy!) with some debugging prints and determined that the device driver for the touchscreen flashes firmware to a chip when it loads. Unfortunately it looks like it gets the firmware from somewhere in the bootloader area (it may be proprietary to Samsung). The data in this area is now wrong on my device for the U.S. kernel so the driver immediately fails and doesn't load. That's why my touchscreen on my device does nothing with U.S. kernels.
But it does work upside down with Euro kernels so if I have nothing better to do, I'll try to get the device driver in a Euro kernel to work right side up. I can't wreck the device any worse so I might as well learn some Android kernel development.
I don't understand the buttons yet. The buttons are the only define change between Steve's US and Euro kernels so it seems like they should work with a U.S. kernel assuming they're TOTALLY different from the touchscreen. It's possible that it doesn't bother activating the buttons when the U.S. driver fails to flash the touchscreen chip.