PHP Velho Oeste 2024

ncurses_getmouse

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

ncurses_getmouseReads mouse event

설명

bool ncurses_getmouse ( array &$mevent )
Warning

이 함수는 실험적입니다. 이 함수의 작동, 함수의 이름, 그리고 관련된 모든 문서는 이후의 PHP 릴리즈에서 예고 없이 변경할 수 있습니다. 이 함수의 사용에 관한 것은 사용자 책임입니다.

ncurses_getmouse() reads mouse event out of queue.

인수

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

반환값

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

예제

Example #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:
    
/* .... */
}
?>

참고

add a note add a note

User Contributed Notes 1 note

up
2
m dot quinton at gmail dot com
18 years ago
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);

?>
To Top