hn-classics/_stories/2005/10921458.md

311 lines
9.9 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[Source](http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/ "Permalink to ")
# NCURSES Programming HOWTO
### Pradeep Padala
`<[ppadala@gmail.com][1]>`
v1.9, 2005-06-20
| ----- |
| **Revision History** |
| Revision 1.9 | 2005-06-20 | Revised by: ppadala |
| The license has been changed to the MIT-style license used by NCURSES. Note that the programs are also re-licensed under this. | | |
| Revision 1.8 | 2005-06-17 | Revised by: ppadala |
| Lots of updates. Added references and perl examples. Changes to examples. Many grammatical and stylistic changes to the content. Changes to NCURSES history. | | |
| Revision 1.7.1 | 2002-06-25 | Revised by: ppadala |
| Added a README file for building and instructions for building from source. | | |
| Revision 1.7 | 2002-06-25 | Revised by: ppadala |
| Added "Other formats" section and made a lot of fancy changes to the programs. Inlining of programs is gone. | | |
| Revision 1.6.1 | 2002-02-24 | Revised by: ppadala |
| Removed the old Changelog section, cleaned the makefiles | | |
| Revision 1.6 | 2002-02-16 | Revised by: ppadala |
| Corrected a lot of spelling mistakes, added ACS variables section | | |
| Revision 1.5 | 2002-01-05 | Revised by: ppadala |
| Changed structure to present proper TOC | | |
| Revision 1.3.1 | 2001-07-26 | Revised by: ppadala |
| Corrected maintainers paragraph, Corrected stable release number | | |
| Revision 1.3 | 2001-07-24 | Revised by: ppadala |
| Added copyright notices to main document (LDP license) and programs (GPL), Corrected printw_example. | | |
| Revision 1.2 | 2001-06-05 | Revised by: ppadala |
| Incorporated ravi's changes. Mainly to introduction, menu, form, justforfun sections | | |
| Revision 1.1 | 2001-05-22 | Revised by: ppadala |
| Added "a word about window" section, Added scanw_example. | | |
_This document is intended to be an "All in One" guide for programming with ncurses and its sister libraries. We graduate from a simple "Hello World" program to more complex form manipulation. No prior experience in ncurses is assumed. Send comments to [this address][1] _
* * *
**Table of Contents**
1\. [Introduction][2]
:
1.1. [What is NCURSES?][3]
1.2. [What we can do with NCURSES][4]
1.3. [Where to get it][5]
1.4. [Purpose/Scope of the document][6]
1.5. [About the Programs][7]
1.6. [Other Formats of the document][8]
1.7. [Credits][9]
1.8. [Wish List][10]
1.9. [Copyright][11]
2\. [Hello World !!!][12]
:
2.1. [Compiling With the NCURSES Library][13]
2.2. [Dissection][14]
3\. [The Gory Details][15]
4\. [Initialization][16]
:
4.1. [Initialization functions][17]
4.2. [raw() and cbreak()][18]
4.3. [echo() and noecho()][19]
4.4. [keypad()][20]
4.5. [halfdelay()][21]
4.6. [Miscellaneous Initialization functions][22]
4.7. [An Example][23]
5\. [A Word about Windows][24]
6\. [Output functions][25]
:
6.1. [addch() class of functions][26]
6.2. [mvaddch(), waddch() and mvwaddch()][27]
6.3. [printw() class of functions][28]
6.4. [addstr() class of functions][29]
6.5. [A word of caution][30]
7\. [Input functions][31]
:
7.1. [getch() class of functions][32]
7.2. [scanw() class of functions][33]
7.3. [getstr() class of functions][34]
7.4. [Some examples][35]
8\. [Attributes][36]
:
8.1. [The details][37]
8.2. [attron() vs attrset()][38]
8.3. [attr_get()][39]
8.4. [attr_ functions][40]
8.5. [wattr functions][41]
8.6. [chgat() functions][42]
9\. [Windows][43]
:
9.1. [The basics][44]
9.2. [Let there be a Window !!!][45]
9.3. [Explanation][46]
9.4. [The other stuff in the example][47]
9.5. [Other Border functions][48]
10\. [Colors][49]
:
10.1. [The basics][50]
10.2. [Changing Color Definitions][51]
10.3. [Color Content][52]
11\. [Interfacing with the key board][53]
:
11.1. [The Basics][54]
11.2. [A Simple Key Usage example][55]
12\. [Interfacing with the mouse][56]
:
12.1. [The Basics][57]
12.2. [Getting the events][58]
12.3. [Putting it all Together][59]
12.4. [Miscellaneous Functions][60]
13\. [Screen Manipulation][61]
:
13.1. [getyx() functions][62]
13.2. [Screen Dumping][63]
13.3. [Window Dumping][64]
14\. [Miscellaneous features][65]
:
14.1. [curs_set()][66]
14.2. [Temporarily Leaving Curses mode][67]
14.3. [ACS_ variables][68]
15\. [Other libraries][69]
16\. [Panel Library][70]
:
16.1. [The Basics][71]
16.2. [Compiling With the Panels Library][72]
16.3. [Panel Window Browsing][73]
16.4. [Using User Pointers][74]
16.5. [Moving and Resizing Panels][75]
16.6. [Hiding and Showing Panels][76]
16.7. [panel_above() and panel_below() Functions][77]
17\. [Menus Library][78]
:
17.1. [The Basics][79]
17.2. [Compiling With the Menu Library][80]
17.3. [Menu Driver: The work horse of the menu system][81]
17.4. [Menu Windows][82]
17.5. [Scrolling Menus][83]
17.6. [Multi Columnar Menus][84]
17.7. [Multi Valued Menus][85]
17.8. [Menu Options][86]
17.9. [The useful User Pointer][87]
18\. [Forms Library][88]
:
18.1. [The Basics][89]
18.2. [Compiling With the Forms Library][90]
18.3. [Playing with Fields][91]
18.4. [Form Windows][92]
18.5. [Field Validation][93]
18.6. [Form Driver: The work horse of the forms system][94]
19\. [Tools and Widget Libraries][95]
:
19.1. [CDK (Curses Development Kit)][96]
19.2. [The dialog][97]
19.3. [Perl Curses Modules CURSES::FORM and CURSES::WIDGETS][98]
20\. [Just For Fun !!!][99]
:
20.1. [The Game of Life][100]
20.2. [Magic Square][101]
20.3. [Towers of Hanoi][102]
20.4. [Queens Puzzle][103]
20.5. [Shuffle][104]
20.6. [Typing Tutor][105]
21\. [References][106]
* * *
| ----- |
|   |   | [Next][2] |
|   |   | Introduction |
[1]: mailto:ppadala%40gmail.com
[2]: http://tldp.org/intro.html
[3]: http://tldp.org/intro.html#WHATIS
[4]: http://tldp.org/intro.html#WHATCANWEDO
[5]: http://tldp.org/intro.html#WHERETOGETIT
[6]: http://tldp.org/intro.html#PURPOSE
[7]: http://tldp.org/intro.html#ABOUTPROGRAMS
[8]: http://tldp.org/intro.html#OTHERFORMATS
[9]: http://tldp.org/intro.html#CREDITS
[10]: http://tldp.org/intro.html#WISHLIST
[11]: http://tldp.org/intro.html#COPYRIGHT
[12]: http://tldp.org/helloworld.html
[13]: http://tldp.org/helloworld.html#COMPILECURSES
[14]: http://tldp.org/helloworld.html#DISSECTION
[15]: http://tldp.org/gory.html
[16]: http://tldp.org/init.html
[17]: http://tldp.org/init.html#ABOUTINIT
[18]: http://tldp.org/init.html#RAWCBREAK
[19]: http://tldp.org/init.html#ECHONOECHO
[20]: http://tldp.org/init.html#KEYPAD
[21]: http://tldp.org/init.html#HALFDELAY
[22]: http://tldp.org/init.html#MISCINIT
[23]: http://tldp.org/init.html#INITEX
[24]: http://tldp.org/awordwindows.html
[25]: http://tldp.org/printw.html
[26]: http://tldp.org/printw.html#ADDCHCLASS
[27]: http://tldp.org/printw.html#AEN298
[28]: http://tldp.org/printw.html#PRINTWCLASS
[29]: http://tldp.org/printw.html#ADDSTRCLASS
[30]: http://tldp.org/printw.html#ACAUTION
[31]: http://tldp.org/scanw.html
[32]: http://tldp.org/scanw.html#GETCHCLASS
[33]: http://tldp.org/scanw.html#SCANWCLASS
[34]: http://tldp.org/scanw.html#GETSTRCLASS
[35]: http://tldp.org/scanw.html#GETSTREX
[36]: http://tldp.org/attrib.html
[37]: http://tldp.org/attrib.html#ATTRIBDETAILS
[38]: http://tldp.org/attrib.html#ATTRONVSATTRSET
[39]: http://tldp.org/attrib.html#ATTR_GET
[40]: http://tldp.org/attrib.html#ATTR_FUNCS
[41]: http://tldp.org/attrib.html#WATTRFUNCS
[42]: http://tldp.org/attrib.html#CHGAT
[43]: http://tldp.org/windows.html
[44]: http://tldp.org/windows.html#WINDOWBASICS
[45]: http://tldp.org/windows.html#LETBEWINDOW
[46]: http://tldp.org/windows.html#BORDEREXEXPL
[47]: http://tldp.org/windows.html#OTHERSTUFF
[48]: http://tldp.org/windows.html#OTHERBORDERFUNCS
[49]: http://tldp.org/color.html
[50]: http://tldp.org/color.html#COLORBASICS
[51]: http://tldp.org/color.html#CHANGECOLORDEFS
[52]: http://tldp.org/color.html#COLORCONTENT
[53]: http://tldp.org/keys.html
[54]: http://tldp.org/keys.html#KEYSBASICS
[55]: http://tldp.org/keys.html#SIMPLEKEYEX
[56]: http://tldp.org/mouse.html
[57]: http://tldp.org/mouse.html#MOUSEBASICS
[58]: http://tldp.org/mouse.html#GETTINGEVENTS
[59]: http://tldp.org/mouse.html#MOUSETOGETHER
[60]: http://tldp.org/mouse.html#MISCMOUSEFUNCS
[61]: http://tldp.org/screen.html
[62]: http://tldp.org/screen.html#GETYX
[63]: http://tldp.org/screen.html#SCREENDUMP
[64]: http://tldp.org/screen.html#WINDOWDUMP
[65]: http://tldp.org/misc.html
[66]: http://tldp.org/misc.html#CURSSET
[67]: http://tldp.org/misc.html#TEMPLEAVE
[68]: http://tldp.org/misc.html#ACSVARS
[69]: http://tldp.org/otherlib.html
[70]: http://tldp.org/panels.html
[71]: http://tldp.org/panels.html#PANELBASICS
[72]: http://tldp.org/panels.html#COMPILEPANELS
[73]: http://tldp.org/panels.html#PANELBROWSING
[74]: http://tldp.org/panels.html#USERPTRUSING
[75]: http://tldp.org/panels.html#PANELMOVERESIZE
[76]: http://tldp.org/panels.html#PANELSHOWHIDE
[77]: http://tldp.org/panels.html#PANELABOVE
[78]: http://tldp.org/menus.html
[79]: http://tldp.org/menus.html#MENUBASICS
[80]: http://tldp.org/menus.html#COMPILEMENUS
[81]: http://tldp.org/menus.html#MENUDRIVER
[82]: http://tldp.org/menus.html#MENUWINDOWS
[83]: http://tldp.org/menus.html#SCROLLMENUS
[84]: http://tldp.org/menus.html#MULTICOLUMN
[85]: http://tldp.org/menus.html#MULTIVALUEMENUS
[86]: http://tldp.org/menus.html#MENUOPT
[87]: http://tldp.org/menus.html#MENUUSERPTR
[88]: http://tldp.org/forms.html
[89]: http://tldp.org/forms.html#FORMBASICS
[90]: http://tldp.org/forms.html#COMPILEFORMS
[91]: http://tldp.org/forms.html#PLAYFIELDS
[92]: http://tldp.org/forms.html#FORMWINDOWS
[93]: http://tldp.org/forms.html#FILEDVALIDATE
[94]: http://tldp.org/forms.html#FORMDRIVER
[95]: http://tldp.org/tools.html
[96]: http://tldp.org/tools.html#CDK
[97]: http://tldp.org/tools.html#DIALOG
[98]: http://tldp.org/tools.html#PERLCURSES
[99]: http://tldp.org/justforfun.html
[100]: http://tldp.org/justforfun.html#GAMEOFLIFE
[101]: http://tldp.org/justforfun.html#MAGIC
[102]: http://tldp.org/justforfun.html#HANOI
[103]: http://tldp.org/justforfun.html#QUEENS
[104]: http://tldp.org/justforfun.html#SHUFFLE
[105]: http://tldp.org/justforfun.html#TT
[106]: http://tldp.org/ref.html