RainCheck makes it easy to use your phone in the rain and with wet hands. Instead of just looking at the touch points that the phone's touchscreen controller generates, RainCheck looks at the phone's raw capacitance values. These values can be requested from touch screen controller with a series of I2C commands. These commands have to be issued from the kernel, so RainCheck only works on phones with a modified kernel.
The process of building a custom kernel onto your phone is explained in the Building the Kernel section. The Getting the Capacitance Values section explains how the touch screen controller works, how to get the raw capacitance matrix from it, and how to read the touch matrix values from userspace. The Tools section has in-depth descriptions of all the code that I have written and how it is used.