Kletby

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 24. března 2021; kontroly vyžadují 5 úprav .

Curses  je knihovna pro správu terminálů pro operační systémy typu Unix , která umožňuje vytvářet aplikace s textovým uživatelským rozhraním .

Název knihovny pochází z anglického výrazu „cursor optimization“ ( optimalizace kurzoru ) [1] a znamená také „prokletí“. Knihovna obsahuje funkce pro práci se zobrazením textového terminálu (například VT100 ) [2] .

Přehled

Curses API je popsáno v několika různých zdrojích [3] . Většina implementací kleteb používá databázi , která popisuje schopnosti tisíců různých terminálů. Některé implementace (například PDCurses) místo toho použijte specializované ovladače zařízení . Většina implementací používá terminfo ; někteří používají termcap . Pro aplikace, které nevyžadují grafický výstup nebo více písem, bude implementace rozhraní s curses mnohem jednodušší a rychlejší než použití X Window System .

Pomocí kleteb mohou programátoři vytvářet textové aplikace, které jsou přenosné mezi různými typy terminálů – knihovna se sama stará o to, jaké řídicí znaky mají být použity pro každý konkrétní terminál. Curses poskytuje možnost zobrazení více oken na jednom terminálu. Každé okno je reprezentováno maticí znaků. Programátor nastaví polohu, velikost a obsah každého okna a aktualizuje obrazovku. Knihovna určí minimální sadu změn pro aktualizaci obrazovky a aplikuje je na základě schopností terminálu.

Historie

První implementace kleteb byla napsána Kenem Arnoldem a dodávána s BSD UNIX, kde byla použita pro několik her, z nichž nejznámější je Rogue [4] [5] [6] .

Někdy se mylně tvrdí, že kletby byly použity v textovém editoru vi . Ve skutečnosti byl kód, který optimalizuje pohyb kurzoru, vypůjčen curses z vi , který vyšel dříve [5] .

Podle Goodharta začala původní implementace Kena Arnolda rozšířením funkcí knihovny termcap [7] . O několik let později se Mark Horton , který pracoval na vylepšení kódu vi a termcap v Berkeley , přestěhoval do AT&T a vytvořil další verzi založenou na terminfo , která se stala součástí UNIX System III a UNIX System V. Kvůli omezením licence posledně jmenovaného byly verze BSD a AT&T vyvinuty nezávisle. Kromě vylepšení termcap/terminfo přidala verze AT&T:

výběr textu (tučné, podtržené) verze BSD podporovala pouze režim standout alokace . perokresba verze BSD měla pro tuto funkci slabou podporu. barvy verze BSD takovou možnost neposkytovala.

Vývoj kleteb AT&T se zastavil v polovině 90. let, kdy bylo oznámeno X/Open Curses . [8] Vývoj ncurses a PDCurses však pokračuje. BSD verze curses je nadále podporována v operačním systému NetBSD (široká podpora znaků, migrace z termcap na terminfo atd.).

pcurses a PDCurses

Za evoluci kleteb AT&T lze považovat minimálně následující implementace: pcurses od Pavla Curtise (1982), PDCurses (Public Domain curses) od Marka Hesslinga na podporu jeho editoru THE (1987), stejně jako Rexx/Curses [9 ] a PC curses (verze 1.4 od Bjorna Larssona) je založena na knihovně Curtis [10] . [11]

ncurses

ncurses (nové kletby) "původně byly pcurses ... a byly znovu vydány jako ncurses 1.8.1 na konci roku 1993" [12] . ncurses je nejznámější implementací kleteb a motivoval k dalšímu vývoji dalších modifikací, jako jsou BSD kletby v projektu NetBSD . [13] [14]

Přenositelnost

Ačkoli byla knihovna ncurses původně vyvinuta pro Linux, OpenBSD , FreeBSD a NetBSD, byla portována na mnoho dalších ANSI/POSIX UNIXových systémů, většinou Thomasem Dickeyem . PDCurses (nezaměňovat s ncurses) používá stejná volání jako ncurses, kromě toho, že PDCurses cílí na různá zařízení, tj. DOS , Win32 , OS/2 a okna konzoly X11 . Přenesení mezi těmito dvěma verzemi není obtížné. Například roguelike ADOM byl napsán pro Linux a ncurses a později byl portován na DOS a PDCurses [15] [16] .

Screenshoty

