�������� � ncurses �� C++
� ������� ������ ������������: ����������� ������� ���������� ������������ ���� � ���������� ��� DOS �� C++, ��������� ��� ������. �� ������� ���� �� ������������, ������� ������, ����� DOS � Turbo Vision ���� ��, ����� ������ ���� � �������, ������������� ������ � ���������� � �������� ������������ ����������� ������������������ ���������� ncurses ��� ��������� �������������, � ��� � ������� � ��������.
��� ����� ncurses � ��� ��� �������
Ncurses (������������ ��������) � ��� ����������, ������� ����������� �������� �������� ����������� �� ������������� � ��������� ��� ���������� ������ �� ������ � ���, ��������, ����� ������������ ������������������ �������� ����� ������� ��������� ��� ����, ����� ����� ��������� ^[[ 0 ; 31 ; 40 m������� ������. ���� ����, ��� ��� ��������� ������ ���������, ��� ��� ��� � ��� ������ ���������� ������ ������. ������, ����� ���-�� ��������� �����, ������������ UNIX ������ ������� � ����������� ����� termcap (� � ������� terminfo) ��� �� �����������, ������� ������������� ���������� ��������. ���� ���� ��������� ����������� ��������, ����� ������������ ������������������ ����� ��������, � ���� ������� � ���������� ncurses, �������� ������������-������������ �� ��������� ������� ���� ���, ��� ������, �����-��������������. �������, ������ ���������� �����������, � ������� ��� ���������� ������������ ncurses, �������� htop, GNU Midnight Commander � ���������� ����������� ��������� ������������ ���� Linux, ���� � �����-�� �� ��� ����������� ������.
��� ����������
Linux
Windows
��� Windows � DOS ���� PDCurses, ������� ����������� ��������� ���������� � ncurses. ����� �������� �� ��������, ��� ��� ���� ��� ����������� ���������� �� ���.
��������� ��������
��� ���������� �������� ����� �� �������� ��������� ���� -lncurses , ����� �� ��������� �������������. �������� ���������� ��������� � ������������� � �����������, � �������� ������.
Hello World!
��� ��� �������� ������ � printw � refresh , ��, ������ �������. ���� � ���, ��� ��� ������������������ ����� �����, ���� ����������� ������� ������� ��� ����������� �������� �� ��������� ������ �� ������������ ������ (� �������), � ������ ����� (����� refresh ) �� ��������� ������ ��������� �� �������, ������� ������������� ���������� � �������� �����.
�������������
������ initscr ���� � ������ �������, ������� ����� ���������� ��� ������������ ������� ������. ���������� ���� ��������� �� ���, ����� ������ �� ������������ � ������������.
raw � cbreak
������, �������� �������� �������, ������� �������� ������������ �� �������� ������, �� ����������� �������� ���������� ������� ��������� ����� �� �� ����� �� ������. ��������� ���� ������� ��������� ��������� �������������. ������� ����������� � ���, ��� ����� �������������� ����������� ������������������ ����� CTRL-Z � CTRL-C. � raw ������ ��� �������� � ���������, �� ��������� ��������, � � cbreak ������ ��� ���������������� ��������� ��������� � ���������� ��������������� �� �������.
echo � noecho
��� ������� ������������ ����� ������������� �� �����. noecho ��������� �����, echo �������� ��������. ������ � ���������� ������������ noecho � ����� ������������ �������, ����� ������� ����������.
keypad
��������� ������ ������ F1, F2, ������� � ��. ����� �������� ��� ������������ ������, ���������� ��� keypad (stdscr, TRUE) .
curs_set;
�������� � ��������� ����������� ������� �� ������, ����� ��������� ������ ���������� curs_set (FALSE)
�����
� ncurses ���� ������� �������� ��� ������ � �������. � ������ �������, ��� ����, ����� ���������, �������������� �� � ������� ��������� ������� ������ ������, ���� ������� has_colors () , ���� ��������� ������, �� start_color() � �������. ������ ������� � ncurses � ��� �������� ����, ��� ����������, ����� ������ �� ������� � �� ����� ����. ����� ����������� ������������� ��������:
�� ������� �������� ����, ������� ����� ������� �� �������, ������, ���� ���� ������ ���������, ����� ������ ������ ��������������� �� �������:
���� | ������� |
---|---|
COLOR_BLACK | |
COLOR_RED | 1 |
COLOR_GREEN | 2 |
COLOR_YELLOW | 3 |
COLOR_BLUE | 4 |
COLOR_MAGENTA | 5 |
COLOR_CYAN | 6 |
COLOR_WHITE | 7 |
�� � ���� ����������� ����� ������������ ��������� ��� ����� ��������� �����, �� ����� ������� ����! ��� ��� ��� ��������:
RGB-�������� ����� � ��������� �� 0 �� 1000. ���� ���-�� ����� �� ���, ��� ��� �������� �� ����� �������� � �������, �� ������� init_color ������ ERR .
���� � ��� ������������ ������, ������������ � curses. ���� � ������ ��������� �� �������� �� ���� � �������� � Turbo Pascal, ������� ����� ������� �� ������. ��� ������������� ncurses, ��������� ������������ ���� stdscr , ������� �������� �������������� ��������� ��������� (���������� ������) �������� � ���� ��������. �� ��� ���� ��� ����� ����� �������� ������ ��� ������ ����, ���������� ��� ��� �������� � ������� � ��.
������ ��� ������� ������ � stdscr � ������� ������� �������. ���������� ����� refresh , �������� ������ � stdscr .
����� �������� ������ ����, ��� ���������� ����� �� �������� � ���, � �� � stdscr , �������� �������, ������� ���������� �� w � ��������� ��� �������� ����, � ������� ������������ ��������, ��� ��� ��� ���� � ������ win :
���� � ������ win ������� � ����, ��� ��� ��� ��������� �� ������ ������ � ����� � ����. ����� ��������� ���������� ����������� �� ���� ��������, ������� ����� ��������� � � stdscr , � � ������ �����.
����� �������, ���������� ������������� ������������ ��� ����������� ��������� ��� �������� ����������� � ���������, ��� ����� ��������� ������������ � ������������� � ������ ����.
���������� ���������� �� Curses
���������� � ��������� �����������, ���������� � ���������, ��-�������� ����� ��������� � ������� ����������� � ������������ � ����������� �����������. Mutt , irssi , vim , tmux � ������ ������ �������� ������������ � ������������ ������. �� CPAN ���� ������, ����������� ��������� ���������� � ��������� �����������, � ��� ����� ������ Curses , ���������� �������� � ��������������� C-���������� ncurses .
�������
��� ����� ������ ��� � �������� �����/������ ���������� �������������� ������������������� ��������� (Teletype, ��� ���������� TTY), ������� ��������� ������� ����� � ���������� � �������� �� ������ ������ �� ��������, ���������� �� ���. ����� �������� ��� ������ ����������, ��� ������� ������� ���-�����, �� ������� �� ������������� ������� ����� ���� �������� �������. ����� ������ ������������ ���������� ���� DataPoint 3300, ������� ���� �����, ����������� �������� 25 ����� �� 72 �������. �������������, ��� ���� �������� ��� ������ �� ������ ������� TTL-���������, � ���������� ������� ��������� ������ � ��������� ������ ���������� ������� ��������� ����� ����� �� ����������� ������ ���������� ����������������.
��� �������, � ������ ���������� ��� ����������� �����-���� �� UNIX-������ ������������ ��������� ����������. ��� ��������� ��������� ��������� ��������, ���� � ����� ������� ��� ������ � ����������� ���������. �������� ������������ �������� ������� � �������� ���������� �� ������ �� ��������.
���������� ��-����� �� ������ ������� ���� �������� VT100, ��������� ��������� DEC � 1978 �. �������� ����������� � �������������� ������ ����� ���������������� ���������, �������� �������� 80 ��� 132 ������� � ��� � ����������� ��� ��������� �������� �������� ASCII, � ����� ����� ����������� ������������������� (escape-�������������������), ������� ���� ��������������� ANSI � ���� ��������� ECMA-48. Escape-������������������ �������� ��� �������� �� ���� ������� Escape, ������� ��������� ����� �����, ������������ ����������� ������������������. ����������� ������������������ ��������� ����������� ������, ������� �����, �������� ������� �������� ��� ���� ������ �������� ������, �� ������� ���������� ��������� ����������� �������� ���� ���� � �������. ��������, ������������������ ����� ESC[1m ����� ������ ����� ��� ����������� ��������� ��������, � ESC[0m ���������� ��� ������������� ��������.
����������� �������������� ������������� �������� � �� ���������� �� ������ ������� ���� � �������� �������� � ��������� ���������������� �����������. � ������� �� ���������� ����������, � ��������� ���������� � ������� ASCII -�������� ����� ���� ���������� ������� ����, ���������� ����, ���� ��� �������, � ����� ������ � ���� �����.
� ������ ����� ���������� ����� ��������� �������� � ���������� ���� �� ����� ������ ��������. � 1978 �. ���� ����, ��� ������ ��� ��������� ���������� vi ��� Berkeley Unix, ������� ��� ��� ��������� ������ ����� ���������� � ��������� ���������� ��� ��������� termcap, ������� ����� ����� ������ �������� ������������ ���������� � ��������� ������������� ���������, ����������� �� ���� ���������. Termcap ����� ����������� ��������� ������ ������ ���������, ���������� ������������������ escape-����� ��� ����������� ������� � �.�. ����� �� termcap ��������� ���������� terminfo, ������� �������� ���������� ����������� termcap � ����� ������� �������� � �������� ���������. ������ terminfo �������� ������������ ��������������� � UNIX-��������.
� 1980 �. ������� ������������ �������� ���� Rogue, ������� ���� ����� ������ ����� rogue-�������� ���, � ������� ������� �������� ��������� ����������, ��������� � ��������� � ���� ���������. ���� ��� ������ ������������ ��������� �������, ������� ������������ ���������� �������, �������� � ������� ���������� ��������������� ASCII-��������� | � — . ���� �� �������������, ��� �������, ���������� ��� ���� ������ ����������, ������� ���������������� �� ������ � ���������� ����� ���������, ������� ����������� ������� ���� ��� ������ ��������, ������� �� ���� ��� ������ �� ������ � ���������� ������. ���������� �������� �������� curses (����������), ��� �������� ���������� �� �������������� �cursor optimization�. ������������� curses ���� �������� �� termcap. � ������� �� termcap, ������� ���������� �������� ��������� ����� ������ � ��������� ����������, curses ������������� �������� ������� C API.
����� ��������� ���������� pcurses � PDcurses, ������� �������� ���������� �������������� BSD curses. � 1991 �. ������ ��� pcurses ���� ����������, � � 1993 �. ��� ���� ������������� � ncurses, ��� ���� ����������� �� new curses (����� curses), � ����� ����������� � ������ ������� GNU. �� �������� � ncurses ��������� ������� ��� ������ ������ ����������������, � ��� ����� � Perl-������ Curses, ������� ��������� ������������ ���������� � Perl-����������.
������� ������������� ���������� ���������� ������������ ����� ��������� �������������, �� ��� �� ����� �������� ���������� � ���������� ������������ ��� ���� �������� ������� � ����, ��� ���� ������� ��������� ��������� � ���������, ������� ����������� ������������� ������ ������ ����� �������, ��������, X Window. ��� ��������� ���������� ������������ ���������, ���������� ��� ������ � ���������, � � ������ ��������. �������� ���������� ����������� ��������� ��������� � xterm, rxvt, � ����� ����������� gnome-terminal � konsole.
������������� ���������� ���������� � ��������� ����������� ��������� � �� ����������� ����. ����� ���������� ��� top, vim, emacs, mutt, irssi, moc, midnight commander ���������� ������ � ������ �� ������������ ���� ������ ������������. ������������ ���������� ����� �������� ������ ���������������� ����� � ������ ���� �� ����� ������ ���������, ������� ���������� VNC ��� RDP. � � ������� �� ���-�����������, �� ������� �� ������� ������� ���������� ����������� ������ � ������������ ����������� ��� ����, ����� ������������� ��������� ����������� ����������� ���������.
���������� ���������
��������� ����������� ��������� �������� �������� ������������ � ������������ ������� ���������� �� ���������������� ������, �� � UNIX-�������� ������� ��������� �������������� ���� ���������� ���� /dev/tty* . ��������� ������� ���� �������� �� /dev/tty[0..NN] , ���������������� ����� �� /dev/ttyS[0..NN] � �.�. (�������� �������� �������� �� ���������� ���������� UNIX-�������). ��� ������� ������ ���������� ���������� ����������� ��������� �������� ������, ����������� ������������������� � ������ ��������. ������� ��������� ������ ������ ���������� ����� ������� � ������� ������� stty :
��� ���������, ������� ���������� ������ � ����������, �� ��������� � �����-�� ���������� �����������, ��������� ��� ���������� ���������������. � ����������� UNIX-�������� ��� ��������� ��������� �� ������� �������� ���� ���������� ��������������� � �������� ������� devpts, �������� /dev/pts/0 , c ������� ������������� ����������� �������� ����������� �����/������ STDIN , STDOUT � STDERR ����������� ���������� �������� ���������. �������� ��������� ����������, ����� ����� ��� ���������, ����� ����� ������ ������ (���������� ����� � �������� � ������) � ������ ���������. ��� ���������� �� � ��������������� ���������� ��� �������� ������� �������� �� �� � ��������������� ��� �� ����� ������ �������� ���������.
Perl Curses
Perl-������ Curses �������� �������������� �������� � �-���������� ncurses. �� ������������ POD-������������ ����������� ���������� ������, ��� ��������������� ���������� �� Curses , ��������� ���������������, ��� �� ������ ������������ ������������ �� ����� C-���������� ncurses.
������ Curses , �� CPAN ���������� ��� ��������� �������������, ������� ��������� ������������� ���������� � ��������� �����������. ����� �� ���������� Curses , �� ����� ����� ��������������� ���������, ������� ��� ����������. ��� ����� ������ ��� Curses::UI � Curses::Toolkit . ���� ����� ������, ������� ������ �� ��������� � ncurses, ��������, Tickit . ���� �� ���������� �������� ������� ���������� ����������, ��� ����� ������� �������������� ��������� ����, ��������, ����, ����, ������� ��������� ������ �� �������, �� ��� ������, ��������, �������� ������ ����� ��� �������������. ���� �� ����� ������ �������� ������������ ������������ ������ ����������, ���, ��������, � ���������� top , �� ������������� Curses ����� ���� ��������������.
���������� Curses �������� � �������, ������� �������������� � ���� ������������� �������, ������ ������� ������� ������ � �������� �� ������ ��� ������ �������. ������ ���������, ������� (0,0), ����� ����� ������� ���� ������. �� ������ ����� ���� ������ ���� ��� ��������� ���� � ������� � ������������� ��������, ��� ������� ���������� ���� �������� ������.
����� � Curses
��������� ������� ���������� �������������� ������ ���������� � ��������� ������:
initscr � ������� ���������� ����� curses, ������ ���� �� ���������, ���������� ������� ������ � ������������� ������� ������� ������� � ����� ������� ���� (0,0);
cbreak � raw � ������� ��������� �������������� ����, � ���������� ����� �������� ���������� � ������� ��������, ��� ���� raw ����� ������������� � ����������� ��������� ������, ����� ��� Ctrl+C � Ctrl+Z ;
echo � noecho � �������� � ��������� ����� ����, �.�. ����� �� ����� �������� � ���������� ��������.
���������� Curses ����� ��-���������, � ���� ������ ������ ������������� ���� �� ��������� ����� initscr ����� ������������ ����� new :
������ ������� �-���������� ncurses ����� ��������� �������� ����� � ��� �� ������� � ���������� w, mv, � wmv. ������� �������������, ��� ���������� �����-���� �������������� ��������: w � ������ ����, mv � ���������� y, x ������� �������. � Perl-���������� Curses ����� �������� ������� ���� ���������� � ����, �� � ������������� ����������� ���� � ���������:
����� ������� �������� �������� ���������������, � �� ����� ������������ ��� ������ ��� ���������������� � �������������� ��-����������. � ������������ Curses ������� ������ ������ ������� � �������, ����� �� ��� �������� ����������������, � ����� � ���. �� ���� ����������� �������� ����� �������������� ��-���������, ������� ���� ������������ ������ ����� �������, �� ��� ���� �������������, ��� ������� �� �������� ���������������.
���������� ������ ����������, ������� ������� ��������� � ����� ������, ������� ���� ������������ � ��������� ������:
���������� ������ ����. ����� keypad �� ��������� ������ � ��������� �������� ��������� ����������� ������, ����� ��� F1 , F2 � �.�. ����� getmaxyx ��������� ���������� ������������ �������� ��������� �� ������, �.�. ������ �������� ���������. ����� addstr ��������� ������� ������ �� �������� ��������� �����������. ����� refresh ���������� �� ��, ��� �� ������ �� �����. ����� getch ������� ������� ������� � ���������� �������� ������. ������� endwin ��������� ����� curses, ��������� ���������� ���������� ������.
���� � �������
���� � ������� ������������ ��� ����, ����� ���������� ����������� ��� ��������, ������� ����� ���������� ������ ����, � ����� ��� ����, ����� ��������� ���������� ������ ����.
��� �������� ������ ���� ������������ ������� newwin :
��� $rows , $cols � ���������� ������ � ������ ����, � $y , $x � ��������� ���� �� ������.
���� ����� �������������, ��� ���� � ����� ����������� ����� ������������ ������� ���� ����, ������� ���� ��������� ���������. ���� ��������� ������� ���� ������ ������� ����, �� ����� ������������ ������� �������� ������� subwin ��� derwin :
������� subwin � derwin � ���, ��� � derwin ���������� ������� �������� ������������ �������� ������ ���� ������������� ����.
��� �������� ���� ��� ������� ������������ ������� delwin
���� ����� ���������� �� ������ � ������� ������� mvwin ( mvderwin � ��� �������):
�������� ���������� ���� ����� � ������� ������� clear :
���������� ����������� ���������� ������� ���� � ������� ������� box :
��� ������ �������� ���������� ������ ��� ������������ �����, � ������ � ��������������. ���� ������������ �������� 0 (��� undef ), �� ������������ ������� ������ �� ���������.
���� ��������� ������ ��������� ������� ��� ���� ������ � ����� ����, �� ����� ��������������� �������� border :
��������
��� ������� ���������� ������� ����� ���� ����������� ��������, � ��� �����:
- A_BOLD � ����� ���������� �������;
- A_NORMAL � ���������� ����� �������;
- A_DIM � ����� ���������� �������;
- A_UNDERLINE � ������������ �����;
- A_REVERSE � ��������� �����;
- A_BLINK � ��������� �����;
- A_INVIS � ��������� �����.
�� ��� ��������� ������������ ��������� �������� (��� �������, A_NORMAL ��������� � A_DIM , � ��������� �������� ����� ���������� �������� ����������).
���������� ���������� ������� ��� ����� ��������� ����� �������� attron :
����� ���� ��� ������ ������ � ������ ���� �������� ����������� ��������� ��������. ����� ��� ��������� ��������� ����� ������������ ������� attrset , �� ������ ������� ������� ��� ������ ��������, ������� ���� �� ����� �����������:
��� ���������� ����������� ��������� ������������ ������� attroff :
�����
������ ��������� ����� ��������� �����. ��� ����, ����� ����������, ������������ �� �������� ����, ����� ������������ ������� has_colors . ���� ��������� ������ � ��������� ������������, �� ����� ������� � �������� �������� ��������� ���������������� ����� ������� ������� start_color :
��� �������� ������� �� ���� ������ (���� ���� � ���� ������) ������������ ������� init_pair :
���������� ��������� ������� ������ ��� ������ ����� �� ��� �� �������� attron :
�������� ������� ���������� 16 �������, ������ ������� ������ ������ 8, � �������������� ����� ���������� �� ���� ������������� ���������� ������� ( A_BOLD ):
���������� ����������� �������������� ����� ������� ���� � ������� ������� init_color , ������� ��� ��������� �������� ����� ������������� �������� ������������� �������������� ��������, ������� � ������ ������ � ��������� �� 0 �� 1000:
�� ��� ��������� ������������ ����� �����������, ������� ����� ���������� ������ ������� ������� ��������, ������������ �� ����� ����������� � ������� ���������, � ������� ������� can_change_color .
��������� �����
��� ��������� �������� ��������� ������� ������������ ����� getch . � ������ ���� ���� ������������ ��������� ����������� ������ ( F1 , PgUp , PgDown � �.�.) � ������� keypad(1) , �� getch ���������� �������� ��� ����������� �������, ��������, �������� 338 ��� PgDown . ���� �� ��������� ����������� ������ ���������, �� getch() ����� ���� ������ ��� �� escape-������������������ �������.
���� �� ����� ����������� ������ Unicode, �� getch ������������ ���� ������ ���� ������������������. �������������� ��� ��������� Unicode-�������, �������� ���������� ������������� �� ���� ����, ����������� ��� ���������������� ������ getch :
� Curses ���������� ��������� ��� �������������� ������, � ����� ������� KEY_F , ������������ ��� F* -������. �������� �������� ����� ����� � ������������ Curses , ��� ��� ����� ������� KEY_ .
� �-���������� ncursesw, ���� ������� get_wch , ������� ����� ������������ ���� ��������� ��������, ��, � ���������, ��� �� ���������� � Perl-������� Curses .
� ������� ������� halfdelay ����� �������, ����� ����� (� ������� ����� �������) getch ������ ������� ����� �������. ���� ����� ��������� �������� ������� �� ������, getch ����� �������� ERR (-1).
��� ��������� ������ �������� �� ������� �������� ������ (��� EOF ) ����� �������������� ������� getstr :
���������� ��������
�������� ������� ���������� ������� ����� � ������� getyx :
���� ���������� �����-���� ������� ������ �� ����� ��� �������� ���������, �� ����� ������������ ������� � ������� ������� �������. ������ ����� ����������� �� ������ � ������� ������� move :
������� ������
���������� ����������� ������� ������ ��� ��� �����. ��� �������� ���������� ���������� ��� ����������� ���������.
������� clear ������� ���� �������:
������� clrtoeol � clrtobot ������� �����, ������� � ������� ������� ������� �� ����� ������ � ����� ���� ��������������:
������� deleteln � delch ������� ������ � ������ �������������� �� ������� ������� �������:
������� insdelln ��������� ��������� ����� ������ �����, ������� � ������� ������� ������� (��� �������, ���� �������� �������������).
��������� ������� ����
Curses ��������� ������������ �������, ����������� ��� ������������� ����, ����� ��� ������� ������ � ����������� ���������. ����� ������� ��������� �������� ���� ���������� ������ ����� �������, ������� ����� ����������� ���������. �������� ��� � ������� ������� mousemask :
����������� ������� ��������, ������������ �����, ����� �� ��� �� �������� getch . ������� getmouse ��������� �������� ��������� ������������� �������, ���� ������ ���������� �� �������������� ���������� ���� (�� ����� ���� ���������), ����������� ���� � ��� ���������� � ��������������� ���� �������.
��������� ������� ������
��������� �������� ���������� ���������� ����������� ������ ������������ ���� ��������� ���������, �� �� ����� ������ ���������� ����� ����������� ��������� �������� ������, ����� ������������ ����������� ���� ��������� ��� �������� ���������. ��� ���� ������� ���������� ������ SIGWINCH , ������� �������� ��������� ��������� ���������� ���������� �� ��������� ������� ������.
���������� Curses ������������� ���������� ����� ������� � �������� ������������ ������������ ���� ��� ����� ������ ������. ������� �� ������ ��� ����� ���� ��������� ���������, ������� ��� ����������������� ���������� ����������� ����������� �������� ���������� �� ������������ ��������� �������� ������ � ������� getch ���������� �������� KEY_RESIZE :
�� ����� �������������� ���������� ������� SIGWINCH � ���� ����������, ��������� ��� ������� � ���������� ������ ���������� ����� ��������� �������.
������, ���� � �����
� ������ ������� ncurses ���������� �������������� ����������, ����������� ����������� ncurses:
- ������. ������������ ����� ����, ������� ����� ����������� ���� �����, ��� ���� ����� ������� � ����� ������� ������� ������, �.�. ����������� ������ ��������� � �������. ������ ����� ��������, ����������, ���������� ������ � ������.
- ����. ��������� ������������� ������ ����� ���������� ��������� ���� � ���������� �����������.
- �����. ��������� ��������� ��������� �������� ��� ����� ������ � ���� ��������� �����, ������� ����� ��������� � �������������.
��������� �������� ���� ���������� ����� ����� ����� ��� ��� ����� ������, �� ������ ��������, ���� ���������� ������� ��������� �����������, ����� ���������� �� ����� ������ ������������ �� CPAN, ��������, Curses::UI ��� Tickit .
���������������� � ncurses: ������ ���� 0
����������������
������ ���� ������������ 1 ����� 2013 ���� � 12:00, � ��������� ��� ��������� 9 ������ 2015 ���� � 11:49.
�������� ���������� ������ � �������������� ���������� ��������� ���������� �������� ��������� ����������� ncurses: ����������� ����������, �������� �������, ����� ������, ���� � ������� ����. ������������ ������� ���� � �������������.
����������: ��� ������ ���� ������� ������������ � ����������� ������� �Open Source� �� ������� ���������� ������������� � ��������� �� nixp.ru �� ������������ � ���������.
������ ����� �������� �����-������ ���������, �� �������� � ������������ ����������� ����������� �������� ����� Qt ��� GTK, � ������������ �������� ����������� ������ (printf, cout) �� �� ��������. ��� ����? �� ������ �������� ncurses.
� ������������ �������, � ������, ������������ ���������� ��� ��������� curses. ������ � ��������� UNIX-���� ��� ������. �� ����� �������� curses ���������� ������ CRT ��� Pascal, � �������� � ����������� ���� �������������� � ������� (�� ������ ���������) � �����������. �� �������� � �� ��������� �������� ��� ��������� pcurses, � ����� (� 1993 ����) � ncurses (new curses), ������� ������� ���������� ��� ����� ������� GNU (http://www.gnu.org/software/ncurses/ncurses.html). Ncurses ������������ �������� ������� ����������� �������� � ����� ���, ��������, �������� �������� Midnight Commander � ���-������� lynx. ������ ��������� ��� ncurses �������: ��� ���������� �������� � ����� ������������ *nix, � ����� ������� � ��� ������������ �� ������� ���� ��� ������ �����. � �����, ����� ��� ncurses � ����� �� ����!
���������� ncurses � ����� ��������� �� �� ��� �++ ����� ������. ���������� ������������ � ��������� ��������� #include , � ��� ���������� ������� -lncurses ��� ��������:
�������, ����, ����� ���� ����������� ������������ ����� ncurses. � Debian � Ubuntu ����� � ���� ���������� ncurses-dev:
��� ������ ��������, ��� ����� ��� ���� ����, ������ ������������ �����-������ ������� ������ ����� autotools ��� Scons. � ������ ��������� (� ����������� �), � �������� � ���������� ��������� ����� ������� ���� ��� ��������� SConstruct ������ ����������:
������ ��� ������� � ��� �� �������� ������� scons ����� �������������� ��� .cpp-����� � ���������� � ������������ ncurses � ������ ������� (� ������� � �other-libs�). ��� ������ � ��������� ��������� ���� ��������� � ������� root:
��� ������������� ncurses ���� ����� ���������� ��� �������:
1. initscr(); � �������������� ������ � ��������. ��� ������� ��������� �������� ����� ������, ��������� ���������� ��������� ��������� ����������, � ncurses ����� ������� ������ � �����-���� �� ��� ���� ���������� ��� ��������� � ���������������� ��� ����. ����� initscr ���������� ��������� WINDOW *, ������� ����� ����� ������������ � ������ ��������. � ��������� ��������� getyx() ��� ��������� ��������� �������, putwin() ��� ���������� ���� � ����, getwin() ��� ������ ���� �� �����, copywin() ��� ����������� ����������� ������ ���� � ������ ����� ����, initscr() ������� ����.
2. keypad (stdscr, TRUE); � ���� ��� ������� keypad(), �� ������� ������������� ������� ������ ���� F � ���������. stdscr � �����������, ������������ � ncurses ��������� �� ���� ��� ����������. ���� �� ������� keypad � ���������� TRUE, �� ������� ����� getch() ������ ���� ������� ������� ����� ���������� escape-������������������.
3. noecho(); � ���� �������, �� ����������� ������� ������ �� ����� ������������ �� ������ �������������. ��� ���������� �����, ���� �� ������ ���� ������������ ������� �� ������� (��������, ���������� ����������� ���� � ���� ��������).
��������� ������ � ����������� ncurses ������� ������� ������� endwin(), ������� ��������� ��� �������������� ����������� ������� � ������ �������� � ��������� �� ������������� ���������� ����� ����������.
��� ���������� ������� �� ������� � ����� ����� ������������ ������� getch(), � ��� ���������� �� ����������� ���� � wgetch(). ���� �������� �������� ���:
� ���� ������� ����������� ��� ��� ���� ����������� ������� �������: ��������������� �� �������, �� ���� � �� ����������� ���������. ���� ������� noecho() ���������, �� ������� ������� ����� ������������ �� ������, ����� � �� �����.
��� ������ ������ � ������� ���� ����� ���������� ������� printw(), ������� ��������� �� �� ���������, ��� � printf(), �� ���� �� ������ ������������� ����� ��� ������. ��� ����� C++ (std:string) � �������� ��������� ���������� ���� ���������� �� ����� ������� c_str(), �� ����:
��� ������ ������ ��� ������������ ������� �\n� ������ �������� � ������� ������, �� ��������� ���������� �������, ��� ��� ��������� ����� printw() � ���� ������ �������� ������� ������. ������� addch() ������ ��� ������ ������ �������, ����������� � ���������. ����� ����� ������ ��� �������� ���������� (������ ������������� � ���������� � ������� ����������� OR):
������� ������ �� �������� ����������� ����� ���:
�������� ������ � ��� ���� � ����������. ��� ��������� � ��� printw(). ��� ����� �������� ��������?
������� ����� �������� ��������� ������ ncurses, ������� (������ ����� initscr()) �������:
������ �� ��������� ������� �� 8 �������� ������ (COLOR_BLACK, COLOR_RED, COLOR_GREEN, COLOR_YELLOW, COLOR_BLUE, COLOR_MAGENTA, COLOR_CYAN, COLOR_WHITE), � ����� ���������������� ���������� ���������� COLORS � COLOR_PAIRS. ��������, ����� ������ ������ ������� ����, ������, ��� ������� �������� ����� ���������� ������� ������ � �����������, � ������� ������� � ������ � ������� �������.
��� ����� ���� ������� ��� ��� ���������� ��������� �����. ������ ����� �������� ������� ���� ���� � ������ ��� ����, � ������ � ����� ���� ���� � ������ ��� ����:
������ ��������, ��� ���� ������ �� ���������� ���������� ������. ����� ����� ������� � ����� ��� ��������, ������������ �� ������ ��������. ������� ������ �� ��������� ������� ��������� (test.cpp):
��������� ����� ����������������, ������ ������� ������� Enter ������������� ����� ‘\n�, � �� KEY_ENTER. ��� ����� ������� ������. ���� ��� ������������� �������� ������� nonl(), �� ����� ����������� Enter ��� ���:
���� �� �������� nonl(), �� ��� ���:
� ��������� KEY_ENTER ��������� � ����� �������� ������� � �����, �������� �� ������������ ‘\n� � ����� ������ �������� ��� UNIX-������.
���� � ������� ����
��� ����� ��������� �������� � ncurses ������������� ������� scanw(), getstr() � ������. ��������, ����� �������� ������ � ������ str, ����� ��������� ���:
��� ��������� ������� ���� ������� ����� �������� �������������:
����� ����� � ����������� ������� �� ������� ����� ��������� ���:
������ ������ ���������������� ��� ������������� ���������� ncurses. ���������� ����� ��� ��������������� ��������� ��� �������� ���������������� ��������� ���������� �� ������ ncurses: menus (��� ����), panels (��� ������� ��� ������������� ����), forms (��� ����� �����). ������������ ��� � ���������� ��������������:
��� ����� ��� ncurses_typeahead
(PHP 4 >= 4.1.0, PHP 5)
ncurses_typeahead — Specify different filedescriptor for typeahead checking
Description int ncurses_typeahead ( int fd )
Warning | |||||||||||||||||||||||||||||||||||||||||||||||
Warning | ||||||||||||||||||||||||||||||||||||||||||||||
������� | �������� | ������������ |
---|---|---|
ncurses_init | �������������� ncurses | www.php.net/manual/en/function.ncurses-init.php |
ncurses_newwin | ������ ����� ���� | www.php.net/manual/en/function.ncurses-newwin.php |
ncurses_getmaxyx(resource window, int return Y, int return X); |
���������� � ���������� X � Y ������������ �������� ��������� | � |
ncurses_border | ������ ����� ������ ��������� ���� | www.php.net/manual/en/function.ncurses-border.php |
ncurses_refresh | ��������� �������� ����. ��� ����������� �������������� ���� ����������� ncurses_wrefresh | www.php.net/manual/en/function.ncurses-refresh.php |
ncurses_attron | ��������� ������� � ���������� ������ | www.php.net/manual/en/function.ncurses-attron.php |
ncurses_attroff | ��������� ���������� �������� | www.php.net/manual/en/function.ncurses-attroff.php |
ncurses_mvaddstr | ������� ������ | www.php.net/manual/en/function.ncurses-mvaddstr.php |
ncurses_wborder (resource window, int left, int right, int top, int bottom, int tl_corner, int tr_corner, int bl_corner, int br_corner); |
������ ����� ��� ��������������� ����. | � |
ncurses_wattron(resource window, int attribute) |
��������� ncurses_attron, ������ ����������� ��� ���� window | � |
ncurses_mvwaddstr | �������� ������ �� �������������� ���� | www.php.net/manual/en/function.ncurses-mvwaddstr.php |
ncurses_wattroff (resource window, int attribute) |
��������� ncurses_wattroff, ������ ����������� ��� ���� window | � |
ncurses_wrefresh | �������������� �������������� ����. | www.php.net/manual/en/function.ncurses-wrefresh.php |
ncurses_getch | ��� ����� � ���������� ��� ����. | www.php.net/manual/en/function.ncurses-getch.php |
���������� traceroute
������ �������� ������������� �������� ���������: traceroute � ������� whois-���������� � ������ ������.
���� ������ ��������� traceroute �� zend.com (���� 10 �������) � ���������� ���������� � ����� ����. �� ��������� ����� ���������� � ������� �������. ��� ������� �� enter ���������� � ������ ip ����� �������� � ������ ����. �� ������� �� esc ��������� ���������� ������ ���������.
� ����������
���� ���������� ��� �������� ����� � ����� ��������� ����� ��� ������ ���������� � �������������� ncurses.
�� �� ������������� ������������� ����, ������ � ������ ������ ������� ������.
�������� �� ��������� ����� ������� ��� ������������� ���� ���������� ������. � �������� ������ ��������� ��� ��� �������, ������� �������� �������� ����. �� ������ �������� � ��� �������� �������, ��������� ���������� ��� ���-������ ���.
��� ����� ��� ncurses_typeahead
(PHP 4 >= 4.1.0, PHP 5)
ncurses_typeahead — Specify different filedescriptor for typeahead checking
Description int ncurses_typeahead ( int fd )
Внимание |
Внимание |