Well if you just want the most popular characters assigned to the bins 2-9, Perl can do that in 127 chars...

    foreach(split /\s*/,<>){$x{$_}++}
    foreach(sort{$x{$b}<=>$x{$a}}keys %x){$o{$n++%8}.=$_}
    for(0..7){printf "%d: %s\n",$_+2,$o{$_}}

giving something like:

    echo "jackdawslovemybigsphinxofquartz" | perl ./keypad.pl
    2: ajeb
    3: iynz
    4: suv
    5: ohm
    6: wkl
    7: rgp
    8: xfc
    9: dtq

Perhaps someone can neaten that big block of hash-sorting code into something shorter?