Níže je typické použití kleteb (v okně terminálu, které podporuje barvu)

Software využívající kletby

Curses usnadňuje vytváření funkcí podobných GUI na textovém terminálu, jako je textový režim PC, hardwarový terminál ANSI, Telnet nebo SSH klient .

Programy používající kletby mají často uživatelské rozhraní, které se podobá tradičnímu grafickému uživatelskému rozhraní , včetně widgetů , jako jsou rozevírací nabídky a rolovací seznamy, namísto rozhraní příkazového řádku (CLI), běžně používaného na textových terminálech. Kromě toho jsou programy využívající kletby méně náročné na zdroje než jejich grafické protějšky a jsou lépe přenositelné mezi systémy (zejména velmi staré, před rokem 1990).

Curses je použit v implementaci jazyka FMLI, který byl použit k vytvoření přívětivého uživatelského rozhraní FACE v systémech SVR4, které poskytuje základní funkcionalitu pro administraci. FMLI založené na Curses bylo později použito v systému Solaris k poskytnutí rozhraní na vysoké úrovni pro příkazy Live Upgrade.

Curses je nejčastěji spojován s operačními systémy podobnými Unixu, ačkoli existují implementace pro Microsoft Windows .

Viz také

Poznámky

  1. Thomas E. Dickey. NCURSES - Často kladené otázky . Získáno 25. 2. 2015. Archivováno z originálu 21. 8. 2018.
  2. Thomas E. Dickey. NCURSES - Často kladené otázky . Získáno 25. 2. 2015. Archivováno z originálu 21. 8. 2018.
  3. John Strang, Programování s kletbami , O'Reilly, ISBN 0-937175-02-1
  4. Petr H. Salus. Historie Unixu je stejně tak o spolupráci jako o technologii . Byte (říjen 1994). Získáno 25. února 2015. Archivováno z originálu 25. února 2015.
  5. 1 2 Arnold, Aktualizace obrazovky KCRC a optimalizace pohybu kurzoru: A Library Package  (angl.)  : journal. — University of California, Berkeley, 1977.
  6. Kenneth CRC Arnold. Aktualizace obrazovky a optimalizace pohybu kurzoru: balíček knihovny (prosinec 1992). Datum přístupu: 25. února 2015. Archivováno z originálu 28. září 2007.
  7. Dobré srdce, Bernie. UNIX Curses Explained  (neopr.) . - Prentice Hall , 1991. - S. xi. — ISBN 0-13-931957-3 .
  8. X/Open Curses, vydání 4, verze 2, referenční stránky . Otevřená skupina (1997). Získáno 25. prosince 2016. Archivováno z originálu 26. prosince 2016.
  9. Mark Hessling. Rexx/Kletby . Projekt SourceForge rexxcurses (2008). Datum přístupu: 10. února 2014. Archivováno z originálu 15. prosince 2013.
  10. F. Ellermann. CURSES.NEW v pccurses.zip (26. července 1993). - "založeno na PC kletbách (verze 1.4) napsal Bjorn Larsson". Staženo: 10. února 2014.  (nedostupný odkaz)
  11. Bjorn Larsson. README.NOW v pccurs14.zip (downlink) (14. ledna 1990). - "PCcurses je port/přepsání [balíčku] Pavla Curtise". Získáno 10. února 2014. Archivováno z originálu 23. února 2014. 
  12. Thomas E. Dickey. NCURSES - Nové kletby (prosinec 1996). Získáno 5. března 2013. Archivováno z originálu 8. května 2019.
  13. Projekt NetBSD. CURSES_SCREEN(3), Příručka funkcí knihovny NetBSD (únor 2004). Získáno 25. února 2015. Archivováno z originálu 25. února 2015.
  14. Ruibiao Qiu. NetBSD-SoC: Podpora širokých znaků v knihovně prokletí NetBSD (září 2005). Získáno 25. února 2015. Archivováno z originálu 13. března 2015.
  15. Thomas Biskup. ADOM - Minulost (nedostupný odkaz) (1994–2007). Získáno 16. listopadu 2007. Archivováno z originálu 10. října 2007. 
  16. Thomas Biskup (15. března 1996). " Nová hra: ADOM (pouze MS-DOS, MS-Windows a Linux) ". rec.games.roguelike.announce . (Skupiny Google) . Získáno 16. listopadu 2007. Archivováno 4. června 2011 na Wayback Machine

Odkazy