new version of PHP ncurses FAQ is here: http://alexeyrybak.com/php_ncurses_faq.html
Ncurses 関数
目次
- ncurses_addch — 現在の位置に文字を追加し、カーソルを進める
- ncurses_addchnstr — 現在の位置に指定した長さの属性付き文字列を追加する
- ncurses_addchstr — 現在の位置に属性付き文字列を追加する
- ncurses_addnstr — 現在の位置に、指定した長さの文字列を追加する
- ncurses_addstr — 現在の位置にテキストを出力する
- ncurses_assume_default_colors — カラー 0 のデフォルト色を定義する
- 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 — 色の RGB 値を取得する
- 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 ウインドウを削除する
- ncurses_doupdate — 準備中の全ての出力を書き込み、端末をリフレッシュする
- ncurses_echo — キーボード入力のエコーを有効とする
- ncurses_echochar — リフレッシュを行いつつ 1 文字出力する
- ncurses_end — ncurses を終了し、画面を消去する
- ncurses_erase — 端末画面を消去する
- ncurses_erasechar — 現在の erase 文字を返す
- ncurses_filter — iniscr() および newterm() の LINES を 1 に設定する
- ncurses_flash — 端末画面をフラッシュする(ビジュアルベル)
- ncurses_flushinp — キーボード入力バッファをフラッシュする
- ncurses_getch — キーボードから 1 文字読み込む
- 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 — 現在位置に属性付きの文字を用いて最大 n 文字長の線を水平に描画する
- ncurses_inch — 現在位置の文字と属性を取得する
- ncurses_init_color — 新規に RGB 値を設定する
- ncurses_init_pair — 色の組を確保する
- ncurses_init — ncurses を初期化する
- ncurses_insch — 文字を挿入し、現在位置にある文字を含む残りの行を移動する
- ncurses_insdelln — 現在の行の後に複数の行を挿入し、スクロールダウンする (負の数を指定すると削除し、スクロールアップする)
- ncurses_insertln — 行を挿入し、残りの部分をスクロールダウンする
- ncurses_insstr — 現在位置に文字列を挿入し、残りの行を右に移動する
- ncurses_instr — 端末画面から文字列を読み込む
- ncurses_isendwin — Ncurses が endwin モードの場合、通常の画面出力が実行可能
- ncurses_keyok — キーコードを有効または無効にする
- ncurses_keypad — キーパッドを on あるいは off にする
- ncurses_killchar — 現在の行削除文字を返す
- ncurses_longname — 端末の説明を返す
- ncurses_meta — 8 ビットのメタキー情報を有効/無効にする
- ncurses_mouse_trafo — 座標を変換する
- ncurses_mouseinterval — マウスボタンクリックのタイムアウトを設定する
- ncurses_mousemask — マウスオプションを設定する
- ncurses_move_panel — 左上が [startx, starty] となるようにパネルを移動する
- ncurses_move — 出力位置を移動する
- ncurses_mvaddch — 現在位置を移動し、文字を追加する
- ncurses_mvaddchnstr — 位置を移動し、指定長の属性付きの文字列を追加する
- ncurses_mvaddchstr — 位置を移動し、属性付きの文字列を追加する
- ncurses_mvaddnstr — 位置を移動し、指定長の文字列を追加する
- ncurses_mvaddstr — 位置を移動し、文字列を追加する
- ncurses_mvcur — 直ちにカーソルを移動する
- ncurses_mvdelch — 位置を移動し、文字を削除、行の残りを左シフトする
- ncurses_mvgetch — 位置を移動し、新しい位置で文字を得る
- ncurses_mvhline — 位置を新しく設定し、属性付きの文字を用いて最大n文字の水平線を描画
- ncurses_mvinch — 位置を移動し、新しい位置の属性付きの文字を取得する
- ncurses_mvvline — 位置を新しく設定し、属性付きの文字を用いて最大 n 文字の垂直線を描画する
- ncurses_mvwaddstr — ウインドウの新規位置に文字列を追加する
- ncurses_napms — スリープ
- ncurses_new_panel — 新しいパネルを作成し、それをウィンドウに関連づける
- ncurses_newpad — 新しいパッド (window) を作成する
- ncurses_newwin — 新規ウインドウを作成する
- ncurses_nl — 改行と復改/ラインフィードを変換する
- ncurses_nocbreak — 端末を cooked モードに変更する
- ncurses_noecho — キーボード入力エコーを無効にする
- ncurses_nonl — 改行と復改/ラインフィードを変換しない
- ncurses_noqiflush — シグナル文字のフラッシュを無効とする
- ncurses_noraw — 端末を raw モード以外に変更する
- ncurses_pair_content — 色の RGB 値を取得する
- ncurses_panel_above — パネルの上のパネルを返す
- ncurses_panel_below — パネルの下のパネルを返す
- ncurses_panel_window — パネルに関連付けられたウィンドウを返す
- ncurses_pnoutrefresh — パッドから仮想画面にリージョンをコピーする
- ncurses_prefresh — パッドから仮想画面にリージョンをコピーする
- ncurses_putp — パディング情報を文字列に適用し、それを出力する
- ncurses_qiflush — シグナル文字のフラッシュを有効とする
- ncurses_raw — 端末を raw モードに変更する
- ncurses_refresh — 画面をリフレッシュする
- ncurses_replace_panel — パネルに関連付けられたウィンドウを置き換える
- ncurses_reset_prog_mode — def_prog_mode で保存したプログラムモードをリセットする
- ncurses_reset_shell_mode — def_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_slk_noutrefresh を実行する際に強制的に出力する
- ncurses_standend — 'standout' 属性の使用を停止する
- ncurses_standout — 'standout' 属性の使用を開始する
- ncurses_start_color — 色の使用を開始する
- ncurses_termattrs — 端末でサポートされる全ての属性フラグの論理和を返す
- ncurses_termname — 端末の(簡略)名を返す
- ncurses_timeout — 特別なキーシーケンスのタイムアウトを設定する
- ncurses_top_panel — 可視パネルをスタックの最上部に移動する
- ncurses_typeahead — typeahead 確認用に別のファイル記述子を指定する
- ncurses_ungetch — 入力ストリームに 1 文字戻す
- ncurses_ungetmouse — マウスイベントをキューにプッシュする
- ncurses_update_panels — 仮想画面を再描画し、スタック内のパネルとの関係を反映させる
- ncurses_use_default_colors — 端末のデフォルト色をカラー ID -1 に割り付ける
- ncurses_use_env — 端末の大きさに関する環境情報の使用を制御する
- ncurses_use_extended_names — terminfo 記述において拡張名の使用を制御する
- ncurses_vidattr — video attribute モードで、端末上に文字列を表示する
- ncurses_vline — 現在位置に最大 n 文字の属性付きの文字を用いて垂直線を描画する
- ncurses_waddch — ウィンドウ内の現在位置に文字を追加し、カーソルを進める
- ncurses_waddstr — ウィンドウ内の現在位置にテキストを出力する
- ncurses_wattroff — ウィンドウの属性をオフにする
- ncurses_wattron — ウィンドウの属性をオンにする
- ncurses_wattrset — ウィンドウの属性を設定する
- ncurses_wborder — 属性文字を使用してウィンドウの周囲に線を描画する
- ncurses_wclear — ウィンドウをクリアする
- ncurses_wcolor_set — ウィンドウの色の組み合わせを設定する
- ncurses_werase — ウィンドウを消去する
- ncurses_wgetch — キーボート (ウィンドウ) から文字を読み込む
- ncurses_whline — 指定した属性文字を用いて、最大 n 文字分の長さの水平線を ウィンドウに描画する
- ncurses_wmouse_trafo — ウィンドウ/標準画面の座標系を変換する
- ncurses_wmove — ウィンドウの出力位置を移動する
- ncurses_wnoutrefresh — ウィンドウを仮想画面にコピーする
- ncurses_wrefresh — 端末画面のウインドウをリフレッシュする
- ncurses_wstandend — ウィンドウの standout モードを終了する
- ncurses_wstandout — ウィンドウの standout モードに入る
- ncurses_wvline — 指定した属性文字を用いて、最大 n 文字分の長さの垂直線を ウィンドウに描画する
Ncurses 関数
fisher
03-Jan-2007 05:02
03-Jan-2007 05:02
g_a at freemail dot deletethispart dot hu
03-Feb-2006 01:03
03-Feb-2006 01: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 09:36
05-Nov-2005 09: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 06:23
12-Jun-2005 06: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
16-Mar-2005 01:02
16-Mar-2005 01: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 05:27
17-Jun-2004 05: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 03:21
17-Jun-2004 03: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 03:17
17-Jun-2004 03: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 04:46
25-Feb-2004 04: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
12-Dec-2003 09:30
12-Dec-2003 09: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 12:49
14-Aug-2003 12:49
A simple article I wrote about php-ncurses:
https://www.darkwired.org/pub/papers/articles/php-ncurses/
rainman at darkwired dot org
01-Aug-2003 09:55
01-Aug-2003 09: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
26-Jun-2003 07:50
26-Jun-2003 07: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 10:29
19-Jun-2003 10:29
Here is a more complex example, I wrote:
http://alex.kazik.de/ncurses1.html
Habib Valanejad
28-Mar-2003 01:13
28-Mar-2003 01: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 02: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
16-Dec-2002 07:26
16-Dec-2002 07: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
15-Dec-2002 10:10
15-Dec-2002 10: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
15-Dec-2002 09:37
15-Dec-2002 09: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 05:56
14-Dec-2002 05: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 11:43
08-Nov-2002 11: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 09:34
30-May-2002 09: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
