@Pygoscelis papua: Nein. Die Frage ist was Du tatsächlich lösen möchtest. Wenn man Strg erkennen möchte, dann ist das etwas für das normale Textmodusanwendungen mit ihren drei Standarddateien für ein- und ausgabe nicht direkt gedacht sind, das ist letztendlich ein ”GUI”-Programm, egal ob man dafür nun tatsächlich grafische Fenster oder eine Fensterbibliothek für das Terminal verwendet. Dafür gibt es `curses` in der Standardbibliothek oder zum Beispiel `urwid` als externe Bibliothek. Ansonsten müsste man selber direkt mit dem Terminal kommunizieren und hoffen dass das dann am Ende auch mit jedem Terminal funkioniert was man da programmiert hat. Dafür sind Bibliotheken wie `curses` ja da, dass man von den verschiedenen Terminals abstrahiert.
Das ``read -n1`` ist übrigens auch nicht unbedingt portabel, das kann nicht jede Shell, insbesondere ist das wohl nicht POSIX: