ncurses_getmouse
(PHP 4 >= 4.2.0, PHP 5, PECL ncurses:1.0.0)
ncurses_getmouse — Reads mouse event
Описание
Эта функция является ЭКСПЕРИМЕНТАЛЬНОЙ. Поведение этой функции, ее имя и относящаяся к ней документация могут измениться в последующих версиях 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.
Примеры
Пример #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:
/* .... */
}
?>
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Расширения для работы с командной строкой
- Ncurses Terminal Screen Control
- ncurses_addch
- ncurses_addchnstr
- ncurses_addchstr
- ncurses_addnstr
- ncurses_addstr
- ncurses_assume_default_colors
- ncurses_attroff
- ncurses_attron
- ncurses_attrset
- ncurses_baudrate
- ncurses_beep
- ncurses_bkgd
- ncurses_bkgdset
- ncurses_border
- ncurses_bottom_panel
- ncurses_can_change_color
- ncurses_cbreak
- ncurses_clear
- ncurses_clrtobot
- ncurses_clrtoeol
- ncurses_color_content
- ncurses_color_set
- ncurses_curs_set
- ncurses_def_prog_mode
- ncurses_def_shell_mode
- ncurses_define_key
- ncurses_del_panel
- ncurses_delay_output
- ncurses_delch
- ncurses_deleteln
- ncurses_delwin
- ncurses_doupdate
- ncurses_echo
- ncurses_echochar
- ncurses_end
- ncurses_erase
- ncurses_erasechar
- ncurses_filter
- ncurses_flash
- ncurses_flushinp
- ncurses_getch
- ncurses_getmaxyx
- ncurses_getmouse
- ncurses_getyx
- ncurses_halfdelay
- ncurses_has_colors
- ncurses_has_ic
- ncurses_has_il
- ncurses_has_key
- ncurses_hide_panel
- ncurses_hline
- ncurses_inch
- ncurses_init_color
- ncurses_init_pair
- ncurses_init
- ncurses_insch
- ncurses_insdelln
- ncurses_insertln
- ncurses_insstr
- ncurses_instr
- ncurses_isendwin
- ncurses_keyok
- ncurses_keypad
- ncurses_killchar
- ncurses_longname
- ncurses_meta
- ncurses_mouse_trafo
- ncurses_mouseinterval
- ncurses_mousemask
- ncurses_move_panel
- ncurses_move
- ncurses_mvaddch
- ncurses_mvaddchnstr
- ncurses_mvaddchstr
- ncurses_mvaddnstr
- ncurses_mvaddstr
- ncurses_mvcur
- ncurses_mvdelch
- ncurses_mvgetch
- ncurses_mvhline
- ncurses_mvinch
- ncurses_mvvline
- ncurses_mvwaddstr
- ncurses_napms
- ncurses_new_panel
- ncurses_newpad
- ncurses_newwin
- ncurses_nl
- ncurses_nocbreak
- ncurses_noecho
- ncurses_nonl
- ncurses_noqiflush
- ncurses_noraw
- ncurses_pair_content
- ncurses_panel_above
- ncurses_panel_below
- ncurses_panel_window
- ncurses_pnoutrefresh
- ncurses_prefresh
- ncurses_putp
- ncurses_qiflush
- ncurses_raw
- ncurses_refresh
- ncurses_replace_panel
- ncurses_reset_prog_mode
- ncurses_reset_shell_mode
- ncurses_resetty
- ncurses_savetty
- ncurses_scr_dump
- ncurses_scr_init
- ncurses_scr_restore
- ncurses_scr_set
- ncurses_scrl
- ncurses_show_panel
- ncurses_slk_attr
- ncurses_slk_attroff
- ncurses_slk_attron
- ncurses_slk_attrset
- ncurses_slk_clear
- ncurses_slk_color
- ncurses_slk_init
- ncurses_slk_noutrefresh
- ncurses_slk_refresh
- ncurses_slk_restore
- ncurses_slk_set
- ncurses_slk_touch
- ncurses_standend
- ncurses_standout
- ncurses_start_color
- ncurses_termattrs
- ncurses_termname
- ncurses_timeout
- ncurses_top_panel
- ncurses_typeahead
- ncurses_ungetch
- ncurses_ungetmouse
- ncurses_update_panels
- ncurses_use_default_colors
- ncurses_use_env
- ncurses_use_extended_names
- ncurses_vidattr
- ncurses_vline
- ncurses_waddch
- ncurses_waddstr
- ncurses_wattroff
- ncurses_wattron
- ncurses_wattrset
- ncurses_wborder
- ncurses_wclear
- ncurses_wcolor_set
- ncurses_werase
- ncurses_wgetch
- ncurses_whline
- ncurses_wmouse_trafo
- ncurses_wmove
- ncurses_wnoutrefresh
- ncurses_wrefresh
- ncurses_wstandend
- ncurses_wstandout
- ncurses_wvline
Коментарии
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);
?>