Es gibt da meines Erachtens 2 Möglichkeiten, Dein Problem "2 Tasten gleichzeitig drücken" zu lösen:

1) Schick nicht den Tastendruck, sondern Tastenereigniss: "Taste W gedrückt, Taste S gedrückt, Taste W losgelassen, Taste S losgelassen". In einem solchen Fall kannst Du viele Tasten kurz nacheinander drücken, solang Du sie nicht GENAU GLEICHZEITIG drückst, sollte das gehen und der µC kann dann auch solange die Taste nutzen, wie sie gedrückt bleibt, ohne dass ständig Daten fließen (müssen).

2) Schick dauernd den Zustand aller Tasten in bspw. einem Bit-Array. Du schickst also alle 250ms den Zustand aller Tasten in einem einzelnen Byte an den Controler, wobei verschiedene Bits den Zustand darstellen.
Beispiel 1: 0110000 -> Bedeutet UpArrow und RightArrow gedrückt, alle anderen nicht.
Beispiel 2: 1000001 -> Bedeutet LeftArrow und LichtAn gedrückt, alle anderen nicht. So kannst Du auch nach und nach mehrere Tasten drücken oder eben ein paar GLEICHZEITIG, denn er kann ja 0100000 oder 0110000 senden.