well, seen as im not really getting any feedback, Ive implemented this all for the list widget (which includes the tree and menus) the patch is at http://jdgordon.mine.nu:8080/button_changes.patch please someone give it a try and let me know how it goes. The buttons for the iriver's are the same, ipod might be slightly different.
The main thing is have a look at how much nicer the button loops are :) known bug is if you have resume on startup set, for some unknown reason it will sit at te initial loading screen untill you press a button (?) nothing I changed should effect that, so i dunno. Also, I assume text_editor will not function correclty (and any other plugins using the list widget). Just to give you some idea of what it will take for the changes, it took about 1 minute in each button loop. there is still a bit more work which needs to be done (remove any ununsed variables and such silly stuff), but the main thing is to show that this actually work!