Hi,

Despite getting a bit long, my answer to this week's quiz is still mostly a 
monolithic file:
http://www.dave.burt.id.au/ruby/phonepad/phonepad.rb

But it needs this for its slick (and default) LetterWise tap method 
(unzipped):
http://www.dave.burt.id.au/ruby/phonepad/predict3.rb.zip

So, to describe my solution. I added 2 interfaces. I posted the raw 
terminal-based one earlier, which is based on JEGIII's (hopefully) 
cross-platform code.
I have also added a TK interface, which plugs neatly in to Hans' platform.

And I added 3 input translators. The first is good old MultiTap, which is 
standard on old dodgy phones that don't have T9 dictionary entry. The second 
is one I found in a paper from MIT no less that boasts even slower text 
entry than MultiTap -- I think that's quite an effort. The third is simply 
an implementation of the LetterWise method from the paper linked to by the 
quiz itself.

I generated letter frequency data, which is a big part of the LetterWise 
method, from a smidgen over 65MB of plain-text modern novels and movie 
scripts, using the following two scripts (the latter has 2 versions):
http://www.dave.burt.id.au/ruby/phonepad/1_wordfreq.zip
http://www.dave.burt.id.au/ruby/phonepad/2_predict3_rb.zip
http://www.dave.burt.id.au/ruby/phonepad/2_predict3_yaml.zip

The output of the first (unique words and respective frequencies thereof) 
could also be used to create a dictionary for the T9 entry method.

Cheers,
Dave