Re: howto get pgUp, pgDn, delete, home and end keycodes in CLI PHP script

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





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
   }

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux