fbpx
Wikipedia

curses (programming library)

curses is a terminal control library for Unix-like systems, enabling the construction of text user interface (TUI) applications.

curses
Live Upgrade (lu) command, built upon FMLI[discuss] which uses Curses
Developer(s)Ken Arnold
Initial release1978[1]
Written inC
TypeWidget toolkit

The name is a pun on the term "cursor optimization". It is a library of functions that manage an application's display on character-cell terminals (e.g., VT100).[2]

Overview Edit

Using curses, programmers are able to write text-based applications without writing directly for any specific terminal type. The curses library on the executing system sends the correct control characters based on the terminal type. It provides an abstraction of one or more windows that maps onto the terminal screen. Each window is represented by a character matrix. The programmer sets up the desired appearance of each window, then tells the curses package to update the screen. The library determines a minimal set of changes that are needed to update the display and then executes these using the terminal's specific capabilities and control sequences.

In short, this means that the programmer simply creates a character matrix of how the screen should look and lets curses handle the work.

The curses API is described in several places.[3] Most implementations of curses use a database that can describe the capabilities of thousands of different terminals. There are a few implementations, such as PDCurses, which use specialized device drivers rather than a terminal database. Most implementations use terminfo; some use termcap. Curses has the advantage of back-portability to character-cell terminals and simplicity. For an application that does not require bit-mapped graphics or multiple fonts, an interface implementation using curses will usually be much simpler and faster than one using an X toolkit.

History Edit

The first curses library was written by Ken Arnold and originally released with BSD UNIX, where it was used for several games, most notably Rogue.[4][5][6] Some improvements were made to the BSD library in the 1990s as "4.4BSD" curses, e.g., to provide more than one type of video highlighting.[citation needed] However, those are not widely used.

The name "curses" is a pun on cursor optimization.[7] Sometimes it is incorrectly stated that curses was used by the vi editor. In fact the code in curses that optimizes moving the cursor from one place on the screen to another was borrowed from vi, which predated curses.[5]

According to Goodheart, Ken Arnold's original implementation of curses started by reusing functions from the termcap library, and adding to that.[8] A few years later, Mary Ann Horton, who had maintained the vi and termcap sources at Berkeley, went to AT&T Corporation and made a different version using terminfo, which became part of UNIX System III and UNIX System V. Due to licensing restrictions on the latter, the BSD and AT&T versions of the library were developed independently. In addition to the termcap/terminfo improvement, other improvements were made in the AT&T version:

video highlighting (bold, underline)
The BSD version supported only standout.
line-drawing
The BSD version gave little support here.
colors
This was not supported in the BSD version.

AT&T curses development appears to have halted in the mid-1990s when X/Open Curses was defined.[9] In 1995, BSD maintainer, Keith Bostic, officially deprecated the curses library in favor of ncurses.[10][dubious ] Development of ncurses and PDCurses continues. A version of BSD curses continues to be maintained in the NetBSD operating system (wide character support, termcap to terminfo migration, etc.).

pcurses and PDCurses Edit

