I like this screen keyboard. Works really nice and looks great. As for the code... Nothing to it. It's one of the simpler parts of this app.
No, it doesn't. If you created image, formatted and then restored the image, all the MC contents are exactly the same, at exactly same places... If it indeed works faster for you, then either your measurement is wrong or something weird is going on ;).
I did some simple defragmenter, but it worked well only for 16MB card max (it easily fits into memory and leaves some place for intermediate buffers). Bigger cards required creation of card image on some device and then a lot of reads and writes... It was quite slow even on hdd.
The best defragmentation for MC is to:
1. Launch uLE and make psu backup of all saves on card
2. Format memory card
3. Launch uLE again and restore the psu backups.
... and you have a backup of your saves as a bonus.
And indeed, consecutive reads and writes are muuuch faster. There is a lot of additional time needed if reading at random places... If reading page by page, I can usually achieve ~450-600kB/s (depending on card manufacturer).

