рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдФрд░ рд╡реЗрдм рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рд╕рдВрднрд╡рддрдГ рдХрдВрд╕реЛрд▓ рд╕реЗ рд╕рд╛рдЗрдЯ рдХреЛ рдкреНрд░рд╢рд╛рд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп-рд╕рдордп рдкрд░ php рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВред рднрд╛рд╖рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрдВрд╕реЛрд▓ рд╕реЗ рдкрдврд╝рддрд╛ / рдкрдврд╝рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди
ncurses рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рдПрдХ рдЬрдЯрд┐рд▓ рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рдХрдВрд╕реЛрд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЯрд░реНрдорд┐рдирд▓реЛрдВ рдореЗрдВ рд╕рдорд╛рди рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред
PHP рдмрд╣реБрдд рд╣реА рд▓рдЪреАрд▓реА рдФрд░ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рд╣реИ, рдЗрд╕рдХреА рдорджрдж рд╕реЗ рдЖрдк рдРрд╕реА рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рджреВрд╕рд░реА рднрд╛рд╖рд╛рдУрдВ (рдкрд░реНрд▓ / рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдЖрджрд┐) рдореЗрдВ рд╕рдорд╛рди рдХреЗ рд╕рд╛рде рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
Ncurses рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЕрджреНрднреБрдд рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЯрд░реНрдорд┐рдирд▓ php рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдПрдХ рдирдП рд╕реНрддрд░ рдкрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИред
рд▓реЗрдЦ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЖрдкрдХреЛ php рдореЗрдВ рдХрдВрд╕реЛрд▓ рдпреВрдЯрд┐рд▓рд┐рдЯреА рд▓рд┐рдЦрдиреЗ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ "рдкреБрд╢" рджреЗрдирд╛ рд╣реИ рдЬреЛ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдПрдЧрд╛ред рдореИрдВ рдХреЗрд╡рд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рджрд┐рдЦрд╛рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдореИрдВ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдореЗрдВ ncurses рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЖрдзрд╛рд░ рджреЗрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реВрдВред
рдпрд╣ рд▓реЗрдЦ рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣реИ?
рд╕рд╛рдордЧреНрд░реА рдЕрдиреБрднрд╡реА php рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИ рдЬреЛ рдПрдХ рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рдХрдВрд╕реЛрд▓ php рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддрд╛ рд╣реИред
(рдЕрдиреБрд╡рд╛рджрдХ рдХрд╛ рдзреНрдпрд╛рди рджреЗрдВ: рд╕рд╛рдордЧреНрд░реА рдХрд┐рд╕реА рднреА рд╕реНрддрд░ рдХреЗ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ, рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ)редрд╕реАрдЦрдиреЗ рдХреЗ рд╡рд┐рд╖рдп
рдЗрд╕ рд▓реЗрдЦ рд╕реЗ рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ:
- Ncurses рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдВрдбреЛ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд░реЗрдВ
- рдХрдИ рд╡рд┐рдВрдбреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЯрд░реНрдорд┐рдирд▓ рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЙрдирдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП
- рдХреИрд╕реЗ "рдХреАрд╕реНрдЯреНрд░реЛрдХреНрд╕" рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП
- рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВ рдЬреЛ рдЯреНрд░реИрд╕рд░реВрдЯ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ, ncurses рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рд╕рднреА рдЕрдзреНрдпрдпрди рдХреА рдЧрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
рдкрд░рд┐рднрд╛рд╖рд┐рдд
- Ncurses (рдирдП рд╢рд╛рдк) рдПрдХ рдореБрдлреНрдд рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ рдЬреЛ рд╢рд╛рдк (рд╕рд┐рд╕реНрдЯрдо рд╡реА рд░рд┐рд▓реАрдЬрд╝ 4.0) рдХреА рдирдХрд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХред рдпрд╣ Terminfo рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдкрд░рд┐рдЪрд┐рддрддрд╛, рд░рдВрдЧ, рдХрдИ рдмреИрдХрд▓рд╛рдЗрдЯрд┐рдВрдЧ, рдлрд╝рдВрдХреНрд╢рди рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдФрд░ рдЕрдиреНрдп рд╕рднреА SYSV рд╢рд╛рдк рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдиреЗ linux рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдк рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдпрд╣ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: рдордзреНрдпрд░рд╛рддреНрд░рд┐ рдХрдорд╛рдВрдбрд░,
ncftp, iptraf, trafshow рдФрд░ рдХрдИ рдЕрдиреНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП ncurser рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред - рдПрдХ рдЦрд┐рдбрд╝рдХреА рдХрд╛ рдорддрд▓рдм рдХреЗрд╡рд▓ рдПрдХ рдЯрд░реНрдорд┐рдирд▓ рдЕрдиреБрднрд╛рдЧ рд╣реИ рдЬреЛ рдирд░реНрд╕реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд▓реЗрдЦрдХ рд╕реЗ
PHP рдореЗрдВ
ncurses рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрд╣реБрдд рд╕реАрдорд┐рдд рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХреБрдЫ рдХрд╛рд░реНрдп рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВред
Ncurses рдХреЗ рд╕рд╛рде рдЕрдиреБрдкреНрд░рдпреЛрдЧ C рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╢реИрд▓реА рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рд╡реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдереЗ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВред
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ C рдпрд╛ C ++ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рдЕрдиреБрднрд╡ рд╣реИ, рддреЛ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА
ncurses рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ PHP рдЬреИрд╕реА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЧрдИ рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░
ncurses рдХрд┐рддрдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЖрдкрдХреЛ рдХреНрдпрд╛ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рд┐рдП
рдЖрдкрдХреЛ рдПрдХ рдпреВрдирд┐рдХреНрд╕ рдЬреИрд╕реА рдкреНрд░рдгрд╛рд▓реА рдкрд░
-with-ncurses
рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд PHP рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рднреА рдЯрд░реНрдорд┐рдирд▓ рд░рдВрдЧ рдЙрддреНрдкрд╛рджрди рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд▓реЗрдЦ рдореЗрдВ рд░рдВрдЧреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЯрд░реНрдорд┐рдирд▓ рдХреЛ
рд░реАрд╕реЗрдЯ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде "рд░реАрд╕реЗрдЯ" рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдпрджрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ рдФрд░
ncurses_end()
рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХрд╛ рдЯрд░реНрдорд┐рдирд▓ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдХреНрд░рдо рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХ рд╡рд┐рдВрдбреЛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ PHP рдПрдХ рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛ рд╕рдХрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕рдорд╛рди рд╣реИрдВрдбрд▓рд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдЪрд▓реЛ рдПрдХ рдЬрдЯрд┐рд▓ рдПрдХ рдкрд░ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕рд░рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореБрдЦреНрдп рд╡рд┐рдВрдбреЛ рдмрдирд╛рдПрдВ рдЬреЛ рд╕рднреА рдЙрдкрд▓рдмреНрдз рд╕реНрдерд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧреАред рдлрд┐рд░ рд╕реНрдХреНрд░реАрди рдХреЗ рдмреАрдЪ рдореЗрдВ рдПрдХ рдЫреЛрдЯреА рдЦрд┐рдбрд╝рдХреА рдЬреЛрдбрд╝реЗрдВ рдФрд░ рд╡рд╣рд╛рдВ рдкрд╛рда рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рд░рдЦреЗрдВред рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
рдЖрдкрдХреЛ
ncurses_init();
рдХреЙрд▓ рдХрд░рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
ncurses_init();
ncurses рдореЛрдб рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдЗрд╕рдХреЗ рдмрд┐рдирд╛, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп, PHP рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреЛ рд╡рд┐рдВрдбреЛ рдФрд░ рдПрдХ рд▓рд╛рдЗрди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП <?php
рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдореБрдЦреНрдп рдЦрд┐рдбрд╝рдХреА рдлрд┐рд░ рд╕реЗ рдкреВрд░реА рдЬрдЧрд╣ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрдЧреАред
рдЕрдм рдЖрдк рдХрд┐рд╕реА рдХреБрдВрдЬреА рдХреЛ рджрдмрд╛рддреЗ рд╕рдордп рдХреБрдЫ рдХреНрд░рд┐рдпрд╛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЬрдм рдЖрдк рдПрдХ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП esc (27 ascii рдХреЛрдб) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред
ESC рджрдмрд╛рдХрд░ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП,
$pressed = ncurses_getch();
рдХреЗ рдмрдЬрд╛рдп рдЗрд╕ рдХреЛрдб рдХреЛ рдЬреЛрдбрд╝реЗрдВ
$pressed = ncurses_getch();
while (true) { $pressed = ncurses_getch();
рдЕрдм рдпрджрд┐ рдЖрдк esc рджрдмрд╛рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЕрдиреНрдпрдерд╛ рджрдмрд╛рдП рдЧрдП рдХреБрдВрдЬреА рдХрд╛ ascii рдХреЛрдб рдПрдХ рдЫреЛрдЯреА рд╡рд┐рдВрдбреЛ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдЧрд╛ред
рдЖрдк
ncurses_refresh();
рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреЛрдб рд░рдЦрдХрд░
рд╣реЗрдбрд░ рдЬреЛрдбрд╝ рд╕рдХрддреЗ
рд╣реИрдВ ncurses_refresh();
:
ncurses_attron(NCURSES_A_REVERSE); ncurses_mvaddstr(0,1,"My first ncurses application"); ncurses_attroff(NCURSES_A_REVERSE);
рдЖрдк REVERSE рдореЛрдб (рд░рдВрдЧ рдФрд░ рдкреГрд╖реНрдарднреВрдорд┐ рдкрд░рд┐рд╡рд░реНрддрди рд╕реНрдерд╛рди) рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИрдВ, DIM, UNDERLINE рдФрд░ рдЕрдиреНрдп рднреА рд╣реИрдВред
рдЖрдк рдореЗрдиреВ рд╕реЗ рдПрдХ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдЪрдпрди рдЬреЛрдбрд╝рдХрд░ рдЖрд░рд╛рдо рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдореЗрдиреВ рдмрдирд╛рдПрдБ
рдХрдИ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рдПрдХ рдореЗрдиреВ рдФрд░ рдЙрд╕рдореЗрдВ рд╕реЗ рдЪреБрдирдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реЛрддреА рд╣реИред рдЕрддреАрдд рдореЗрдВ, "рд╢реБрджреНрдз" PHP рдореЗрдВ, рд╣рдо рдХреЗрд╡рд▓ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рдереЗ, рдФрд░ рд╡рд╛рдВрдЫрд┐рдд рдХреА рд╕рдВрдЦреНрдпрд╛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рдереЗред рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдРрд╕рд╛ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд┐рдХрд▓реНрдк рдЕрдзрд┐рдХ рд╕рд╣рдЬ рдЬреНрдЮрд╛рди рдпреБрдХреНрдд рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЪрдпрди рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдореЗрдиреВ рдкреНрд░рджрд░реНрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ <?php define('ESCAPE_KEY', 27); $ncurse = ncurses_init(); $fullscreen = ncurses_newwin ( 0, 0, 0, 0); ncurses_border(0,0, 0,0, 0,0, 0,0); $small = ncurses_newwin(10, 30, 7, 25); ncurses_wborder($small,0,0, 0,0, 0,0, 0,0); ncurses_attron(NCURSES_A_REVERSE); ncurses_mvaddstr(0,1,"My first ncurses application"); ncurses_attroff(NCURSES_A_REVERSE); ncurses_refresh(); $currently_selected = 0; $menu = array('one', 'two', 'three', 'four'); while (true) { for($i=0; $i<count($menu); $i++){ $out = $menu[$i]; if($currently_selected == intval($i)){ ncurses_wattron($small,NCURSES_A_REVERSE); ncurses_mvwaddstr($small, 1+$i, 1, $out); ncurses_wattroff($small,NCURSES_A_REVERSE); } else { ncurses_mvwaddstr($small, 1+$i, 1, $out); } } ncurses_wrefresh($small); $pressed = ncurses_getch(); if ($pressed == NCURSES_KEY_UP) { $currently_selected--; if ($currently_selected < 0) $currently_selected = 0; } elseif ($pressed == NCURSES_KEY_DOWN) { $currently_selected++; if ($currently_selected >= count($menu)) $currently_selected = count($menu)-1; } elseif($pressed == ESCAPE_KEY) { break; } else { ncurses_mvwaddstr($small, 5, 5, $pressed); } } ncurses_end();
рдЖрдк рдПрд░реЛ рдмрдЯрди рдХреЗ рд╕рд╛рде рдкрд░рд┐рдгрд╛рдореА рдореЗрдиреВ рдХреЛ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрд╕реНрдХ рдХреЗ рд╕рд╛рде рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдм рдЖрдк рд╢рд╛рдпрдж рдХрдВрд╕реЛрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдЖрдк рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдкрд░реЛрдХреНрдд рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдХреБрдЫ рдХреЛ рдЬрд╛рдирддреЗ рд╣реБрдПред рдкрд╛рда рдореЗрдВ рдЖрдЧреЗ, рд╣рдо рдПрдХ рдЙрдкрдпреЛрдЧреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВрдЧреЗ рдЬреЛ рдЖрдЧреЗ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБ рд╣реЛрдЧрд╛ред
рд╕рднреА рдПрдХ рд╕рд╛рде
Php.net рдиреЗ ncurses рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ 119 рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛ рд╣реИред рдиреАрдЪреЗ рджреА рдЧрдИ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдФрд░ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдВрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдореИрдВ рдиреЛрдЯ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдЪрд╛рд░ рдЧрд╛рдпрдм рд╣реИрдВред
(рдЕрдиреБрд╡рд╛рджрдХ рдХрд╛ рдиреЛрдЯ: рдлрд┐рд▓рд╣рд╛рд▓, рд╕рднреА рдХрд╛рд░реНрдп php.net рдкрд░ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдХреЗ рдмрд┐рдирд╛)редрд╕рдорд╛рд░реЛрд╣ | рд╡рд┐рд╡рд░рдг | рдкреНрд░рд▓реЗрдЦрди |
---|
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 (рд╕рдВрд╕рд╛рдзрди рд╡рд┐рдВрдбреЛ, рдЗрдВрдЯ рд╡рд╛рдкрд╕реА рд╡рд╛рдИ, рдЗрдВрдЯ рд░рд┐рдЯрд░реНрди рдПрдХреНрд╕); | рдЪрд░ 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 (рд╕рдВрд╕рд╛рдзрди рд╡рд┐рдВрдбреЛ, рдЗрдВрдЯ рдмрд╛рдпрд╛рдВ, рдЗрдВрдЯ рд░рд╛рдЗрдЯ, рдЗрдВрдЯ рдЯреЙрдк, рдЗрдВрдЯ рдмреЙрдЯрдо, рдЗрдиреНрдЯрд▓ tl_corner, int tr_corner, int bl_corner, int br_corner); | рдПрдХ рдорд╛рдзреНрдпрдорд┐рдХ рдЦрд┐рдбрд╝рдХреА рдХреЗ рд▓рд┐рдП рдПрдХ рдлреНрд░реЗрдо рдЦреАрдВрдЪрддрд╛ рд╣реИред | - |
ncurses_wattron (рд╕рдВрд╕рд╛рдзрди рд╡рд┐рдВрдбреЛ, рдЗрдВрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛) | Ncurses_attron рдХреА рдкрд╣рдЪрд╛рди , рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛ рд╡рд┐рдВрдбреЛ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИ | - |
ncurses_mvwaddstr | рдПрдХ рдорд╛рдзреНрдпрдорд┐рдХ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдбрд╛рд▓рддрд╛ рд╣реИ | www.php.net/manual/en/function.ncurses-mvwaddstr.php |
ncurses_wattroff (рд╕рдВрд╕рд╛рдзрди рд╡рд┐рдВрдбреЛ, рдЗрдВрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛) | Ncurses_wattroff рдХреЗ рд╕рдорд╛рди, рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛ рд╡рд┐рдВрдбреЛ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ | - |
ncurses_wrefresh | рдкреГрд╖реНрдарднреВрдорд┐ рд╡рд┐рдВрдбреЛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рддрд╛ рд╣реИред | www.php.net/manual/en/function.ncurses-wrefresh.php |
ncurses_getch | рдХреАрдмреЛрд░реНрдб рдпрд╛ рдорд╛рдЙрд╕ рдЗрдирдкреБрдЯ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред | www.php.net/manual/en/function.ncurses-getch.php |
рд╕реБрдкреАрд░рд┐рдпрд░ рдЯреНрд░реЗрд╕рд░рдЖрдЙрдЯ
рдЕрдм рдЪрд▓реЛ рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рддреЗ рд╣реИрдВ: рдкреНрд░рддреНрдпреЗрдХ рдХреВрдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЙрддреНрдкрд╛рджрди рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЗрдЦрдХред
рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ
zend.com (рдЕрдзрд┐рдХрддрдо 10 рдЫрд▓рд╛рдВрдЧ) рдХреЗ рд▓рд┐рдП
рдЯреНрд░реЗрд╕рд░рдЖрдЙрдЯ рдЪрд▓рд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХрд▓ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЖрдк рддреАрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рддрддреНрд╡реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдм рдЖрдк рдПрдВрдЯрд░ рджрдмрд╛рддреЗ рд╣реИрдВ, рддреЛ рдиреАрдЪреЗ рдХреА рд╡рд┐рдВрдбреЛ рдореЗрдВ рдЗрд╕ рдЖрдИрдкреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджрд┐рдЦрд╛рдИ рдЬрд╛рдПрдЧреАред Esc рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд╛рдордЧреНрд░реА рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ
рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ рдФрд░
ncurses рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рд╣рдордиреЗ рдорд╛рдЙрд╕, рд░рдВрдЧреЛрдВ рдФрд░ рдХрдИ рдЕрдиреНрдп рдЖрдЙрдЯрдкреБрдЯ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рд╢рд╛рдпрдж рдЖрдк рдЗрд╕ рдЖрдЙрдЯрдкреБрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рд╕реЗрдЯ рдмрдирд╛рдПрдВрдЧреЗред рдПрдХ рд╢реБрд░реБрдЖрдд рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рджреЛ рдХрд╛рд░реНрдп рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд╕рд░рд▓ рдХрд░реЗрдЧрд╛ред рдЖрдк рдкреИрдирд▓ рдирд┐рд░реНрдорд╛рдг, рд╣реЗрдбрд┐рдВрдЧ рдбреНрд░рд╛рдЗрдВрдЧ, рдпрд╛ рдЙрдирдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
function left_window($size=15){ global $fullscreen; ncurses_getmaxyx($fullscreen, $MAX_Y, $MAX_X); $c = ncurses_newwin ($MAX_Y-2 ,$size, 1, 1); ncurses_wborder($c,0,0, 0,0, 0,0, 0,0);
рдПрдХ рдЕрдЪреНрдЫреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╣реИ!
рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ
- www.opengroup.org/onlinepubs/007908799/xcurses/curses.h.html ncurses рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╣реИ, рдЬреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рд╕рдВрджрд░реНрдн рд╣реЛрдЧрд╛ред
- C. рдореЗрдВ ncurses рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╕рд╛рдордЧреНрд░реА рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХрдИ PHP рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
- рдФрд░ рд╣рдореЗрд╢рд╛
man ncurses
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд╕рд╣рд╛рдпрддрд╛ рдкреГрд╖реНрда рд╣реЛрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП man wborder
рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ
Ncurses рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ- Pecl рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред Ubuntu рдореЗрдВ php5-dev рдкреИрдХреЗрдЬ, рдЖрд░реНрдХ рдореЗрдВ php-pear
- рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реНрд╡рдпрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
pecl install ncurses
( pecl install ncurses
рдЕрдзрд┐рдХрд╛рд░, рдЗрд╕рд▓рд┐рдП sudo рдХреЗ рд╕рд╛рде) - рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред рдЕрдкрдиреЗ php.ini рдореЗрдВ рд▓рд╛рдЗрди "рдПрдХреНрд╕рдЯреЗрдВрд╢рди = ncurses.so" рдЬреЛрдбрд╝реЗрдВ
рдореВрд▓ рд▓реЗрдЦ:
devzone.zend.com/173/use-ncurses-in-phpрдХреГрдкрдпрд╛ рдкреАрдПрдо рдореЗрдВ рдЯрд╛рдЗрдкреЛ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдВ