fix for X braindeadness
[grml-scripts.git] / usr_sbin / grml-quickconfig
index a7c2a9b..e3293f7 100755 (executable)
@@ -10,7 +10,6 @@
 # menu with quick config options
 
 use Term::ReadKey;
-use Time::HiRes;
 
 # enable alternate charset support (needed for screen)
 print "\e(B\e)0";
@@ -100,10 +99,9 @@ while(1) {
 EOF
   print "Press a key: ".$M;
   ReadMode 4; # Turn off controls keys
-  while (not defined ($x = ReadKey(-1))) {
-      # No key yet
-      Time::HiRes::sleep(0.5); 
-  }
+  $flags = fcntl(STDIN, F_GETFL, 0) or die "Can't get flags for STDIN: $!\n";
+  $flags = fcntl(STDIN, F_SETFL, $flags & ~O_NONBLOCK) or die "Can't set flags for STDIN: $!\n";
+  while (not defined ($x = ReadKey(0))) {}
   ReadMode 0; # Reset tty mode before exiting
 
   print $N.$/.$/;
@@ -126,10 +124,9 @@ EOF
 EOF
       print "Press a key: ".$M;
       ReadMode 4; # Turn off controls keys
-      while (not defined ($x = ReadKey(-1))) {
-    # No key yet
-        Time::HiRes::sleep(0.5); 
-      }
+      $flags = fcntl(STDIN, F_GETFL, 0) or die "Can't get flags for STDIN: $!\n";
+      $flags = fcntl(STDIN, F_SETFL, $flags & ~O_NONBLOCK) or die "Can't set flags for STDIN: $!\n";
+      while (not defined ($x = ReadKey(0))) {}
       ReadMode 0; # Reset tty mode before exiting
 
       print $N.$/.$/;