I wrote an X windows ouija board for the final project in my programming environments I class. This was about 9 years ago. It had buttons for each letter (and one for space). When the pointer moved over a button, the corresponding letter would print in the text box at the bottom of the window. The pointer would also move itself every few seconds, thanks to the XWarpPointer() call.

I'm pleased to say that the prof had a great sense of humor, and gave it a very good grade despite its singular defect: that it was possible for the pointer to warp itself out of the application window.