Mappable Buttons all models

I want to be able to program all controls(buttons) to do any and all supported functions on the device.  A long hold on one of them would be used to reset to factory setting.  A short list of button themes should be included.  For instance if I’m listening to an audiobook or lecture, I want a different control set than when listening to music.