** This is a good solution, and it's a sort of standard (used by many games).
** Note: On french keyboards it'd be A,Q,O,P - anyways, the "UP" key is always Row8.Bit3, no matter if it's locally called "Q" (english QWERTY keyboard), or "A" (french AZERTY keyboard).
but because the decoding of the keys is done in software, normally by the OS, the bits in the keyboard matrix are actually the same).
Best would be to support joysticks, plus the above two keyboard mappings. Best to support them all at once (without needing the user select which one to use). In addition, it is also nice if the keys could be redefined but that is not necessary.