You're on the right track - at least with Marlin firmware (which I suspect would be a good choice for a Prusa i3) the only way to really customise the menu is to edit the firmware, and compile+upload with Arduino IDE. The LCD code is designed to have a more or less fixed structure, but items may appear/disappear depending on what features you enable or disable.
The difficulty will depend on what you mean by 'customise'. I suspect changing the order of the menu items, or removing unwanted items, would be a fairly easy exercise if you have some familiarity with C programming / Arduino. The way it's been done has quite a few helper macros and abstractions to make it easy enough to slip simple features in and out of menus, and change their order. A bit of experimentation may be required of course!
Adding new features may be a bit more of a stretch, depending on the feature...
Here's where the LCD menus are implemented in Marlin. If you can read this and it makes any sense, you might be in with a chance to achieve what you're aiming for.
https://github.com/MarlinFirmware/Marli … d.cpp#L334
SD3. Mk2b + glass, heated enclosure, GT2 belts, direct drive y shaft, linear bearings, bowden-feed E3D v5 w/ 0.9° stepper
Smoothieboard via Octoprint on RPi