Curses
view release on metacpan or search on metacpan
flushinp newwin delwin mvwin subwin derwin mvderwin dupwin syncup
syncok cursyncup syncdown getmouse ungetmouse mousemask enclose
mouse_trafo mouseinterval BUTTON_RELEASE BUTTON_PRESS BUTTON_CLICK
BUTTON_DOUBLE_CLICK BUTTON_TRIPLE_CLICK BUTTON_RESERVED_EVENT
use_default_colors assume_default_colors define_key keybound keyok
resizeterm resize getmaxy getmaxx flusok getcap touchoverlap new_panel
bottom_panel top_panel show_panel update_panels hide_panel panel_window
replace_panel move_panel panel_hidden panel_above panel_below
set_panel_userptr panel_userptr del_panel set_menu_fore menu_fore
set_menu_back menu_back set_menu_grey menu_grey set_menu_pad menu_pad
pos_menu_cursor menu_driver set_menu_format menu_format set_menu_items
menu_items item_count set_menu_mark menu_mark new_menu free_menu
menu_opts set_menu_opts menu_opts_on menu_opts_off set_menu_pattern
menu_pattern post_menu unpost_menu set_menu_userptr menu_userptr
set_menu_win menu_win set_menu_sub menu_sub scale_menu set_current_item
current_item set_top_row top_row item_index item_name item_description
new_item free_item set_item_opts item_opts_on item_opts_off item_opts
item_userptr set_item_userptr set_item_value item_value item_visible
menu_request_name menu_request_by_name set_menu_spacing menu_spacing
pos_form_cursor data_ahead data_behind form_driver set_form_fields
form_fields field_count move_field new_form free_form set_new_page
new_page set_form_opts form_opts_on form_opts_off form_opts
set_current_field current_field set_form_page form_page field_index
post_form unpost_form set_form_userptr form_userptr set_form_win
form_win set_form_sub form_sub scale_form set_field_fore field_fore
set_field_back field_back set_field_pad field_pad set_field_buffer
field_buffer set_field_status field_status set_max_field field_info
dynamic_field_info set_field_just field_just new_field dup_field
link_field free_field set_field_opts field_opts_on field_opts_off
field_opts set_field_userptr field_userptr field_arg form_request_name
invariably varies (:-) between different curses(3) libraries and
operating systems. This document describes the interface itself, and
assumes that you already know how your system's curses(3) library
works.
=head2 Unified Functions
Many curses(3) functions have variants starting with the prefixes
I<w->, I<mv->, and/or I<wmv->. These variants differ only in the
explicit addition of a window, or by the addition of two coordinates
that are used to move the cursor first. For example, C<addch()> has
three other variants: C<waddch()>, C<mvaddch()>, and C<mvwaddch()>.
The variants aren't very interesting; in fact, we could roll all of
the variants into original function by allowing a variable number
of arguments and analyzing the argument list for which variant the
user wanted to call.
Unfortunately, curses(3) predates varargs(3), so in C we were stuck
with all the variants. However, C<Curses> is a Perl interface, so we
are free to "unify" these variants into one function. The section
L<"Available Functions"> below lists all curses(3) functions C<Curses>
is I<unified>. If so, it takes a varying number of arguments as
follows:
=over 4
C<function( [win], [y, x], args );>
I<win> is an optional window argument, defaulting to C<stdscr> if not
specified.
I<y, x> is an optional coordinate pair used to move the cursor,
defaulting to no move if not specified.
I<args> are the required arguments of the function. These are the
arguments you would specify if you were just calling the base function
and not any of the variants.
=back
This makes the variants obsolete, since their functionality has been
merged into a single function, so C<Curses> does not define them by
=over 4
addstring("Hâ½llâ¡, Wâ¡rld") || die "addstring failed";
=back
=head3 C<instring>
This returns a Perl string (or C<undef> on failure) holding the characters
from the current cursor position up to the end of the line. It uses
C<winnwstr()> if available, and otherwise C<innstr()>.
=over 4
my $s = instring();
die "instring failed" unless defined $s;
=back
=head3 C<ungetchar>
panel_userptr No
del_panel No
set_menu_fore No
menu_fore No
set_menu_back No
menu_back No
set_menu_grey No
menu_grey No
set_menu_pad No
menu_pad No
pos_menu_cursor No
menu_driver No
set_menu_format No
menu_format No
set_menu_items No
menu_items No
item_count No
set_menu_mark No
menu_mark No
new_menu No
free_menu No
item_opts No
item_userptr No
set_item_userptr No
set_item_value No
item_value No
item_visible No
menu_request_name No
menu_request_by_name No
set_menu_spacing No
menu_spacing No
pos_form_cursor No
data_ahead No
data_behind No
form_driver No
set_form_fields No
form_fields No
field_count No
move_field No
new_form No
free_form No
set_new_page No
CursesBoot.c view on Meta::CPAN
C_NEWXS("Curses::panel_userptr", XS_Curses_panel_userptr);
C_NEWXS("Curses::del_panel", XS_Curses_del_panel);
C_NEWXS("Curses::set_menu_fore", XS_Curses_set_menu_fore);
C_NEWXS("Curses::menu_fore", XS_Curses_menu_fore);
C_NEWXS("Curses::set_menu_back", XS_Curses_set_menu_back);
C_NEWXS("Curses::menu_back", XS_Curses_menu_back);
C_NEWXS("Curses::set_menu_grey", XS_Curses_set_menu_grey);
C_NEWXS("Curses::menu_grey", XS_Curses_menu_grey);
C_NEWXS("Curses::set_menu_pad", XS_Curses_set_menu_pad);
C_NEWXS("Curses::menu_pad", XS_Curses_menu_pad);
C_NEWXS("Curses::pos_menu_cursor", XS_Curses_pos_menu_cursor);
C_NEWXS("Curses::menu_driver", XS_Curses_menu_driver);
C_NEWXS("Curses::set_menu_format", XS_Curses_set_menu_format);
C_NEWXS("Curses::menu_format", XS_Curses_menu_format);
C_NEWXS("Curses::set_menu_items", XS_Curses_set_menu_items);
C_NEWXS("Curses::menu_items", XS_Curses_menu_items);
C_NEWXS("Curses::item_count", XS_Curses_item_count);
C_NEWXS("Curses::set_menu_mark", XS_Curses_set_menu_mark);
C_NEWXS("Curses::menu_mark", XS_Curses_menu_mark);
C_NEWXS("Curses::new_menu", XS_Curses_new_menu);
C_NEWXS("Curses::free_menu", XS_Curses_free_menu);
CursesBoot.c view on Meta::CPAN
C_NEWXS("Curses::item_opts", XS_Curses_item_opts);
C_NEWXS("Curses::item_userptr", XS_Curses_item_userptr);
C_NEWXS("Curses::set_item_userptr", XS_Curses_set_item_userptr);
C_NEWXS("Curses::set_item_value", XS_Curses_set_item_value);
C_NEWXS("Curses::item_value", XS_Curses_item_value);
C_NEWXS("Curses::item_visible", XS_Curses_item_visible);
C_NEWXS("Curses::menu_request_name", XS_Curses_menu_request_name);
C_NEWXS("Curses::menu_request_by_name", XS_Curses_menu_request_by_name);
C_NEWXS("Curses::set_menu_spacing", XS_Curses_set_menu_spacing);
C_NEWXS("Curses::menu_spacing", XS_Curses_menu_spacing);
C_NEWXS("Curses::pos_form_cursor", XS_Curses_pos_form_cursor);
C_NEWXS("Curses::data_ahead", XS_Curses_data_ahead);
C_NEWXS("Curses::data_behind", XS_Curses_data_behind);
C_NEWXS("Curses::form_driver", XS_Curses_form_driver);
C_NEWXS("Curses::set_form_fields", XS_Curses_set_form_fields);
C_NEWXS("Curses::form_fields", XS_Curses_form_fields);
C_NEWXS("Curses::field_count", XS_Curses_field_count);
C_NEWXS("Curses::move_field", XS_Curses_move_field);
C_NEWXS("Curses::new_form", XS_Curses_new_form);
C_NEWXS("Curses::free_form", XS_Curses_free_form);
C_NEWXS("Curses::set_new_page", XS_Curses_set_new_page);
CursesFun.c view on Meta::CPAN
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("menu_pad");
XSRETURN(0);
#endif
}
/* menu_cursor */
XS(XS_Curses_pos_menu_cursor)
{
dXSARGS;
#ifdef C_POS_MENU_CURSOR
c_exactargs("pos_menu_cursor", items, 1);
{
MENU * menu = c_sv2menu(ST(0), 0);
int ret = pos_menu_cursor(menu);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("pos_menu_cursor");
XSRETURN(0);
#endif
}
/* menu_driver */
XS(XS_Curses_menu_driver)
{
dXSARGS;
CursesFun.c view on Meta::CPAN
XSRETURN(1);
#else
c_fun_not_there("menu_spacing");
XSRETURN(0);
#endif
}
/* Form functions */
/* form_cursor */
XS(XS_Curses_pos_form_cursor)
{
dXSARGS;
#ifdef C_POS_FORM_CURSOR
c_exactargs("pos_form_cursor", items, 1);
{
FORM * form = c_sv2form(ST(0), 0);
int ret = pos_form_cursor(form);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("pos_form_cursor");
XSRETURN(0);
#endif
}
/* form_data */
XS(XS_Curses_data_ahead)
{
dXSARGS;
E panel_userptr(0)
E del_panel(0)
E set_menu_fore(0,0)
E menu_fore(0)
E set_menu_back(0,0)
E menu_back(0)
E set_menu_grey(0,0)
E menu_grey(0)
E set_menu_pad(0,0)
E menu_pad(0)
E pos_menu_cursor(0)
E menu_driver(0,0)
E set_menu_format(0,0,0)
E menu_format(0,&LINES,&LINES)
E set_menu_items(0,0)
E menu_items(0)
E item_count(0)
E set_menu_mark(0,0)
E menu_mark(0)
E new_menu(0)
E free_menu(0)
E item_opts(0)
E item_userptr(0)
E set_item_userptr(0,0)
E set_item_value(0,0)
E item_value(0)
E item_visible(0)
E menu_request_name(0)
E menu_request_by_name(0)
E set_menu_spacing(0,0,0,0)
E menu_spacing(0,&LINES,&LINES,&LINES)
E pos_form_cursor(0)
E data_ahead(0)
E data_behind(0)
E form_driver(0,0)
E set_form_fields(0,0)
E form_fields(0)
E field_count(0)
E move_field(0,0,0)
E new_form(0)
E free_form(0)
E set_new_page(0,0)
( run in 0.367 second using v1.01-cache-2.11-cpan-4d50c553e7e )