I don’t know if you have noticed the problem with the combined key bindings or not
Suppose you have set the F key to change the airplane flap
Now you want to define a combined shift and F key for a function, for example Toggle Gear
Now:
If I want to open my wheel and press the shift and f button, the wheels will open and also the flaps will changed, which is an extra and unwanted action to change the flap.
This problem is because:
We have three KeyEventHandler modes in this situation
Key press and key down and key up
When the player pressed the F key and still did not raise it, a keydown occurred and unfortunately the function of changing the plane’s flap is applied.
That should not be the case.
Should the game logic wait when the user presses the F button (keydown) to see if another key combination will be pressed?
If another combination key is pressed, i.e. Shift is pressed with F, the same function that is defined for it, i.e. the opening of the wheels will only happen.
And if the combination key is not pressed, a key press event has actually happened to the F key and the function of changing the flap of the plane has occurred.
//////
I don’t know how you want to fix it in C++, but I doubt if it will be complicated
You can force the player to use one of these three keys, shift, control, and Alt, for combination keys