Different lines of development started by imitating the AT&T curses, from at least three implementations: pcurses by Pavel Curtis (started in 1982), PDCurses (Public Domain curses) by Mark Hessling to support his editor THE (started in 1987) as well as Rexx/Curses,[11] and PC curses (version 1.4 and earlier by Bjorn Larsson-based inspired by Pavel Curtis' library before 1990.)[12][13][discuss]

ncurses Edit

ncurses (new curses) "originated as pcurses ... and was re-issued as ncurses 1.8.1 in late 1993".[14] ncurses is the most widely known implementation of curses, and has motivated further development of other variations, such as BSD curses in the NetBSD project.[15][16]

Portability Edit

Although the ncurses library was initially developed under Linux, OpenBSD, FreeBSD, and NetBSD, it has been ported to many other ANSI/POSIX UNIX systems, mainly by Thomas Dickey. PDCurses, while not identical to ncurses, uses the same function calls and operates the same way as ncurses does except that PDCurses targets different devices, e.g., console windows for DOS, Win32, OS/2, as well as X11. Porting between the two is not difficult. For example, the roguelike game ADOM was written for Linux and ncurses, later ported to DOS and PDCurses.[17][18]

Screenshots Edit

Applications Edit

Curses is designed to facilitate GUI-like functionality on a text-only device, such as a PC running in console mode, a hardware ANSI terminal, a Telnet or SSH client, or similar. Curses-based software is software whose user interface is implemented through the curses library, or a compatible library (such as ncurses).

Curses-based programs often have a user interface that resembles a traditional graphical user interface, including 'widgets' such as text boxes and scrollable lists, rather than the command line interface (CLI) most commonly found on text-only devices. This can make them more user-friendly than a CLI-based program, while still being able to run on text-only devices. Curses-based software can also have a lighter resource footprint and operate on a wider range of systems (both in terms of hardware and software) than their GUI-based counterparts. This includes old pre-1990 machines along with modern embedded systems using text-only displays.

Curses is most commonly associated with Unix-like operating systems, although implementations for Microsoft Windows also exist.

See also Edit

References Edit

  1. ^ Craddock, David L. (June 17, 2016). "Procedural Dungeons of Doom: The Making of Rogue – Chapter 3". Retrieved May 18, 2023.
  2. ^ Thomas E. Dickey. "NCURSES - Frequently Asked Questions".
  3. ^ John Strang, Programming with curses, O'Reilly, ISBN 0-937175-02-1
  4. ^ Peter H. Salus (October 1994). "The history of Unix is as much about collaboration as it is about technology". Byte.
  5. ^ a b Arnold, K. C. R. C. (1977). "Screen Updating and Cursor Movement Optimization: A Library Package". University of California, Berkeley. {{cite journal}}: Cite journal requires |journal= (help)
  6. ^ Kenneth C. R. C. Arnold; Elan Amir (December 1992). "Screen Updating and Cursor Movement Optimization: A Library Package".
  7. ^ Thomas E. Dickey. "NCURSES - Frequently Asked Questions".
  8. ^ Goodheart, Berny (1991). UNIX Curses Explained. Prentice Hall. p. xi. ISBN 0-13-931957-3.
  9. ^ "X/Open Curses, Issue 4 Version 2, Reference Pages". The Open Group. 1997.
  10. ^ Eric S. Raymond (September 1, 1995). "ncurses: Portable Screen-Handling for Linux". Linux Journal. Retrieved May 18, 2023.
  11. ^ Mark Hessling (2008). "Rexx/Curses". SourceForge project rexxcurses. Retrieved 2014-02-10.
  12. ^ F. Ellermann (1993-07-26). "CURSES.NEW in pccurses.zip". Retrieved 2014-02-10. based on PC curses (version 1.4) written by Bjorn Larsson[permanent dead link]
  13. ^ Bjorn Larsson (1990-01-14). . Archived from the original on 2014-02-23. Retrieved 2014-02-10. PCcurses is a port/rewrite of Pavel Curtis' [package]
  14. ^ Thomas E. Dickey (December 1996). "NCURSES - New Curses".
  15. ^ NetBSD project (February 2004). "CURSES_SCREEN(3), NetBSD Library Functions Manual".
  16. ^ Ruibiao Qiu (September 2005). "NetBSD-SoC: Wide Character Support in NetBSD curses Library".
  17. ^ Thomas Biskup (1994–2007). . Archived from the original on 2007-10-10. Retrieved 2007-11-16.
  18. ^ Thomas Biskup (March 15, 1996). "New Game: ADOM (MS-DOS, MS-Windows, and Linux only)". Newsgroup: rec.games.roguelike.announce. Retrieved 2007-11-16.

External links Edit

  • NCURSES - Manual Pages
  • Curses tutorial (PDF format)
  • Public Domain Curses
  • Interface for Rexx programmers
  • Tcl Toolkit
  • X/Open Curses
  • Curses for Python
  • NetBSD Curses main manual page 2014-08-08 at the Wayback Machine
  • X/Open Curses, Issue 4, Version 2, 1996, opengroup.org
  • X/Open Curses, Issue 7, 2009, opengroup.org

curses, programming, library, curses, terminal, control, library, unix, like, systems, enabling, construction, text, user, interface, applications, curseslive, upgrade, command, built, upon, fmli, discuss, which, uses, cursesdeveloper, arnoldinitial, release19. curses is a terminal control library for Unix like systems enabling the construction of text user interface TUI applications cursesLive Upgrade lu command built upon FMLI discuss which uses CursesDeveloper s Ken ArnoldInitial release1978 1 Written inCTypeWidget toolkitThe name is a pun on the term cursor optimization It is a library of functions that manage an application s display on character cell terminals e g VT100 2 Contents 1 Overview 2 History 2 1 pcurses and PDCurses 2 2 ncurses 3 Portability 4 Screenshots 5 Applications 6 See also 7 References 8 External linksOverview EditUsing curses programmers are able to write text based applications without writing directly for any specific terminal type The curses library on the executing system sends the correct control characters based on the terminal type It provides an abstraction of one or more windows that maps onto the terminal screen Each window is represented by a character matrix The programmer sets up the desired appearance of each window then tells the curses package to update the screen The library determines a minimal set of changes that are needed to update the display and then executes these using the terminal s specific capabilities and control sequences In short this means that the programmer simply creates a character matrix of how the screen should look and lets curses handle the work The curses API is described in several places 3 Most implementations of curses use a database that can describe the capabilities of thousands of different terminals There are a few implementations such as PDCurses which use specialized device drivers rather than a terminal database Most implementations use terminfo some use termcap Curses has the advantage of back portability to character cell terminals and simplicity For an application that does not require bit mapped graphics or multiple fonts an interface implementation using curses will usually be much simpler and faster than one using an X toolkit History EditThe first curses library was written by Ken Arnold and originally released with BSD UNIX where it was used for several games most notably Rogue 4 5 6 Some improvements were made to the BSD library in the 1990s as 4 4BSD curses e g to provide more than one type of video highlighting citation needed However those are not widely used The name curses is a pun on cursor optimization 7 Sometimes it is incorrectly stated that curses was used by the vi editor In fact the code in curses that optimizes moving the cursor from one place on the screen to another was borrowed from vi which predated curses 5 According to Goodheart Ken Arnold s original implementation of curses started by reusing functions from the termcap library and adding to that 8 A few years later Mary Ann Horton who had maintained the vi and termcap sources at Berkeley went to AT amp T Corporation and made a different version using terminfo which became part of UNIX System III and UNIX System V Due to licensing restrictions on the latter the BSD and AT amp T versions of the library were developed independently In addition to the termcap terminfo improvement other improvements were made in the AT amp T version video highlighting bold underline The BSD version supported only standout line drawing The BSD version gave little support here colors This was not supported in the BSD version AT amp T curses development appears to have halted in the mid 1990s when X Open Curses was defined 9 In 1995 BSD maintainer Keith Bostic officially deprecated the curses library in favor of ncurses 10 dubious discuss Development of ncurses and PDCurses continues A version of BSD curses continues to be maintained in the NetBSD operating system wide character support termcap to terminfo migration etc pcurses and PDCurses Edit Main article PDCurses Different lines of development started by imitating the AT amp T curses from at least three implementations pcurses by Pavel Curtis started in 1982 PDCurses Public Domain curses by Mark Hessling to support his editor THE started in 1987 as well as Rexx Curses 11 and PC curses version 1 4 and earlier by Bjorn Larsson based inspired by Pavel Curtis library before 1990 12 13 discuss ncurses Edit Main article ncurses ncurses new curses originated as pcurses and was re issued as ncurses 1 8 1 in late 1993 14 ncurses is the most widely known implementation of curses and has motivated further development of other variations such as BSD curses in the NetBSD project 15 16 Portability EditAlthough the ncurses library was initially developed under Linux OpenBSD FreeBSD and NetBSD it has been ported to many other ANSI POSIX UNIX systems mainly by Thomas Dickey PDCurses while not identical to ncurses uses the same function calls and operates the same way as ncurses does except that PDCurses targets different devices e g console windows for DOS Win32 OS 2 as well as X11 Porting between the two is not difficult For example the roguelike game ADOM was written for Linux and ncurses later ported to DOS and PDCurses 17 18 Screenshots Edit nbsp Color newsreader interface for tin nbsp Curses used in JackApplications EditMain article Text based user interface Curses is designed to facilitate GUI like functionality on a text only device such as a PC running in console mode a hardware ANSI terminal a Telnet or SSH client or similar Curses based software is software whose user interface is implemented through the curses library or a compatible library such as ncurses Curses based programs often have a user interface that resembles a traditional graphical user interface including widgets such as text boxes and scrollable lists rather than the command line interface CLI most commonly found on text only devices This can make them more user friendly than a CLI based program while still being able to run on text only devices Curses based software can also have a lighter resource footprint and operate on a wider range of systems both in terms of hardware and software than their GUI based counterparts This includes old pre 1990 machines along with modern embedded systems using text only displays Curses is most commonly associated with Unix like operating systems although implementations for Microsoft Windows also exist See also Editconio a similar idea for DOS S Lang an interpreted language with some related features SMG a similar idea for OpenVMS Newt a similar text UI library based on the slang libraryReferences Edit Craddock David L June 17 2016 Procedural Dungeons of Doom The Making of Rogue Chapter 3 Retrieved May 18 2023 Thomas E Dickey NCURSES Frequently Asked Questions John Strang Programming with curses O Reilly ISBN 0 937175 02 1 Peter H Salus October 1994 The history of Unix is as much about collaboration as it is about technology Byte a b Arnold K C R C 1977 Screen Updating and Cursor Movement Optimization A Library Package University of California Berkeley a href Template Cite journal html title Template Cite journal cite journal a Cite journal requires journal help Kenneth C R C Arnold Elan Amir December 1992 Screen Updating and Cursor Movement Optimization A Library Package Thomas E Dickey NCURSES Frequently Asked Questions Goodheart Berny 1991 UNIX Curses Explained Prentice Hall p xi ISBN 0 13 931957 3 X Open Curses Issue 4 Version 2 Reference Pages The Open Group 1997 Eric S Raymond September 1 1995 ncurses Portable Screen Handling for Linux Linux Journal Retrieved May 18 2023 Mark Hessling 2008 Rexx Curses SourceForge project rexxcurses Retrieved 2014 02 10 F Ellermann 1993 07 26 CURSES NEW in pccurses zip Retrieved 2014 02 10 based on PC curses version 1 4 written by Bjorn Larsson permanent dead link Bjorn Larsson 1990 01 14 README NOW in pccurs14 zip Archived from the original on 2014 02 23 Retrieved 2014 02 10 PCcurses is a port rewrite of Pavel Curtis package Thomas E Dickey December 1996 NCURSES New Curses NetBSD project February 2004 CURSES SCREEN 3 NetBSD Library Functions Manual Ruibiao Qiu September 2005 NetBSD SoC Wide Character Support in NetBSD curses Library Thomas Biskup 1994 2007 ADOM The Past Archived from the original on 2007 10 10 Retrieved 2007 11 16 Thomas Biskup March 15 1996 New Game ADOM MS DOS MS Windows and Linux only Newsgroup rec games roguelike announce Retrieved 2007 11 16 External links EditNCURSES Manual Pages Curses tutorial PDF format Public Domain Curses Interface for Rexx programmers Tcl Toolkit X Open Curses Curses for Python NetBSD Curses main manual page Archived 2014 08 08 at the Wayback Machine X Open Curses Issue 4 Version 2 1996 opengroup org X Open Curses Issue 7 2009 opengroup org Retrieved from https en wikipedia org w index php title Curses programming library amp oldid 1171787323, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.