Moin,
ein problem könnte ich sehen, wenn der puffer bereits voll ist, bevor du get_line aufrufst. die letzte zelle wird so wie ich es sehe nie gelöscht.
Eine anderer punkt, bist du dir sicher, das der pressed_keys puffer auch wirklich lehr ist? Sich in dem punkt nicht auf den kompiler verlassen, und selber in einer Init funktion auf den start wert setzen.
du schiebst deine eingelesenen zeichen kräftig durch die gegend. ggf währe ein ringpuffer eine alternative.
aufpassen mit der null terminierung. die benötigt im übergebenen Puffer auch platz. nicht das dadurch andere Daten überschrieben werden.
gruss