PHP Doku:: Reads mouse event - function.ncurses-getmouse.html

Verlauf / Chronik / History: (1) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzEingabezeilenspezifische ErweiterungenNcurses Terminal Screen ControlNcurses Funktionenncurses_getmouse

Ein Service von Reinhard Neidl - Webprogrammierung.

Ncurses Funktionen

<<ncurses_getmaxyx

ncurses_getyx>>

ncurses_getmouse

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_getmouseReads mouse event

Beschreibung

bool ncurses_getmouse ( array &$mevent )
Warnung

Diese Funktion ist EXPERIMENTELL. Das Verhalten, der Funktionsname und alles Andere, was hier dokumentiert ist, kann sich in zukünftigen PHP-Versionen ohne Ankündigung ändern. Seien Sie gewarnt und verwenden Sie diese Funktion auf eigenes Risiko.

ncurses_getmouse() reads mouse event out of queue.

Parameter-Liste

mevent

Event options will be delivered in this parameter which has to be an array, passed by reference (see example below).

On success an associative array with following keys will be delivered:

  • "id" : Id to distinguish multiple devices

  • "x" : screen relative x-position in character cells

  • "y" : screen relative y-position in character cells

  • "z" : currently not supported

  • "mmask" : Mouse action

Rückgabewerte

Returns FALSE if a mouse event is actually visible in the given window, otherwise returns TRUE.

Beispiele

Beispiel #1 ncurses_getmouse() example

<?php
switch (ncurses_getch()){
  case 
NCURSES_KEY_MOUSE:
    if (!
ncurses_getmouse($mevent)){
      if (
$mevent["mmask"] & NCURSES_MOUSE_BUTTON1_PRESSED){
        
$mouse_x $mevent["x"]; // Save mouse position
        
$mouse_y $mevent["y"];
      }
    }
  break;

  default:
    
/* .... */
}
?>

Siehe auch


Ein BenutzerBeitrag:
- Beiträge aktualisieren...
m dot quinton at gmail dot com
26.09.2005 13:05
a working example with mouse, 3 windows  (need to be completed, but it works) ...

<?php

error_reporting
(E_ALL);

function
win($w, $h, $x, $y, $txt){
   
// now lets create a small window
   
$win = ncurses_newwin($w, $h, $x, $y);
   
// border our small window.
   
ncurses_wborder($win,0,0, 0,0, 0,0, 0,0);
   
# ncurses_wrefresh($win);// paint both windows
   
ncurses_refresh();// paint both windows

    // move into the small window and write a string
   
ncurses_mvwaddstr($win, 0, 1, " $txt ");
   
ncurses_mvwaddstr($win, 1, 1, "($w, $h, $x, $y)");

   
// show our handiwork and refresh our small window
   
ncurses_wrefresh($win);

    return
$win;
}

// Initialie ncurses
$ncurse = ncurses_init();
// A full screen window

$win0 = win(0, 0, 0, 0, 'win0');
$win1 = win(10, 30, 7, 25, 'win1');
$win2 = win(10, 30, 20, 25, 'win2');
$info = win(15, 20, 2, 2, 'info');

// Draw everything so far
// ncurses_refresh();

$newmask = NCURSES_BUTTON1_CLICKED + NCURSES_BUTTON1_RELEASED;
# $newmask = NCURSES_ALL_MOUSE_EVENTS;

$mask = ncurses_mousemask($newmask, &$oldmask);
$events = array();

while(
1){

   
ncurses_wmove($info, 1,1);
   
$ch = ncurses_getch();

   
ncurses_wclear($info);
   
ncurses_refresh();// paint both windows
   
ncurses_wborder($info,0,0, 0,0, 0,0, 0,0);
   
ncurses_refresh();// paint both windows
   
ncurses_mvwaddstr($win, 0, 1, " info ");
   
ncurses_refresh();// paint both windows

   
switch($ch){

    case
NCURSES_KEY_MOUSE:

        if(
ncurses_getmouse($mevent)){
           
$events[] = $mevent;

           
ncurses_mvwaddstr($info, 2, 1, " mouse event   ");
           
ncurses_mvwaddstr($info, 3, 1, " ({$mevent['x']}/{$mevent['y']}) ");
           
ncurses_mvwaddstr($info, 4, 1, " ({$mevent['mmask']}) ");

           
ncurses_wrefresh($info);
        }
        break;

    case
chr('q'):
        break
2;

    default:

        if(
$ch > 0x40)
           
$txt = chr($ch) . " $ch ";
        else
           
$txt = '.' . " $ch";

       
ncurses_mvwaddstr($info, 1, 1, " $txt   ");
       
ncurses_wrefresh($info);

    }

    if(
chr($ch) == 'q')
        break;
}

ncurses_end();// clean up our screen

print_r($events);

?>



PHP Powered Diese Seite bei php.net
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)