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

Or print it all on one line, removing 12 characters:

    foreach(split /\s*/,<>){$x{$_}++}
    foreach(sort{$x{$b}<=>$x{$a}}keys %x){$o[$n++%8].=$_}
    print join",",values@o,"\n";