new version of PHP ncurses FAQ is here: http://alexeyrybak.com/php_ncurses_faq.html
Fonctions Ncurses
Sommaire
- ncurses_addch — Ajoute un caractère à la position courante et avance le curseur
- ncurses_addchnstr — Ajoute une chaîne de taille donnée à la position courante
- ncurses_addchstr — Ajoute une chaîne à la position courante
- ncurses_addnstr — Ajoute une chaîne à la position courante
- ncurses_addstr — Affiche du texte à la position courante
- ncurses_assume_default_colors — Définit la couleur 0
- ncurses_attroff — Désactive les attributs donnés
- ncurses_attron — Active les attributs fournis
- ncurses_attrset — Modifie les attributs donnés
- ncurses_baudrate — Retourne le baudrate du terminal
- ncurses_beep — Fait beeper le terminal
- ncurses_bkgd — Définit les propriétés de fond d'écran pour le terminal
- ncurses_bkgdset — Définit le fond d'écran
- ncurses_border — Dessine un bord autour de l'écran avec les caractères données
- ncurses_bottom_panel — Place un conteneur visible en bas de la pile
- ncurses_can_change_color — Vérifie si le terminal peut changer de couleur
- ncurses_cbreak — Change la bufferisation d'entrée
- ncurses_clear — Efface l'écran
- ncurses_clrtobot — Efface l'écran depuis la position courante jusqu'au bas de l'écran
- ncurses_clrtoeol — Efface l'écran depuis la position courante jusqu'à la fin de la ligne
- ncurses_color_content — Lit la valeur RGB d'une couleur
- ncurses_color_set — Modifie la couleur de fond et de devant
- ncurses_curs_set — Modifie l'état du curseur
- ncurses_def_prog_mode — Sauve le mode du terminal
- ncurses_def_shell_mode — Sauve le mode de terminal (shell)
- ncurses_define_key — Définit un code de clé (keycode)
- ncurses_del_panel — Retire un conteneur de la pile et l'efface (mais pas la fenêtre associée)
- ncurses_delay_output — Retarde l'affichage sur les terminaux utilisant des caractères de remplissage
- ncurses_delch — Efface le caractère courant et décale le reste de la ligne vers la gauche
- ncurses_deleteln — Efface la ligne courante, et monte l'écran d'une ligne
- ncurses_delwin — Efface une fenêtre ncurses
- ncurses_doupdate — Affiche tout ce qui est prêt, et rafraîchit l'écran
- ncurses_echo — Active l'écho d'entrée clavier
- ncurses_echochar — Affiche un caractère et rafraîchit l'écran
- ncurses_end — Cesse l'utilisation de ncurses et efface l'écran
- ncurses_erase — Efface l'écran du terminal
- ncurses_erasechar — Lit le caractère qui se fait effacer
- ncurses_filter — Définit LINES pour iniscr() et newterm() à 1
- ncurses_flash — Fait flasher le terminal (visual bell)
- ncurses_flushinp — Vide le buffer d'entrée du clavier
- ncurses_getch — Lit un caractère sur le clavier
- ncurses_getmaxyx — Retourne la taille d'une fenêtre
- ncurses_getmouse — Lit les événements souris
- ncurses_getyx — Retourne la position courante du curseur pour une fenêtre
- ncurses_halfdelay — Met le terminal en mode semi-retardé
- ncurses_has_colors — Vérifie que le terminal supporte les couleurs
- ncurses_has_ic — Vérifie les capacités d'insertion et d'effacement
- ncurses_has_il — Vérifie les capacités d'insertion et d'effacement
- ncurses_has_key — Vérifie la présence des touches de fonctions sur le clavier
- ncurses_hide_panel — Retire un conteneur de la pile, pour le rendre invisible
- ncurses_hline — Dessine une ligne horizontale à la position courante, en utilisant un caractère et une taille maximale
- ncurses_inch — Lit le caractère et ses attributs à la position courante
- ncurses_init_color — Configure une nouvelle valeur RGB pour une couleur
- ncurses_init_pair — Alloue une paire de couleur
- ncurses_init — Initialise ncurses
- ncurses_insch — Insère un caractère et décale le reste de la ligne vers la droite, y compris le caractère courant
- ncurses_insdelln — Insère des lignes devant la ligne courante en scrollant vers le bas (des nombres négatifs donneront un scroll vers le haut)
- ncurses_insertln — Insère une ligne et décale le reste de l'écran vers le bas
- ncurses_insstr — Insère une chaîne à la position courante, et décale le reste de la chaîne à droite
- ncurses_instr — Lit une chaîne depuis le terminal
- ncurses_isendwin — Vérifie si ncurses est en mode endwin
- ncurses_keyok — Active ou désactive un code de clé (keycode)
- ncurses_keypad — Active ou désactive le keypad
- ncurses_killchar — Retourne la ligne du caractère actuellement supprimé
- ncurses_longname — Retourne la description du terminal
- ncurses_meta — Active/désactive les informations de méta clé 8-bits
- ncurses_mouse_trafo — Transforme les coordonnées
- ncurses_mouseinterval — Configure les délais entre les clics de souris
- ncurses_mousemask — Configure les événements de souris à surveiller
- ncurses_move_panel — Déplace un conteneur pour que son coin supérieur gauche soit aux coordonnées [startx, starty]
- ncurses_move — Déplace la position d'affichage
- ncurses_mvaddch — Déplace la position courante et ajoute un caractère
- ncurses_mvaddchnstr — Déplace la position et ajoute la chaîne attribuée avec la taille donnée
- ncurses_mvaddchstr — Déplace la position et ajoute une chaîne attribuée
- ncurses_mvaddnstr — Déplace la position et ajoute une chaîne de taille donnée
- ncurses_mvaddstr — Déplace la position et ajoute une chaîne
- ncurses_mvcur — Déplace immédiatement le curseur
- ncurses_mvdelch — Déplace la position et efface le caractère, puis décale le reste de la ligne à gauche
- ncurses_mvgetch — Déplace la position et lit le caractère à la nouvelle position
- ncurses_mvhline — Choisi une nouvelle position et dessine une ligne horizontale avec le caractère donné, et de taille maximale donnée
- ncurses_mvinch — Déplace la position et lit le caractère à la nouvelle position
- ncurses_mvvline — Modifie la position et dessine une ligne verticale avec le caractère donné, de taille maximale donnée
- ncurses_mvwaddstr — Ajoute une chaîne à une nouvelle position dans la fenêtre
- ncurses_napms — Fait une pause
- ncurses_new_panel — Crée un nouveau conteneur et l'associe à une fenêtre
- ncurses_newpad — Crée un nouveau pad (fenêtre)
- ncurses_newwin — Crée une nouvelle fenêtre
- ncurses_nl — Convertit les nouvelles lignes et retours chariot en sauts de ligne
- ncurses_nocbreak — Passe le terminal en mode cooked
- ncurses_noecho — Désactive l'écho clavier
- ncurses_nonl — Ne convertit par les nouvelles lignes et retours chariot en sauts de ligne
- ncurses_noqiflush — Ne vide pas les buffers sur réception des caractères de signaux
- ncurses_noraw — Déconfigure le mode brut du terminal
- ncurses_pair_content — Retourne les couleurs de fond et d'affichage d'une paire
- ncurses_panel_above — Retourne le conteneur au-dessus du conteneur
- ncurses_panel_below — Retourne le conteneur sous le conteneur
- ncurses_panel_window — Retourne la fenêtre associée avec un conteneur
- ncurses_pnoutrefresh — Copie une région depuis un pad dans un écran virtuel
- ncurses_prefresh — Copie une région depuis un pad dans l'écran virtuel
- ncurses_putp — Applique l'information d'espacement à la chaîne et l'affiche
- ncurses_qiflush — Vide les buffers après détection d'un caractère de signal
- ncurses_raw — Passe le terminal en mode brut (raw)
- ncurses_refresh — Rafraîchit l'écran
- ncurses_replace_panel — Remplace la fenêtre associée à un conteneur
- ncurses_reset_prog_mode — Restaure le mode prog sauvé par def_prog_mode
- ncurses_reset_shell_mode — Restaure le mode shell, mode sauvé par def_shell_mode
- ncurses_resetty — Rétablit le terminal sauvé
- ncurses_savetty — Sauve l'état du terminal
- ncurses_scr_dump — Sauve un écran dans un fichier
- ncurses_scr_init — Initialise un écran depuis un fichier de sauvegarde
- ncurses_scr_restore — Rétablit un écran depuis un fichier de sauvegarde
- ncurses_scr_set — Configure un écran depuis un fichier de sauvegarde
- ncurses_scrl — Scrolle le contenu de la fenêtre vers le haut ou le bas, sans changer la position courante
- ncurses_show_panel — Place un conteneur invisible en haut de la pile, pour le rendre visible
- ncurses_slk_attr — Retourne l'attribut de la clé soft label courante
- ncurses_slk_attroff — Désactive l'attribut donné pour les étiquettes des function-key (fonctions clés)
- ncurses_slk_attron — Active l'attribut donné pour les étiquettes des function-key (fonctions clés)
- ncurses_slk_attrset — Définit les attributs donnés à une étiquette function-key
- ncurses_slk_clear — Efface les soft labels de l'écran
- ncurses_slk_color — Configure la couleur des clés soft label
- ncurses_slk_init — Initialise les fonctions de clés soft label
- ncurses_slk_noutrefresh — Copie toutes les clés soft label à l'écran virtuel
- ncurses_slk_refresh — Copie les clés soft label à l'écran
- ncurses_slk_restore — Rétablit les clés soft label
- ncurses_slk_set — Modifie les étiquettes de clé de fonction (function key labels)
- ncurses_slk_touch — Force l'affichage lorsque ncurses_slk_noutrefresh est utilisé
- ncurses_standend — Cesse l'utilisation de l'attribut 'standout'
- ncurses_standout — Commence l'utilisation de l'attribut 'standout'
- ncurses_start_color — Active les couleurs
- ncurses_termattrs — Retourne toutes les options supportées par le terminal, combinées ensemble par l'opérateur OR
- ncurses_termname — Retourne le nom court du terminal
- ncurses_timeout — Configure le temps d'expiration des séquences clavier spéciales
- ncurses_top_panel — Place un conteneur visible sur le haut de la pile
- ncurses_typeahead — Spécifie un autre descripteur de fichier pour la vérification à la volée des données saisies
- ncurses_ungetch — Replace un caractère dans la queue d'entrée
- ncurses_ungetmouse — Ajoute un événement souris dans la queue
- ncurses_update_panels — Rafraîchit l'écran virtuel pour prendre en compte les relations entre les conteneurs de la pile
- ncurses_use_default_colors — Assigne la couleur de terminal pour l'index -1
- ncurses_use_env — Contrôle l'utilisation des informations d'environnement concernant la taille du terminal
- ncurses_use_extended_names — Contrôle l'utilisation des noms étendus dans les descriptions terminfo
- ncurses_vidattr — Affiche la chaîne sur un terminal dans le mode d'attribut vidéo
- ncurses_vline — Dessine une ligne verticale à la position courante en utilisant un caractère donné, pour une taille donnée
- ncurses_waddch — Ajoute un caractère à la position courante, dans une fenêtre, et avance le curseur
- ncurses_waddstr — Affiche le texte à la position courante dans la fenêtre
- ncurses_wattroff — Désactive les attributs d'une fenêtre
- ncurses_wattron — Efface les attributs de la fenêtre
- ncurses_wattrset — Modifie les attributs d'une fenêtre
- ncurses_wborder — Dessine le bord d'une fenêtre avec un caractère qualifié
- ncurses_wclear — Efface la fenêtre
- ncurses_wcolor_set — Modifie les paires de couleurs de la fenêtre
- ncurses_werase — Efface le contenu de la fenêtre
- ncurses_wgetch — Lit un caractère depuis le clavier (fenêtre)
- ncurses_whline — Dessine une ligne horizontale à partir de la position courante, avec un caractère qualifié, et d'une taille maximale
- ncurses_wmouse_trafo — Transforme les coordonnées d'une fenêtre
- ncurses_wmove — Déplace la position d'affichage de la fenêtre
- ncurses_wnoutrefresh — Copie la fenêtre dans l'écran virtuel
- ncurses_wrefresh — Rafraîchit la fenêtre sur l'écran du terminal
- ncurses_wstandend — Termine le mode standout de la fenêtre
- ncurses_wstandout — Passe une fenêtre en mode standout
- ncurses_wvline — Dessine une ligne verticale dans une fenêtre, à la position courante, en utilisant un caractère qualifié, avec une taille maximale
Fonctions Ncurses
fisher
02-Jan-2007 06:02
02-Jan-2007 06:02
g_a at freemail dot deletethispart dot hu
02-Feb-2006 02:03
02-Feb-2006 02:03
To determine screen width and height without any external (OS specific) commands, I use:
<?php
ncurses_init();
$fullscreen = ncurses_newwin ( 0, 0, 0, 0);
ncurses_getmaxyx($fullscreen,&$a,&$b);
ncurses_end();
echo "Width:$b\nHeight:$a\n";
?>
krzysztof dot gorzelak at gmail dot com
05-Nov-2005 10:36
05-Nov-2005 10:36
Here is a small example, how to use STDIN to read keys combinations in console.
$stdin = fopen('php://stdin', 'r');
stream_set_timeout($stdin, 1);
while (1) {
$temp="";
while (1) {
if(stream_select($read = array($stdin), $write = NULL, $except = NULL, 0))
$temp .= ord(fgetc($stdin));
else break;
}
// F1 : $temp == 27914949126
// ALT+F1 : $temp = 2727914949126
// ....
usleep("50000");
}
fisher
12-Jun-2005 08:23
12-Jun-2005 08:23
russian speakers can find a practice php+ncurses faq with some useful samples here
http://fisher.phpclub.net/php_ncurses_faq.html
php at nospam dot feraudet dot com
15-Mar-2005 02:02
15-Mar-2005 02:02
just an other ncurses tetris ...
In php with lib_ncurses of course ..
http://feraudet.com/phpntetris.php.txt
Cyril Feraudet
kermodebear at kermodebear dot org
17-Jun-2004 07:27
17-Jun-2004 07:27
An implementation of a scrolling selection box:
<?php
function ncurses_menu_select( $options, $values, $max_height = 7, $max_width = 20, $y = 2, $x = 2 ) {
// Size inside of borders
$height = $max_height - 2;
$width = $max_width - 2;
// Number of options
$num_options = count( $options );
// Trim all values to fit
foreach( $options as $key => $value ) {
$options[ $key ] = substr( $value, 0, $width );
}
// Create Window
$menu_window = ncurses_newwin( $max_height, $max_width, $y, $x );
ncurses_wborder( $menu_window, 0, 0, 0, 0, 0, 0, 0, 0 );
// Initialize Window
$current = 0; // Currently selected
$position = 1; // Position in list
$topitem = 0; // Top menu item
for ( $a = 0; $a < min( $height, $num_options ); $a++ ) {
if ( $a == $current ) {
ncurses_wattron( $menu_window, NCURSES_A_REVERSE );
ncurses_mvwaddstr( $menu_window, 1 + $a, 1, $options[ $a ] );
ncurses_wattroff( $menu_window, NCURSES_A_REVERSE );
} else {
ncurses_mvwaddstr( $menu_window, 1 + $a, 1, $options[ $a ] );
}
}
ncurses_mvwaddstr( $menu_window, 1, 0, '*' );
ncurses_wrefresh( $menu_window );
// Loop until a selection is made
while( ! in_array( $key = ncurses_getch( $menu_window ), array( 13, 10 ) ) ) {
if ( $key == NCURSES_KEY_UP && $current > 0 ) {
$move = -1;
} else if ( $key == NCURSES_KEY_DOWN && $current < $num_options - 1 ) {
$move = 1;
} else {
continue;
}
$current += $move;
$position += $move;
// If we scroll off the window, redraw items.
if ( $position < 1 || $position > $height ) {
if ( $position < 1 ) {
$position = 1;
} else {
$position = $height;
}
$topitem += $move;
for ( $a = 1; $a <= $height; $a++ ) {
ncurses_mvwaddstr( $menu_window, $a, 1, str_repeat( ' ', $width ) );
if ( $a == $position ) {
ncurses_wattron( $menu_window, NCURSES_A_REVERSE );
ncurses_mvwaddstr( $menu_window, $a, 1, $options[ $topitem + $a - 1 ] );
ncurses_wattroff( $menu_window, NCURSES_A_REVERSE );
} else {
ncurses_mvwaddstr( $menu_window, $a, 1, $options[ $topitem + $a - 1 ] );
}
}
} else { // Just update changed items
ncurses_wattron( $menu_window, NCURSES_A_REVERSE );
ncurses_mvwaddstr( $menu_window, $position, 1, $options[ $current ] );
ncurses_wattroff( $menu_window, NCURSES_A_REVERSE );
ncurses_mvwaddstr( $menu_window, $position - $move, 1, $options[ $current - $move ] );
}
// Update 'scroll bar dot'
ncurses_wborder( $menu_window, 0, 0, 0, 0, 0, 0, 0, 0 );
$dot_position = round ( ( $current / $num_options ) * ( $height - 1 ) );
ncurses_mvwaddstr( $menu_window, 1 + $dot_position, 0, '*' );
ncurses_wrefresh( $menu_window );
}
return $values[ $current ];
}
?>
kermodebear at kermodebear dot org
17-Jun-2004 05:21
17-Jun-2004 05:21
Not calling ncurses_end() can (will) cause issues with terminals. Although registering a shutdown function which includes ncurses_end() may help, sometimes things go awry and you're stuck with a terminal that is acting in strange ways.
This can be fixed! *NIX systems (FreeBSD, Linux, UNIX, et al.) usually support the 'reset' command which resets the terminal settings and allows you to get things back to normal.
kermodebear at kermodebear dot org
17-Jun-2004 05:17
17-Jun-2004 05:17
Here is a function that takes an associative array, presents a menu in a new window, allows the user to make a choice using up and down arrows and the enter key, and returns the value of the menu item.
Limitations include:
No way of scrolling a long list, either horiontally or vertically;
No arguments for placement on screen, although this is easy to add;
No multiple selection;
Will produce all kinds of errors and warnings if the terminal is smaller than is necessary to create the window.
I'm very new at using the ncurses library; Comments and improvements would be greatly appreciated!
<?php
/**
* Create a simple selection menu
* @param array Associative array; The value will be shown on the menu, while the key will be returned when the associated value is selected.
* @return mixed
*/
function ncurses_menu_select( $menu ) {
$keys = array_keys( $menu );
$values = array_values( $menu );
$height = $width = 0;
$height = count( $menu ) + 2;
foreach( $values as $value ) {
$width = max( $width, strlen( $value ) + 2 );
}
$menu_window = ncurses_newwin( $height, $width, 5, 5 );
ncurses_wborder( $menu_window, 0,0, 0,0, 0,0, 0,0 );
$current = 0;
for( $a = 0; $a < count( $values ); $a++ ) {
if ( $a == $current ) {
ncurses_wattron( $menu_window, NCURSES_A_REVERSE );
ncurses_mvwaddstr( $menu_window, 1 + $a, 1, $values[ $a ] );
ncurses_wattroff( $menu_window, NCURSES_A_REVERSE );
} else {
ncurses_mvwaddstr( $menu_window, 1 + $a, 1, $values[ $a ] );
}
}
ncurses_wrefresh( $menu_window );
while( ! in_array( $key = ncurses_getch( $menu_window ), array( 13, 10 ) ) ) {
if ( $key == NCURSES_KEY_UP AND $current > 0 ) {
$move = -1;
} else if ( $key == NCURSES_KEY_DOWN and $current < count( $values ) - 1 ) {
$move = 1;
} else {
$move = 0;
}
ncurses_mvwaddstr( $menu_window, 1 + $current, 1, $values[ $current ] );
$current += $move;
ncurses_wattron( $menu_window, NCURSES_A_REVERSE );
ncurses_mvwaddstr( $menu_window, 1 + $current, 1, $values[ $current ] );
ncurses_wattroff( $menu_window, NCURSES_A_REVERSE );
ncurses_wrefresh( $menu_window );
}
ncurses_delwin( $menu_window );
return $keys[ $current ];
}
?>
Example Use:
<?php
// Initialie ncurses
$ncurse = ncurses_init();
// A full screen window
$fullscreen = ncurses_newwin ( 0, 0, 0, 0);
// Add a pretty border
ncurses_border(0,0, 0,0, 0,0, 0,0);
// Draw everything so far
ncurses_refresh();
// Set up menu array
$menu_items = array(
'one' => 'Menu Item #1',
'two' => 'Menu Item #2',
'three' => 'Menu Item #3' );
// Display menu and return selection
$selection = ncurses_menu_select( $menu_items );
// Print selection
ncurses_mvaddstr( 1, 1, 'You selected ' . $menu_items[$selection] . ' with the value ' . $selection );
// Draw updates
ncurses_refresh( $fullscreen );
// End
ncurses_end();
?>
Habib Valanejad
25-Feb-2004 05:46
25-Feb-2004 05:46
What if you want to draw a new window and after removing it, showing the pervious screen again? Unfortunately, there is no such a thing in php/ncurses as there is in original curses library (touchwin if I'm not mistaken - It has been a long time!).
However, you can do this by a simple trick! You can
dump the screen to a temp file and then restore it back
again!
Take a look at this function:
# Function: show_a_win()
# - Displays a small window and writes something in it.
# - waits for a key
# - shows the pervious screen again
function show_a_win()
{
# Dump the current screen into a temp file:
$tmpfile = tempnam("/tmp", "dump.");
# Create a new window.
$newwin = ncurses_newwin(4, 60, 10, 10);
# Write something and then refresh it
ncurses_mvwaddstr($newwin, 1, 1, "This is a test.");
ncurses_wrefresh($newwin);
# Wait for a key
ncurses_wgetch($newwin);
ncurses_delwin($newwin); /* delete the window */
/* Restore the screen the same way it was before entering
* into the function:
*/
ncurses_scr_restore($tmpfile);
unlink($tmpfile); /* Remove temp file */
}
Habib Valanejad
11-Dec-2003 10:30
11-Dec-2003 10:30
Here is a function which would do the job for missing
ncurses_wclrtoeol() function:
/* wclrtoeol()
* Erases the current line to the right of the cursor
*/
function wclrtoeol($win)
{
# get current position
ncurses_getyx($win, &$crow, &$ccol);
# get maximum row and col for this window:
ncurses_getmaxyx($win, &$max_row, &$max_col);
for ($col = $ccol; $col < $max_col; $col ++){
ncurses_wmove($win, $crow, $col);
ncurses_waddch($win, 32);
}
}
rainman at darkwired dot org
14-Aug-2003 02:49
14-Aug-2003 02:49
A simple article I wrote about php-ncurses:
https://www.darkwired.org/pub/papers/articles/php-ncurses/
rainman at darkwired dot org
31-Jul-2003 11:55
31-Jul-2003 11:55
This is not meant as spam to get people to use my client.
I have been working on a PHP4 IRC client with ncurses interface and I think it is a useful example of how ncurses with php could be used.
It is GPL licensed so you can just go and take a loot at it.
It can be found at http://torc.sourceforge.net or http://www.darkwired.org/projects/torc/
I hope this will help out some of you because php ncurses can be quite difficult I experienced :]
For any questions about the code you can ofcourse just mail me.
Habib Valanejad
25-Jun-2003 09:50
25-Jun-2003 09:50
I had a small problem building php+ncurses support.
ncurses include files were installed in:
ncurses_installed_dir/include/ncurses
This caused problems when building php with ncurse support.
php was looking for include files in:
ncurses_installed_dir/include
However, include files were located in include/ncurses
I had to make symbolic links of files in ncurses directory so php could see them:
# cd ncurses_insalled_directory/include
# ln -s ncurses/* .
After that it worked.
alex at kazik dot de
19-Jun-2003 12:29
19-Jun-2003 12:29
Here is a more complex example, I wrote:
http://alex.kazik.de/ncurses1.html
Habib Valanejad
28-Mar-2003 02:13
28-Mar-2003 02:13
For those of you who want to check if <ENTER> key is passed,
you have to check the key agains both NL and CR keys:
function get_str()
{
for ($str = "";;){
$key = ncurses_getch();
switch ($key){
case 10: // newline
case 13: // Carrige Return
return($str);
default:
$str .= chr($key);
ncurses_refresh();
} // switch
} // for
} // get_str()
Hope that would help.
25-Mar-2003 03:18
In the example above, if you run resize from a C shell it will output the sizes in C shell syntax, run resize with -u to force Bourne syntax:
The $win parameter is just for future compatibility.
function ncurses_getmaxyx($win, &$y, &$x)
{
exec("/usr/X11R6/bin/resize -u", $output);
$cols = explode("=", $output[0]);
$rows = explode("=", $output[1]);
$x = intval($cols[1]);
$y = intval($rows[1]);
}
joeldegan AT yahoo.com
15-Dec-2002 08:26
15-Dec-2002 08:26
See the documentation for ncurses_border and ncurses_wrefresh for some more examples of doing windowing and dynamic sizing.. I also posted some information to the zend.com code-gallery for doing ncurses under php.
joeldegan AT yahoo.com
14-Dec-2002 11:10
14-Dec-2002 11:10
I noticed a lack of a getxy() function so I wrote one.
You may need to change the path for your resize cmd.
<?
function getxy(){
$rez = `/usr/X11R6/bin/resize`;
$rez = explode("\n",$rez);
while(list($key,$val)=each($rez)){
$a=explode("=",$val);
if(trim($a[0])=="COLUMNS"){ $COLUMNS = $a[1]; }
if(trim($a[0])=="LINES"){ $LINES = $a[1]; }
}//
$retval[0]=$COLUMNS;
$retval[1]=$LINES;
return $retval;
}
print_r(getxy());
?>
joeldegan AT yahoo.com
14-Dec-2002 10:37
14-Dec-2002 10:37
This is from the examples that come with the latest release.
From:
php-4.3.0RC3/ext/ncurses/example1.php
I found this useful...
<?php
$n=0;
ncurses_init();
if(ncurses_has_colors()){
ncurses_start_color();
ncurses_init_pair(1,NCURSES_COLOR_RED,NCURSES_COLOR_BLACK);
ncurses_init_pair(2,NCURSES_COLOR_GREEN,NCURSES_COLOR_BLACK);
ncurses_init_pair(3,NCURSES_COLOR_YELLOW,NCURSES_COLOR_BLACK);
ncurses_init_pair(4,NCURSES_COLOR_BLUE,NCURSES_COLOR_BLACK);
ncurses_init_pair(5,NCURSES_COLOR_MAGENTA,NCURSES_COLOR_BLACK);
ncurses_init_pair(6,NCURSES_COLOR_CYAN,NCURSES_COLOR_BLACK);
ncurses_init_pair(7,NCURSES_COLOR_WHITE,NCURSES_COLOR_BLACK);
}
while(1){
for ($x=0; $x<80; $x++) {
for ($y=0; $y<24; $y++) {
$n++;
ncurses_move($y,$x);
ncurses_addch($n+64);
ncurses_color_set($n%8);
ncurses_refresh();
if($n>26)$n=0;
}
}
ncurses_getch();
}
?>
joeldegan AT yahoo.com
14-Dec-2002 06:56
14-Dec-2002 06:56
actually *that* example does not work...
here is one that I took and trimmed down from the ncurses examples.
I will do some more and post them here..
<?
ncurses_init();
##############################################
ncurses_noecho();
$large = ncurses_newwin(20, 60, 2, 10);
$small = ncurses_newwin(10, 30, 7, 25);
ncurses_refresh();
ncurses_wrefresh($large);
ncurses_wrefresh($small);
ncurses_mvwaddstr($small, 5, 5, " Test String ");
ncurses_wrefresh($small);
ncurses_getch();
##############################################
ncurses_end(); // Clean up, and quit
?>
This is from PHP 4.3.0RC0 compiled with the following flags..
./configure --prefix=/wwwroot/php --with-config-file-path=/wwwroot/php --with-mysql --enable-pcntl --with-tsrm-pthreads --enable-sysvsem --enable-sysvshm --with-curl --enable-bcmath --enable-sigchild --enable-sockets --with-ncurses
nweeks at utas dot edu dot au
08-Nov-2002 12:43
08-Nov-2002 12:43
With your CGI version of PHP compiled with ncurses support, console apps are amazingly easy!
For example:
whack the following into a file, chmod +x it, and run it.
#!/usr/local/bin/php -q
<?php
ncurses_init();
ncurses_border(25,25,18,18,24,24,23,23); // Do a lovely border
ncurses_move(1,1); // Start top left(inside border)
ncurses_addstr("Welcome to NCurses");
ncurses_addstr(" with PHP!");
ncurses_refresh(); // Send buffer to screen
ncurses_end(); // Clean up, and quit
?>
Youll notice the second addstr simply tacks onto the first.
zak at php dot net
30-May-2002 11:34
30-May-2002 11:34
There is a simple ncurses application in the PHP source tree. See http://cvs.php.net/co.php/php-src/ext/ncurses/example1.php?r=1.1
