index aae8c72..c7dfc51 100644 
--- a/gdl/src/basic_fun.cpp 
+++ b/gdl/src/basic_fun.cpp 
@@ -21,6 +21,9 @@ 
 
#include "includefirst.hpp" 
 
+#include <termios.h> 
+#include <unistd.h> 
+ 
#include <string> 
#include <fstream> 
//#include <memory> 
@@ -4457,19 +4460,24 @@ namespace lib { 
} 
} 
 
- if( doWait) 
- { 
-  
- char c = cin.get(); 
- DStringGDL* res = new DStringGDL( DString( i2s( c))); 
- return res; 
- } 
- else 
- { 
- char c = cin.get(); 
- DStringGDL* res = new DStringGDL( DString( i2s( c))); 
- return res; 
- } 
+ // TODO Implement proper SCALAR parameter handling (doWait variable?). 
+ 
+ struct termios orig, get; 
+ (void)tcgetattr(fileno(stdin), &orig); 
+ get = orig; 
+ 
+ // Disable terminal echoing and set it to non-canonical mode. 
+ get.c_lflag &= ~(ECHO|ICANON); 
+ 
+ (void)tcsetattr(fileno(stdin), TCSANOW, &get); 
+ 
+ char c = cin.get(); 
+ 
+ // Restore original terminal settings. 
+ (void)tcsetattr(fileno(stdin), TCSANOW, &orig); 
+ 
+ DStringGDL* res = new DStringGDL( DString( i2s( c))); 
+ return res; 
} 
 
BaseGDL* temporary( EnvT* e) 

