I want to be able to redefine what the hardware buttons on my Motorola Droid do. By buttons I mean the 4 capacitive buttons on the bottom: Back, Menu, Home & Search and the Camera button and Volume buttons on the side. I have seen several apps that allow you to change what the Camera and Search buttons do but I want the ability to redefine them all. Can this be done? If so, how?
Button Shortcut will let you assign shortcuts to the camera and search buttons.
The home button could be replaced with another home launcher-like app that handles that intent.
However, I do not believe you will be able to re-map the menu and and back buttons without root access to the phone's system due to security reasons. Although within an application you should be able to programatically take control over these buttons with listener events (but it is strongly discouraged to override the default behavior of the back button without valid reasons).
I own a Droid (or rather, its brother Milestone, the GSM version of Droid) and I found its hardware keys not so durable: my power/lock key stopped functioning after a year and the volume down button is failing too. So you might wanna give it a second thought if the durability is ever a concern (I cannot lock/unlock my phone with a press of button anymore). In fact there are quite some apps out there trying to do the reverse, i.e. mapping hardware keys to on-screen touch buttons.