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";
?>
Funciones de Ncurses
Tabla de contenidos
- ncurses_addch — Agregar un caracter en la posición actual y avanzar el cursor
- ncurses_addchnstr — Agregar cadena con atributos y longitud especificada en la posición actual
- ncurses_addchstr — Agregar una cadena con atributos en la posición actual
- ncurses_addnstr — Agregar una cadena con la longitud especificada en la posición actual
- ncurses_addstr — Imprimir texto en la posición actual
- ncurses_assume_default_colors — Definir colores predeterminados para el color 0
- ncurses_attroff — Deshabilitar los atributos dados
- ncurses_attron — Habilitar los atributos dados
- ncurses_attrset — Establecer los atributos dados
- ncurses_baudrate — Devuelve la tasa de baudios de la terminal
- ncurses_beep — Producir un beep en la terminal
- ncurses_bkgd — Establecer la propiedad de segundo plano para la pantalla de la terminal
- ncurses_bkgdset — Controla el segundo plano de la pantalla
- ncurses_border — Dibujar un borde alrededor de la pantalla usando caracteres con atributos
- ncurses_bottom_panel — Mueve un panel visible al fondo de la pila
- ncurses_can_change_color — Comprobar si las definiciones de color del terminal se pueden cambiar
- ncurses_cbreak — Desactivar el buffer de entrada
- ncurses_clear — Limpiar la pantalla
- ncurses_clrtobot — Limpiar la pantalla desde la posición actual al final
- ncurses_clrtoeol — Limpiar la pantalla desde la posición actual al final de la línea
- ncurses_color_content — Obtiene los componentes RGB de un color
- ncurses_color_set — Establecer los colores de primer plano y fondo activos
- ncurses_curs_set — Establecer el estado del cursor
- ncurses_def_prog_mode — Guarda los modos de terminal (programa)
- ncurses_def_shell_mode — Guarda los modos de terminal (intérprete de comandos)
- ncurses_define_key — Definir un código de tecla
- ncurses_del_panel — Remover un panel de la pila y eliminarlo (pero no la ventana asociada)
- ncurses_delay_output — Retrasar la salida en la terminal usando caracteres de relleno
- ncurses_delch — Eliminar un caracter en la posición actual, mover el resto de la línea hacia la izquierda
- ncurses_deleteln — Eliminar una línea en la posición actual, mover el resto de la pantalla hacia arriba
- ncurses_delwin — Eliminar una ventana ncurses
- ncurses_doupdate — Escribir todas las actualizaciones preparadas sobre la terminal
- ncurses_echo — Activar la repetición de entrada del teclado
- ncurses_echochar — Salida de un caracter sencillo, incluyendo actualización
- ncurses_end — Dejar de usar ncurses, limpiar la pantalla
- ncurses_erase — Limpiar pantalla de terminal
- ncurses_erasechar — Devuelve el caracter de borrado actual
- ncurses_filter — Definir LINES para iniscr() y newterm() a 1
- ncurses_flash — Relampaguear la pantalla de terminal (campana visual)
- ncurses_flushinp — Volcar el búfer de entrada de teclado
- ncurses_getch — Leer un caracter desde el teclado
- ncurses_getmaxyx — Devuelve el tamaño de una ventana
- ncurses_getmouse — Lee los eventos del ratón
- ncurses_getyx — Devuelve la posición de cursor actual para una ventana
- ncurses_halfdelay — Colocar la terminal en modo de medio retraso
- ncurses_has_colors — Comprueba si el terminal tiene capacidades de color
- ncurses_has_ic — Chequear por el soporte de inserción y borrado
- ncurses_has_il — Chequea el soporte de inserción y borrado
- ncurses_has_key — Chequear por la presencia de una tecla de función en el teclado de la terminal
- ncurses_hide_panel — Remover un panel de la pila, haciéndolo invisible
- ncurses_hline — Dibujar una línea horizontal en la posición actual usando un caracter con atributos, y de máximo n caracteres de largo
- ncurses_inch — Obtener el caracter y los atributos de la posición actual
- ncurses_init_color — Definir un color de termimal
- ncurses_init_pair — Definir una pareja de colores
- ncurses_init — Inicializar ncurses
- ncurses_insch — Insertar un caracter, moviendo el resto de la línea, incluyendo el caracter en la posición actual
- ncurses_insdelln — Insertar líneas antes de la línea actual, desplazando hacia abajo (los números negativos eliminan líneas y desplazan hacia arriba)
- ncurses_insertln — Insertar una línea, mover el resto de la pantalla hacia abajo
- ncurses_insstr — Insertar cadena en la posición actual, moviendo el resto de la línea hacia la derecha
- ncurses_instr — Lee una cadena desde la pantalla de terminal
- ncurses_isendwin — Ncurses está en modo endwin, se puede realizar una salida normal por pantalla
- ncurses_keyok — Habilitar o deshabilitar un código de tecla
- ncurses_keypad — Activa o desactiva el teclado numérico
- ncurses_killchar — Devuelve el caracter de eliminación de línea actual
- ncurses_longname — Devuelve la descripción de la terminal
- ncurses_meta — Habilita/deshabilita la meta-información de 8-bits de tecla
- ncurses_mouse_trafo — Transforma coordenadas
- ncurses_mouseinterval — Establecer el tiempo de espera para clics de botón del mouse
- ncurses_mousemask — Establece las opciones del ratón
- ncurses_move_panel — Mueve un panel de modo que su esquina superior izquierda se encuentre en [comienzo_x, comienzo_y]
- ncurses_move — Mover la posición de salida
- ncurses_mvaddch — Mover la posición actual y agregar un caracter
- ncurses_mvaddchnstr — Mover la posición y agregar una cadena con atributos con la longitud especificada
- ncurses_mvaddchstr — Mover la posición y agregar una cadena con atributos
- ncurses_mvaddnstr — Mover la posición y agregar una cadena con la longitud especificada
- ncurses_mvaddstr — Mover la posición y agregar una cadena
- ncurses_mvcur — Mover el cursor inmediatamente
- ncurses_mvdelch — Mover la posición y eliminar un caracter, desplazar el resto de la línea hacia la izquierda
- ncurses_mvgetch — Mover la posición y obtener el caracter en la nueva posición
- ncurses_mvhline — Establecer una nueva posición y dibujar una línea horizontal usando un caracter con atributos y una longitud máxima de n caracteres
- ncurses_mvinch — Mover la posición y obtener el caracter con atributos en la nueva posición
- ncurses_mvvline — Establecer una nueva posición y dibujar una línea vertical usando un caracter con atributos y una longitud máxima de n caracteres
- ncurses_mvwaddstr — Añadir una cadena en una posicón nueva de la ventana
- ncurses_napms — Dormir
- ncurses_new_panel — Crear un nuevo panel y asociarlo con una ventana
- ncurses_newpad — Crea un nuevo pad (ventana)
- ncurses_newwin — Crear una nueva ventana
- ncurses_nl — Traducir línea nueva y retorno de carro / alimentación de línea
- ncurses_nocbreak — Cambiar la terminal a modo normal (cooked)
- ncurses_noecho — Desactivar la repetición de entrada del teclado
- ncurses_nonl — No traducir línea nueva y retorno de carro / alimentación de línea
- ncurses_noqiflush — No realizar volcados en caracteres de señales
- ncurses_noraw — Salir del modo puro en la terminal
- ncurses_pair_content — Obtiene los colores de primer plano y fondo de una pareja de colores
- ncurses_panel_above — Devuelve el panel encima del panel indicado
- ncurses_panel_below — Devuelve el panel por debajo del panel indicado
- ncurses_panel_window — Devuelve la ventana asociada con el panel
- ncurses_pnoutrefresh — Copia una región desde un pad a la pantalla virtual
- ncurses_prefresh — Copia una región desde un pad a la pantalla virtual
- ncurses_putp — Aplicar la información de márgenes a la cadena e imprimirla
- ncurses_qiflush — Producir volcado en caracteres de señales
- ncurses_raw — Colocar la terminal en modo puro
- ncurses_refresh — Refrescar la pantalla
- ncurses_replace_panel — Reemplaza la ventana asociada con el panel
- ncurses_reset_prog_mode — Restablece el modo de programa guardado por def_prog_mode
- ncurses_reset_shell_mode — Restablece el modo de intérprete de comandos guardado por def_shell_mode
- ncurses_resetty — Restablece el estado guardado de la terminal
- ncurses_savetty — Guarda el estado de la terminal
- ncurses_scr_dump — Vuelca el contenido de la pantalla en un archivo
- ncurses_scr_init — Inicializar la pantalla desde un volcado en un archivo
- ncurses_scr_restore — Recuperar la pantalla desde un volcado en un archivo
- ncurses_scr_set — Heredar la pantalla de un volcado en un archivo
- ncurses_scrl — Desplazar el contenido de la ventana hacia arriba o abajo sin cambiar la posición actual
- ncurses_show_panel — Coloca un panel invisible al comienzo de la pila, haciéndola visible
- ncurses_slk_attr — Devuelve el atributo de la etiqueta suave de teclado
- ncurses_slk_attroff — Deshabilitar los atributos dados para las etiquetas suaves de teclado
- ncurses_slk_attron — Habilitar los atributos dados para las etiquetas suaves de funciones de teclado
- ncurses_slk_attrset — Definir los atributos dados para las etiquetas suaves de funciones de teclado
- ncurses_slk_clear — Limpia las etiquetas suaves de la pantalla
- ncurses_slk_color — Establece el color para las etiquetas suaves de teclado
- ncurses_slk_init — Inicializa las funciones de tecla de etiquetación suave
- ncurses_slk_noutrefresh — Copia las etiquetas suaves de teclado a la pantalla virtual
- ncurses_slk_refresh — Copia las etiquetas suaves de teclado a la pantalla
- ncurses_slk_restore — Recupera las etiquetas suaves de teclado
- ncurses_slk_set — Establece las etiquetas de teclado
- ncurses_slk_touch — Obliga a que se produzca salida cuando se ejecute ncurses_slk_noutrefresh
- ncurses_standend — Dejar de usar el atributo 'standout'
- ncurses_standout — Comenzar a usar el atributo 'standout'
- ncurses_start_color — Inicializa la funcionalidad de color
- ncurses_termattrs — Devuelve un valor OR lógico de todas las banderas de atributos soportados por la terminal
- ncurses_termname — Devuelve el nombre (corto) de la terminal
- ncurses_timeout — Establecer el tiempo de espera para secuencias especiales de teclas
- ncurses_top_panel — Mueve un panel visible al tope de la pila
- ncurses_typeahead — Especificar un descriptor de archivo diferente para el chequeo de escritura siguiente
- ncurses_ungetch — Colocar un caracter de vuelta en la secuencia de entrada
- ncurses_ungetmouse — Coloca un evento de mouse en la cola
- ncurses_update_panels — Refresca la pantalla virtual, para reflejar las relaciones entre los paneles en la pila
- ncurses_use_default_colors — Asignar los colores predeterminados de la terminal al id de color -1
- ncurses_use_env — Controlar el uso de información del entorno sobre el tamaño de la terminal
- ncurses_use_extended_names — Controlar el uso de nombres extendidos en descripciones de información de terminal
- ncurses_vidattr — Desplegar la cadena en la terminal con el atributo de modo de video
- ncurses_vline — Dibujar una línea vertical en la posición actual usando un caracter con atributos y una longitud máxima de n caracteres
- ncurses_waddch — Agrega un caracter en la posición actual de una ventana y avanza el cursor
- ncurses_waddstr — Imprime un texto en la posición actual de una ventana
- ncurses_wattroff — Deshabilita los atributos para una ventana
- ncurses_wattron — Habilita los atributos para una ventana
- ncurses_wattrset — Establecer los atributos para una ventana
- ncurses_wborder — Dibuja un borde alrededor de la ventana usando caracteres con atributos
- ncurses_wclear — Limpia la ventana
- ncurses_wcolor_set — Establece parejas de colores en la ventana
- ncurses_werase — Eliminar los contenidos de la ventana
- ncurses_wgetch — Lee un caracter desde el teclado (en la ventana)
- ncurses_whline — Dibuja una línea horizontal en una ventana en la posición actual usando un caracter con atributos y un largo máximo de n caracteres
- ncurses_wmouse_trafo — Transforma coordenadas de ventana/stdscr
- ncurses_wmove — Mueve la posición de salida de la ventana
- ncurses_wnoutrefresh — Copia la ventana a la pantalla virtual
- ncurses_wrefresh — Refrescar la ventana en la pantalla de terminal
- ncurses_wstandend — Finaliza el modo standout para una ventana
- ncurses_wstandout — Ingresar a modo standout en una ventana
- ncurses_wvline — Dibuja una línea vertical en una ventana en la posición actual usando un caracter con atributos y una longitud máxima de n caracteres
g_a at freemail dot deletethispart dot hu ¶
7 years ago
krzysztof dot gorzelak at gmail dot com ¶
7 years ago
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");
}
kermodebear at kermodebear dot org ¶
9 years ago
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 ¶
9 years ago
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 ¶
9 years ago
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 ¶
9 years ago
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 ¶
9 years ago
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 ¶
9 years ago
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 ¶
9 years ago
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.
Habib Valanejad ¶
10 years ago
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.
Anonymous ¶
10 years ago
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 ¶
10 years ago
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 ¶
10 years ago
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 ¶
10 years ago
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 ¶
10 years ago
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 ¶
10 years ago
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
?>
You'll notice the second addstr simply tacks onto the first.
