On Fri, May 4, 2012 at 10:48 AM, Andres Gonzalez <andres@xxxxxxxxxxxxxxx>wrote: > I am trying to code a CLI PHP script that will give me the keycodes for > these (and other) keyboard keys. I want to basically block until the user > presses a single key, then I want to process that event without the user > having to press the Enter key after pressing a single key. > > I have tried several approaches but with no success. Using fopen() to > open stdin, and fgetc() will give me the regular keys but requires the user > to press the Enter key after the initial key is pressed. When I press the > the PgDw key for example, those routines return a single character string > even though the stty echos a 5 character string (using PgDw echos "^[[6~") > > I have tried other approaches using bash read commands to get a single > character but will little success also. > > Anybody here know how to do this? > > Thanks, > > -Andres > > | > | > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > I think something like this would work $running = true; $fp = fopen("php://stdin","r"); //open direct input stream for reading stream_set_blocking($fp,0); //set non-blocking mode while ($running) { while (($buf = fgets($fp, 4096)) != false) { $buffer .= $buf; } if ($buffer != "") { switch ($buffer) { case " ": { //exit on space key exit; } default: { //space not pressed } } $buffer = ""; //empty buffer }