Curses er et terminaladministrationsbibliotek til Unix - lignende operativsystemer, der giver dig mulighed for at oprette applikationer med en tekstbrugergrænseflade .
Navnet på biblioteket kommer fra det engelske udtryk "cursor optimization" ( cursor optimization ) [1] , og betyder også "curses". Biblioteket indeholder funktioner til at arbejde med visning af en tekstterminal (for eksempel VT100 ) [2] .
Curses API er beskrevet i flere forskellige kilder [3] . De fleste implementeringer af forbandelser bruger en database , der beskriver mulighederne for tusindvis af forskellige terminaler. Nogle implementeringer (såsom PDCurses) brug specialiserede enhedsdrivere i stedet for . De fleste implementeringer bruger terminfo ; nogle bruger termcap . For programmer, der ikke kræver grafisk output eller flere skrifttyper, vil implementering af grænsefladen med forbandelser være meget nemmere og hurtigere end at bruge X Window System .
Ved hjælp af forbandelser kan programmører skabe tekstbaserede applikationer, der er bærbare mellem forskellige typer terminaler – biblioteket sørger selv for, hvilke kontroltegn der skal bruges til hver specifik terminal. Curses giver mulighed for at vise flere vinduer på en enkelt terminal. Hvert vindue er repræsenteret af en matrix af tegn. Programmøren indstiller placeringen, størrelsen og indholdet af hvert vindue og opdaterer skærmen. Biblioteket bestemmer minimumssættet af ændringer for at opdatere skærmen og anvender dem baseret på terminalens muligheder.
Den første implementering af forbandelser blev skrevet af Ken Arnold og sendt med BSD UNIX, hvor den blev brugt til adskillige spil, den mest berømte er Rogue [4] [5] [6] .
Det hævdes nogle gange fejlagtigt, at forbandelser blev brugt i vi -teksteditoren . Faktisk blev koden, der optimerer markørens bevægelse, lånt af forbandelser fra vi , som udkom tidligere [5] .
Ifølge Goodhart begyndte Ken Arnolds oprindelige implementering med at udvide funktionerne i termcap-biblioteket [7] . Et par år senere flyttede Mark Horton , som havde arbejdet på at forbedre vi- og termcap -koden hos Berkeley , til AT&T og skabte en anden version baseret på terminfo , der blev en del af UNIX System III og UNIX System V. På grund af begrænsningerne af sidstnævntes licens blev BSD- og AT&T-versionerne udviklet uafhængigt. Ud over termcap/terminfo-forbedringer tilføjede AT&T-versionen:
tekstvalg (fed, understreget) BSD-versionen understøttede kun den standout -allokeringstilstand . stregtegning BSD-versionen havde svag understøttelse af denne funktion. farver BSD-versionen gav ikke en sådan mulighed.Udviklingen af AT&T-forbandelser gik i stå i midten af 1990'erne, da X/Open Curses blev annonceret . [8] Udviklingen af ncurses og PDCurses fortsætter dog. BSD-versionen af forbandelser understøttes fortsat på NetBSD -operativsystemet (understøttelse af bred tegn, migrering fra termcap til terminfo osv.).
Som minimum kan følgende implementeringer betragtes som en udvikling af AT&T-forbandelser: pcurses af Pavel Curtis (1982), PDCurses (Public Domain curses) af Mark Hessling til støtte for hans THE -redaktør (1987), samt Rexx/Curses [9 ] og pc-forbandelser (version 1.4 af Bjørn Larsson) er baseret på Curtis-biblioteket [10] . [11]
ncurses (nye forbandelser) "var oprindeligt pcurses ... og blev genudgivet som ncurses 1.8.1 i slutningen af 1993" [12] . ncurses er den mest kendte implementering af forbandelser og har motiveret yderligere udvikling af andre modifikationer såsom BSD-forbandelser i NetBSD -projektet . [13] [14]
Selvom ncurses-biblioteket oprindeligt blev udviklet til Linux, OpenBSD , FreeBSD og NetBSD, er det blevet overført til mange andre ANSI/POSIX UNIX-systemer, for det meste af Thomas Dickey . PDCurses (ikke at forveksle med ncurses) bruger de samme kald som ncurses, bortset fra at PDCurses målretter mod forskellige enheder, dvs. DOS , Win32 , OS/2 og X11 konsolvinduer . Porting mellem disse to versioner er ikke svært. For eksempel blev den roguelike ADOM skrevet til Linux og ncurses, og blev senere porteret til DOS og PDCurses [15] [16] .
Nedenfor er en typisk brug af forbandelser (i et terminalvindue, der understøtter farver)
Farvegrænseflade af Tin nyhedslæser
Brug af forbandelser i Jacks brændende software
Curses gør det nemt at skabe GUI-lignende funktionalitet på en tekstterminal, såsom pc-teksttilstand, ANSI-hardwareterminal, Telnet eller SSH -klient .
Programmer, der bruger forbandelser, har ofte en brugergrænseflade, der ligner en traditionel grafisk brugergrænseflade , inklusive widgets såsom rullemenuer og rullelister, i stedet for kommandolinjegrænsefladen (CLI), der almindeligvis bruges på tekstterminaler. Derudover er programmer, der bruger forbandelser, mindre ressourcekrævende end deres grafiske modstykker og mere bærbare mellem systemer (især meget gamle, før 1990).
Curses bruges i implementeringen af FMLI-sproget, som blev brugt til at skabe en venlig FACE-brugergrænseflade i SVR4-systemer, der giver grundlæggende funktionalitet til administration. Curses-baseret FMLI blev senere brugt på Solaris -systemet til at levere en grænseflade på højt niveau til Live Upgrade-kommandoerne.
Curses er oftest forbundet med Unix-lignende operativsystemer, selvom implementeringer til Microsoft Windows også findes .