{
    "mode": "perldoc",
    "parameter": "Curses",
    "section": "",
    "url": "https://www.chedong.com/phpMan.php/perldoc/Curses/json",
    "generated": "2026-10-04T16:25:30Z",
    "synopsis": "use Curses;\ninitscr;\n...\nendwin;",
    "sections": {
        "NAME": {
            "content": "Curses - terminal screen handling and optimization\n",
            "subsections": []
        },
        "SYNOPSIS": {
            "content": "use Curses;\n\ninitscr;\n...\nendwin;\n",
            "subsections": []
        },
        "DESCRIPTION": {
            "content": "\"Curses\" is the interface between Perl and your system's curses(3) library. For descriptions on\nthe usage of a given function, variable, or constant, consult your system's documentation, as\nsuch information invariably varies (:-) between different curses(3) libraries and operating\nsystems. This document describes the interface itself, and assumes that you already know how\nyour system's curses(3) library works.\n",
            "subsections": [
                {
                    "name": "Unified Functions",
                    "content": "Many curses(3) functions have variants starting with the prefixes *w-*, *mv-*, and/or *wmv-*.\nThese variants differ only in the explicit addition of a window, or by the addition of two\ncoordinates that are used to move the cursor first. For example, addch() has three other\nvariants: waddch(), mvaddch(), and mvwaddch(). The variants aren't very interesting; in fact, we\ncould roll all of the variants into original function by allowing a variable number of arguments\nand analyzing the argument list for which variant the user wanted to call.\n\nUnfortunately, curses(3) predates varargs(3), so in C we were stuck with all the variants.\nHowever, \"Curses\" is a Perl interface, so we are free to \"unify\" these variants into one\nfunction. The section \"Available Functions\" below lists all curses(3) functions \"Curses\" makes\navailable as Perl equivalents, along with a column listing if it is *unified*. If so, it takes a\nvarying number of arguments as follows:\n\n\"function( [win], [y, x], args );\"\n\n*win* is an optional window argument, defaulting to \"stdscr\" if not specified.\n\n*y, x* is an optional coordinate pair used to move the cursor, defaulting to no move if not\nspecified.\n\n*args* are the required arguments of the function. These are the arguments you would specify\nif you were just calling the base function and not any of the variants.\n\nThis makes the variants obsolete, since their functionality has been merged into a single\nfunction, so \"Curses\" does not define them by default. You can still get them if you want, by\nsetting the variable $Curses::OldCurses to a non-zero value before using the \"Curses\" package.\nSee \"Perl 4.X \"cursperl\" Compatibility\" for an example of this.\n"
                },
                {
                    "name": "Wide-Character-Aware Functions",
                    "content": "The following are the preferred functions for working with strings, though they don't follow the\nnormal unified function naming convention (based on the names in the Curses library) described\nabove. Despite the naming, each corresponds to a Curses library function. For example, a\n\"getchar\" call performs a Curses library function in the \"getch\" family.\n\nIn addition to these functions, The \"Curses\" module contains corresponding functions with the\nconventional naming (e.g. \"getch\"); the duplication is for historical reasons. The preferred\nfunctions were new in Curses 1.29 (April 2014). They use the wide character functions in the\nCurses library if available (falling back to using the traditional non-wide-character versions).\nThey also have a more Perl-like interface, taking care of some gory details under the hood about\nwhich a Perl programmer shouldn't have to worry.\n\nThe reason for two sets of string-handling functions is historical. The original Curses Perl\nmodule predates Curses libraries that understand multiple byte character encodings. Moreover,\nthe module was designed to have a Perl interface that closely resembles the C interface\nsyntactically and directly passes the internal byte representation of Perl strings to C code.\nThis was probably fine before Perl got Unicode function, but today, Perl stores strings\ninternally in either Latin-1 or Unicode UTF-8 and the original module was not sensitive to which\nencoding was used.\n\nWhile most of the problems could be worked around in Perl code using the traditional interface,\nit's hard to get right and you need a wide-character-aware curses library (e.g. ncursesw) anyway\nto make it work properly. Because existing consumers of the Curses module may be relying on the\ntraditional behavior, Curses module designers couldn't simply modify the existing functions to\nunderstand wide characters and convert from and to Perl strings.\n\nNone of these functions exist if Perl is older than 5.6.\n\n\"getchar\"\nThis calls wgetwch(). It returns a character -- more precisely, a one-character (not\nnecessarily one-byte!) string holding the character -- for a normal key and a two-element list\n\"(undef, key-number)\" for a function key. It returns \"undef\" on error.\n\nIf you don't expect function keys (i.e. with \"keypad(0))\", you can simply do\n\nmy $ch = getchar;\ndie \"getchar failed\" unless defined $ch;\n\nIf you do expect function keys (i.e. with keypad(1)), you can still assign the result to a\nscalar variable as above. Because of of the way the comma operator works, that variable will\nreceive either \"undef\" or the string or the number, and you can decode it yourself.\n\nmy $ch = getchar;\ndie \"getchar failed\" unless defined $ch;\nif (<$ch looks like a number >= 0x100>) {\n<handle function key>\n} else {\n<handle normal key>\n}\n\nor do\n\nmy ($ch, $key) = getchar;\nif (defined $key) {\n<handle function key $key>\n} else if (defined $ch) {\n<handle normal key $ch>\n} else {\ndie \"getchar failed\";\n}\n\nIf wgetwch() is not available (i.e. The Curses library does not understand wide characters),\nthis calls wgetch(), but returns the values described above nonetheless. This can be a problem\nbecause with a multibyte character encoding like UTF-8, you will receive two one-character\nstrings for a two-byte-character (e.g. \"����\" and \"▽\" for \"∽\"). If you append these\ncharacters to a Perl string, that string may internally contain a valid UTF-8 encoding of a\ncharacter, but Perl will not interpret it that way. Perl may even try to convert what it\nbelieves to be two characters to UTF-8, giving you four bytes.\n\n\"getstring\"\nThis calls \"wgetnwstr\" and returns a string or \"undef\". It cannot return a function key value;\nthe Curses library will itself interpret KEYLEFT and KEYBACKSPACE.\n\nIf wgettwstr() is unavailable, this calls wgetstr().\n\nIn both cases, the function allocates a buffer of fixed size to hold the result of the Curses\nlibrary call.\n\nmy $s = getstring();\ndie \"getstring failed\" unless defined $s;\n\n\"addstring\"/\"insstring\"\nThis adds/inserts the Perl string passed as an argument to the Curses window using"
                },
                {
                    "name": "waddnwstr",
                    "content": "success, false on failure.\n\naddstring(\"H∽ll‡, W‡rld\") || die \"addstring failed\";\n\n\"instring\"\nThis returns a Perl string (or \"undef\" on failure) holding the characters from the current\ncursor position up to the end of the line. It uses winnwstr() if available, and otherwise"
                },
                {
                    "name": "innstr",
                    "content": "my $s = instring();\ndie \"instring failed\" unless defined $s;\n\n\"ungetchar\"\nThis pushes one character (passed as a one-character Perl string) back to the input queue. It\nuses ungetwch() or ungetch(). It returns a true value on success, false on failure. It cannot\npush back a function key; the Curses library provides no way to push back function keys, only\ncharacters.\n\nungetchar(\"X\") or die \"ungetchar failed\";\n\nThe \"Curses\" module provides no interface to the complex-character routines (waddwch(),"
                },
                {
                    "name": "wadd_wchnstr",
                    "content": "sensible way of converting from Perl to a C \"cchart\" or back.\n"
                },
                {
                    "name": "Objects",
                    "content": "Objects work. Example:\n\n$win = new Curses;\n$win->addstr(10, 10, 'foo');\n$win->refresh;\n...\n\nAny function that has been marked as *unified* (see \"Available Functions\" below and \"Unified\nFunctions\" above) can be called as a method for a Curses object.\n\nDo not use initscr() if using objects, as the first call to get a \"new Curses\" will do it for\nyou.\n"
                },
                {
                    "name": "Security Concerns",
                    "content": "It has always been the case with the curses functions, but please note that the following\nfunctions:\n\ngetstr()   (and optional wgetstr(), mvgetstr(), and mvwgetstr())\ninchstr()  (and optional winchstr(), mvinchstr(), and mvwinchstr())\ninstr()    (and optional winstr(), mvinstr(), and mvwinstr())\n\nare subject to buffer overflow attack. This is because you pass in the buffer to be filled in,\nwhich has to be of finite length, but there is no way to stop a bad guy from typing.\n\nIn order to avoid this problem, use the alternate functions:\n\ngetnstr()\ninchnstr()\ninnstr()\n\nwhich take an extra \"size of buffer\" argument or the wide-character-aware getstring() and"
                },
                {
                    "name": "instring",
                    "content": ""
                }
            ]
        },
        "COMPATIBILITY": {
            "content": "Perl 4.X \"cursperl\" Compatibility\n\"Curses\" was written to take advantage of features of Perl 5 and later. The author thought it\nwas better to provide an improved curses programming environment than to be 100% compatible.\nHowever, many old \"curseperl\" applications will probably still work by starting the script with:\n\nBEGIN { $Curses::OldCurses = 1; }\nuse Curses;\n\nAny old application that still does not work should print an understandable error message\nexplaining the problem.\n\nSome functions and variables are not available through \"Curses\", even with the \"BEGIN\" line.\nThey are listed under \"Curses items not available through Perl Curses\".\n\nThe variables $stdscr and $curscr are also available as functions \"stdscr\" and \"curscr\". This is\nbecause of a Perl bug. See the LIMITATIONS section for details.\n\nIncompatibilities with previous versions of \"Curses\"\nIn previous versions of this software, some Perl functions took a different set of parameters\nthan their C counterparts. This is not true in the current version. You should now use",
            "subsections": [
                {
                    "name": "getstr",
                    "content": ""
                }
            ]
        },
        "DIAGNOSTICS": {
            "content": "*   Curses function '%s' called with too %s arguments at ...\n\nYou have called a \"Curses\" function with a wrong number of arguments.\n\n*   argument %d to Curses function '%s' is not a Curses %s at ...\n\n*   argument is not a Curses %s at ...\n\nThe argument you gave to the function wasn't of a valid type for the place you used it.\n\nThis probably means that you didn't give the right arguments to a *unified* function. See\nthe DESCRIPTION section on \"Unified Functions\" for more information.\n\n*   Curses function '%s' is not defined in your Curses library at ...\n\nYour code has a call to a Perl \"Curses\" function that your system's Curses library doesn't\nprovide.\n\n*   Curses variable '%s' is not defined in your Curses library at ...\n\nYour code has a Perl \"Curses\" variable that your system's Curses library doesn't provide.\n\n*   Curses constant '%s' is not defined in your Curses library at ...\n\nYour code references the specified \"Curses\" constant, and your system's Curses library\ndoesn't provide it.\n\n*   Curses::Vars::FETCH called with bad index at ...\n\n*   Curses::Vars::STORE called with bad index at ...\n\nYou've been playing with the \"tie\" interface to the \"Curses\" variables. Don't do that. :-)\n\n*   Anything else\n\nCheck out the perldiag man page to see if the error is in there.\n",
            "subsections": []
        },
        "LIMITATIONS": {
            "content": "If you use the variables $stdscr and $curscr instead of their functional counterparts (\"stdscr\"\nand \"curscr\"), you might run into a bug in Perl where the \"magic\" isn't called early enough.\nThis is manifested by the \"Curses\" package telling you $stdscr isn't a window. One workaround is\nto put a line like \"$stdscr = $stdscr\" near the front of your program.\n",
            "subsections": []
        },
        "AUTHOR": {
            "content": "William Setzer <WilliamSetzer@ncsu.edu>\n",
            "subsections": []
        },
        "SYNOPSIS OF PERL CURSES AVAILABILITY": {
            "content": "",
            "subsections": [
                {
                    "name": "Available Functions",
                    "content": "Available Function   Unified?     Available via $OldCurses[*]\n------------------   --------     ------------------------\naddch                  Yes        waddch mvaddch mvwaddch\nechochar               Yes        wechochar\naddchstr               Yes        waddchstr mvaddchstr mvwaddchstr\naddchnstr              Yes        waddchnstr mvaddchnstr mvwaddchnstr\naddstr                 Yes        waddstr mvaddstr mvwaddstr\naddnstr                Yes        waddnstr mvaddnstr mvwaddnstr\nattroff                Yes        wattroff\nattron                 Yes        wattron\nattrset                Yes        wattrset\nstandend               Yes        wstandend\nstandout               Yes        wstandout\nattrget               Yes        wattrget\nattroff               Yes        wattroff\nattron                Yes        wattron\nattrset               Yes        wattrset\nchgat                  Yes        wchgat mvchgat mvwchgat\nCOLORPAIR              No\nPAIRNUMBER             No\nbeep                    No\nflash                   No\nbkgd                   Yes        wbkgd\nbkgdset                Yes        wbkgdset\ngetbkgd                Yes\nborder                 Yes        wborder\nbox                    Yes\nhline                  Yes        whline mvhline mvwhline\nvline                  Yes        wvline mvvline mvwvline\nerase                  Yes        werase\nclear                  Yes        wclear\nclrtobot               Yes        wclrtobot\nclrtoeol               Yes        wclrtoeol\nstartcolor             No\ninitpair               No\ninitcolor              No\nhascolors              No\ncanchangecolor        No\ncolorcontent           No\npaircontent            No\ndelch                  Yes        wdelch mvdelch mvwdelch\ndeleteln               Yes        wdeleteln\ninsdelln               Yes        winsdelln\ninsertln               Yes        winsertln\ngetch                  Yes        wgetch mvgetch mvwgetch\nungetch                 No\nhaskey                 No\nKEYF                   No\ngetstr                 Yes        wgetstr mvgetstr mvwgetstr\ngetnstr                Yes        wgetnstr mvgetnstr mvwgetnstr\ngetyx                  Yes\ngetparyx               Yes\ngetbegyx               Yes\ngetmaxyx               Yes\ninch                   Yes        winch mvinch mvwinch\ninchstr                Yes        winchstr mvinchstr mvwinchstr\ninchnstr               Yes        winchnstr mvinchnstr mvwinchnstr\ninitscr                 No\nendwin                  No\nisendwin                No\nnewterm                 No\nsetterm                No\ndelscreen               No\ncbreak                  No\nnocbreak                No\necho                    No\nnoecho                  No\nhalfdelay               No\nintrflush              Yes\nkeypad                 Yes\nmeta                   Yes\nnodelay                Yes\nnotimeout              Yes\nraw                     No\nnoraw                   No\nqiflush                 No\nnoqiflush               No\ntimeout                Yes        wtimeout\ntypeahead               No\ninsch                  Yes        winsch mvinsch mvwinsch\ninsstr                 Yes        winsstr mvinsstr mvwinsstr\ninsnstr                Yes        winsnstr mvinsnstr mvwinsnstr\ninstr                  Yes        winstr mvinstr mvwinstr\ninnstr                 Yes        winnstr mvinnstr mvwinnstr\ndefprogmode           No\ndefshellmode          No\nresetprogmode         No\nresetshellmode        No\nresetty                 No\nsavetty                 No\ngetsyx                  No\nsetsyx                  No\ncursset                No\nnapms                   No\nmove                   Yes        wmove\nclearok                Yes\nidlok                  Yes\nidcok                  Yes\nimmedok                Yes\nleaveok                Yes\nsetscrreg              Yes        wsetscrreg\nscrollok               Yes\nnl                      No\nnonl                    No\noverlay                 No\noverwrite               No\ncopywin                 No\nnewpad                  No\nsubpad                  No\nprefresh                No\npnoutrefresh            No\npechochar               No\nrefresh                Yes        wrefresh\nnoutrefresh            Yes        wnoutrefresh\ndoupdate                No\nredrawwin              Yes\nredrawln               Yes        wredrawln\nscrdump                No\nscrrestore             No\nscrinit                No\nscrset                 No\nscroll                 Yes\nscrl                   Yes        wscrl\nslkinit                No\nslkset                 No\nslkrefresh             No\nslknoutrefresh         No\nslklabel               No\nslkclear               No\nslkrestore             No\nslktouch               No\nslkattron              No\nslkattrset             No\nslkattr                No\nslkattroff             No\nslkcolor               No\nbaudrate                No\nerasechar               No\nhasic                  No\nhasil                  No\nkillchar                No\nlongname                No\ntermattrs               No\ntermname                No\ntouchwin               Yes\ntouchline              Yes\nuntouchwin             Yes\ntouchln                Yes        wtouchln\nislinetouched         Yes\niswintouched          Yes\nunctrl                  No\nkeyname                 No\nfilter                  No\nuseenv                 No\nputwin                  No\ngetwin                  No\ndelayoutput            No\nflushinp                No\nnewwin                  No\ndelwin                 Yes\nmvwin                  Yes\nsubwin                 Yes\nderwin                 Yes\nmvderwin               Yes\ndupwin                 Yes\nsyncup                 Yes        wsyncup\nsyncok                 Yes\ncursyncup              Yes        wcursyncup\nsyncdown               Yes        wsyncdown\ngetmouse                No\nungetmouse              No\nmousemask               No\nenclose                Yes        wenclose\nmousetrafo            Yes        wmousetrafo\nmouseinterval           No\nBUTTONRELEASE          No\nBUTTONPRESS            No\nBUTTONCLICK            No\nBUTTONDOUBLECLICK     No\nBUTTONTRIPLECLICK     No\nBUTTONRESERVEDEVENT   No\nusedefaultcolors      No\nassumedefaultcolors   No\ndefinekey              No\nkeybound                No\nkeyok                   No\nresizeterm              No\nresize                 Yes        wresize\ngetmaxy                Yes\ngetmaxx                Yes\nflusok                 Yes\ngetcap                  No\ntouchoverlap            No\nnewpanel               No\nbottompanel            No\ntoppanel               No\nshowpanel              No\nupdatepanels           No\nhidepanel              No\npanelwindow            No\nreplacepanel           No\nmovepanel              No\npanelhidden            No\npanelabove             No\npanelbelow             No\nsetpaneluserptr       No\npaneluserptr           No\ndelpanel               No\nsetmenufore           No\nmenufore               No\nsetmenuback           No\nmenuback               No\nsetmenugrey           No\nmenugrey               No\nsetmenupad            No\nmenupad                No\nposmenucursor         No\nmenudriver             No\nsetmenuformat         No\nmenuformat             No\nsetmenuitems          No\nmenuitems              No\nitemcount              No\nsetmenumark           No\nmenumark               No\nnewmenu                No\nfreemenu               No\nmenuopts               No\nsetmenuopts           No\nmenuoptson            No\nmenuoptsoff           No\nsetmenupattern        No\nmenupattern            No\npostmenu               No\nunpostmenu             No\nsetmenuuserptr        No\nmenuuserptr            No\nsetmenuwin            No\nmenuwin                No\nsetmenusub            No\nmenusub                No\nscalemenu              No\nsetcurrentitem        No\ncurrentitem            No\nsettoprow             No\ntoprow                 No\nitemindex              No\nitemname               No\nitemdescription        No\nnewitem                No\nfreeitem               No\nsetitemopts           No\nitemoptson            No\nitemoptsoff           No\nitemopts               No\nitemuserptr            No\nsetitemuserptr        No\nsetitemvalue          No\nitemvalue              No\nitemvisible            No\nmenurequestname       No\nmenurequestbyname    No\nsetmenuspacing        No\nmenuspacing            No\nposformcursor         No\ndataahead              No\ndatabehind             No\nformdriver             No\nsetformfields         No\nformfields             No\nfieldcount             No\nmovefield              No\nnewform                No\nfreeform               No\nsetnewpage            No\nnewpage                No\nsetformopts           No\nformoptson            No\nformoptsoff           No\nformopts               No\nsetcurrentfield       No\ncurrentfield           No\nsetformpage           No\nformpage               No\nfieldindex             No\npostform               No\nunpostform             No\nsetformuserptr        No\nformuserptr            No\nsetformwin            No\nformwin                No\nsetformsub            No\nformsub                No\nscaleform              No\nsetfieldfore          No\nfieldfore              No\nsetfieldback          No\nfieldback              No\nsetfieldpad           No\nfieldpad               No\nsetfieldbuffer        No\nfieldbuffer            No\nsetfieldstatus        No\nfieldstatus            No\nsetmaxfield           No\nfieldinfo              No\ndynamicfieldinfo      No\nsetfieldjust          No\nfieldjust              No\nnewfield               No\ndupfield               No\nlinkfield              No\nfreefield              No\nsetfieldopts          No\nfieldoptson           No\nfieldoptsoff          No\nfieldopts              No\nsetfielduserptr       No\nfielduserptr           No\nfieldarg               No\nformrequestname       No\nformrequestbyname    No\n\n[*] To use any functions in this column, the program must set the variable $Curses::OldCurses\nvariable to a non-zero value before using the \"Curses\" package. See \"Perl 4.X cursperl\nCompatibility\" for an example of this.\n"
                },
                {
                    "name": "Available Wide-Character-Aware Functions",
                    "content": "Function    Uses wide-character call  Reverts to legacy call\n--------    ------------------------  ----------------------\ngetchar     wgetwch                  wgetch\ngetstring   wgetnwstr                wgetnstr\nungetchar   ungetwch                 ungetch\ninstring    winnwtr                   winnstr\naddstring   waddnwstr                 waddnstr\ninsstring   winsnwstr                winsnstr\n"
                },
                {
                    "name": "Available Variables",
                    "content": "LINES                   COLS                    stdscr\ncurscr                  COLORS                  COLORPAIRS\n"
                },
                {
                    "name": "Available Constants",
                    "content": "ERR                     OK                      ACSBLOCK\nACSBOARD               ACSBTEE                ACSBULLET\nACSCKBOARD             ACSDARROW              ACSDEGREE\nACSDIAMOND             ACSHLINE               ACSLANTERN\nACSLARROW              ACSLLCORNER            ACSLRCORNER\nACSLTEE                ACSPLMINUS             ACSPLUS\nACSRARROW              ACSRTEE                ACSS1\nACSS9                  ACSTTEE                ACSUARROW\nACSULCORNER            ACSURCORNER            ACSVLINE\nAALTCHARSET            AATTRIBUTES            ABLINK\nABOLD                  ACHARTEXT              ACOLOR\nADIM                   AINVIS                 ANORMAL\nAPROTECT               AREVERSE               ASTANDOUT\nAUNDERLINE             AITALIC\nCOLORBLACK             COLORBLUE\nCOLORCYAN              COLORGREEN             COLORMAGENTA\nCOLORRED               COLORWHITE             COLORYELLOW\nKEYA1                  KEYA3                  KEYB2\nKEYBACKSPACE           KEYBEG                 KEYBREAK\nKEYBTAB                KEYC1                  KEYC3\nKEYCANCEL              KEYCATAB               KEYCLEAR\nKEYCLOSE               KEYCOMMAND             KEYCOPY\nKEYCREATE              KEYCTAB                KEYDC\nKEYDL                  KEYDOWN                KEYEIC\nKEYEND                 KEYENTER               KEYEOL\nKEYEOS                 KEYEVENT               KEYEXIT\nKEYF0\nKEYFIND                KEYHELP                KEYHOME\nKEYIC                  KEYIL                  KEYLEFT\nKEYLL                  KEYMARK                KEYMAX\nKEYMESSAGE             KEYMIN                 KEYMOVE\nKEYNEXT                KEYNPAGE               KEYOPEN\nKEYOPTIONS             KEYPPAGE               KEYPREVIOUS\nKEYPRINT               KEYREDO                KEYREFERENCE\nKEYREFRESH             KEYREPLACE             KEYRESET\nKEYRESIZE              KEYRESTART             KEYRESUME\nKEYRIGHT\nKEYSAVE                KEYSBEG                KEYSCANCEL\nKEYSCOMMAND            KEYSCOPY               KEYSCREATE\nKEYSDC                 KEYSDL                 KEYSELECT\nKEYSEND                KEYSEOL                KEYSEXIT\nKEYSF                  KEYSFIND               KEYSHELP\nKEYSHOME               KEYSIC                 KEYSLEFT\nKEYSMESSAGE            KEYSMOVE               KEYSNEXT\nKEYSOPTIONS            KEYSPREVIOUS           KEYSPRINT\nKEYSR                  KEYSREDO               KEYSREPLACE\nKEYSRESET              KEYSRIGHT              KEYSRSUME\nKEYSSAVE               KEYSSUSPEND            KEYSTAB\nKEYSUNDO               KEYSUSPEND             KEYUNDO\nKEYUP                  KEYMOUSE               BUTTON1RELEASED\nBUTTON1PRESSED         BUTTON1CLICKED         BUTTON1DOUBLECLICKED\nBUTTON1TRIPLECLICKED  BUTTON1RESERVEDEVENT  BUTTON2RELEASED\nBUTTON2PRESSED         BUTTON2CLICKED         BUTTON2DOUBLECLICKED\nBUTTON2TRIPLECLICKED  BUTTON2RESERVEDEVENT  BUTTON3RELEASED\nBUTTON3PRESSED         BUTTON3CLICKED         BUTTON3DOUBLECLICKED\nBUTTON3TRIPLECLICKED  BUTTON3RESERVEDEVENT  BUTTON4RELEASED\nBUTTON4PRESSED         BUTTON4CLICKED         BUTTON4DOUBLECLICKED\nBUTTON4TRIPLECLICKED  BUTTON4RESERVEDEVENT  BUTTONCTRL\nBUTTONSHIFT            BUTTONALT              ALLMOUSEEVENTS\nREPORTMOUSEPOSITION   NCURSESMOUSEVERSION   EOK\nESYSTEMERROR          EBADARGUMENT          EPOSTED\nECONNECTED             EBADSTATE             ENOROOM\nENOTPOSTED            EUNKNOWNCOMMAND       ENOMATCH\nENOTSELECTABLE        ENOTCONNECTED         EREQUESTDENIED\nEINVALIDFIELD         ECURRENT               REQLEFTITEM\nREQRIGHTITEM          REQUPITEM             REQDOWNITEM\nREQSCRULINE           REQSCRDLINE           REQSCRDPAGE\nREQSCRUPAGE           REQFIRSTITEM          REQLASTITEM\nREQNEXTITEM           REQPREVITEM           REQTOGGLEITEM\nREQCLEARPATTERN       REQBACKPATTERN        REQNEXTMATCH\nREQPREVMATCH          MINMENUCOMMAND        MAXMENUCOMMAND\nOONEVALUE              OSHOWDESC              OROWMAJOR\nOIGNORECASE            OSHOWMATCH             ONONCYCLIC\nOSELECTABLE            REQNEXTPAGE           REQPREVPAGE\nREQFIRSTPAGE          REQLASTPAGE           REQNEXTFIELD\nREQPREVFIELD          REQFIRSTFIELD         REQLASTFIELD\nREQSNEXTFIELD         REQSPREVFIELD         REQSFIRSTFIELD\nREQSLASTFIELD         REQLEFTFIELD          REQRIGHTFIELD\nREQUPFIELD            REQDOWNFIELD          REQNEXTCHAR\nREQPREVCHAR           REQNEXTLINE           REQPREVLINE\nREQNEXTWORD           REQPREVWORD           REQBEGFIELD\nREQENDFIELD           REQBEGLINE            REQENDLINE\nREQLEFTCHAR           REQRIGHTCHAR          REQUPCHAR\nREQDOWNCHAR           REQNEWLINE            REQINSCHAR\nREQINSLINE            REQDELCHAR            REQDELPREV\nREQDELLINE            REQDELWORD            REQCLREOL\nREQCLREOF             REQCLRFIELD           REQOVLMODE\nREQINSMODE            REQSCRFLINE           REQSCRBLINE\nREQSCRFPAGE           REQSCRBPAGE           REQSCRFHPAGE\nREQSCRBHPAGE          REQSCRFCHAR           REQSCRBCHAR\nREQSCRHFLINE          REQSCRHBLINE          REQSCRHFHALF\nREQSCRHBHALF          REQVALIDATION          REQNEXTCHOICE\nREQPREVCHOICE         MINFORMCOMMAND        MAXFORMCOMMAND\nNOJUSTIFICATION        JUSTIFYLEFT            JUSTIFYCENTER\nJUSTIFYRIGHT           OVISIBLE               OACTIVE\nOPUBLIC                OEDIT                  OWRAP\nOBLANK                 OAUTOSKIP              ONULLOK\nOPASSOK                OSTATIC                ONLOVERLOAD\nOBSOVERLOAD\n\nCurses functions not available through Perl \"Curses\"\ntstp putchar fullname scanw wscanw mvscanw mvwscanw ripoffline\nsetupterm setterm setcurterm delcurterm restartterm tparm tputs\nputp vidputs vidattr mvcur tigetflag tigetnum tigetstr tgetent\ntgetflag tgetnum tgetstr tgoto tputs\n\nCurses menu functions not available through Perl \"Curses\"\nsetiteminit iteminit setitemterm itemterm setmenuinit\nmenuinit setmenuterm menuterm\n\nCurses form functions not available through Perl \"Curses\"\nnewfieldtype freefieldtype setfieldtypearg\nsetfieldtypechoice linkfieldtype setforminit forminit\nsetformterm formterm setfieldinit fieldinit setfieldterm\nfieldterm setfieldtype fieldtype\n"
                }
            ]
        }
    },
    "summary": "Curses - terminal screen handling and optimization",
    "flags": [],
    "examples": [],
    "see_also": []
}