Just to clarify something - you seem to be suggesting that multiple speeds can be customised and used at the same time. Is this the case, or would it be more that the one speed could be customised, and it would always operate at the currently-specified speed?
Yes, my suggestion is to allow multiple custom speeds.
Fast-forward and slow-mo (as well as of course regular speed, which is "default", and pause, which is a special case that isn't handled solely by adjusting frame rate) already exist, so at the very least, I'd need to preserve "one fast speed + one slow speed". It isn't much more work to allow arbitrary, any-number-of-speeds, compared to allowing a fixed but more-than-one number of custom speeds, so it would make little sense to restrict it to just one.
It would likely work on a basis, similar to frameskips, of that the speed is configured as an attribute of a hotkey. If you press a hotkey with a different speed to current (for example, you're currently in 3x speed and you press a 5x speed key), gameplay would switch to the speed of the key you've pressed. If you press a hotkey with the same speed as current (for example, you're currently in 5x speed and you press a 5x speed key), you would go back to normal speed.
I don't see much point in taking this second part as far as "if you press the same key". If you have both F and G configured to "5x speed", and you were to press F and then G, it would go into 5x mode when you press F and back to normal when you press G - because they're the same speed, so it would detect (when you press G) "the user has pressed a alt-speed key that matches the current speed, so return to 1x speed".
I don't see any reason not to allow specifically creating a "1x speed" key. This would essentially just be a "cancel any alternate speed" key in practice, of course, but again - it's a case of "more work to prevent than to allow".
The one question is what to do with the panel fast forward button. Currently with only a single fast-forward speed, it only needs to match that. Likewise, if there were multiple pre-set speeds, one of these could be arbitrarily chosen. However, with customizable ones, there are some questions that arise:
1) Should it be possible to configure the speed of the button at all, or should it remain at the original, fixed speed?
2) If so, should it be independently configured, or tied to the hotkey configuration?
3) If it's tied to the hotkeys, should it use the fastest? Slowest? Median? Average?
4) And what should it do in the event the user has
no fast-forward hotkeys configured? Or if all the user's alt-speed keys are slow-mo speeds?
5) Let's suppose the fast-forward button is, one way or another, supposed to give a 3x speed (just for the sake of example). The player has configured a hotkey that gives 5x speed. The player presses this hotkey, activating 5x speed mode. If the user clicks the Fast Forward key now, should gameplay switch to 3x speed (as would happen upon pressing a 3x speed hotkey at this point) or return to 1x speed (as it should be expected the click just toggles the mode off)?