- print "Press a key: ".$M;
- $x = getc;
- print $N.$/.$/;
- if (defined($windowmanagers{$x})) {
- $command = "su - grml -c 'grml-x ".$windowmanagers{$x}."'";
- } else {
- print "Unknown key.\n";
- }
-} else {
- print "Unknown key.\n";
-}
-}
+ print "Press a key: ".$M;
+ ReadMode 4; # Turn off controls keys
+ $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.$/.$/;
+ if (defined($windowmanagers{$x})) {
+ $command = "su - grml -c 'grml-x ".$windowmanagers{$x}."'";
+ } else {
+ print "Unknown key, not bound to a windowmanager.\n";
+ print "Returning to main menu.\n";
+ }
+ } else {
+ print "Unknown key.\n";
+ }
+ }