1 \section{\module{curses
} ---
2 Terminal handling for character-cell displays
}
4 \declaremodule{standard
}{curses
}
5 \sectionauthor{Moshe Zadka
}{moshez@zadka.site.co.il
}
6 \sectionauthor{Eric Raymond
}{esr@thyrsus.com
}
7 \modulesynopsis{An interface to the curses library, providing portable
10 \versionchanged[Added support for the
\code{ncurses
} library and
11 converted to a package
]{1.6}
13 The
\module{curses
} module provides an interface to the curses
14 library, the de-facto standard for portable advanced terminal
17 While curses is most widely used in the
\UNIX{} environment, versions
18 are available for DOS, OS/
2, and possibly other systems as well. This
19 extension module is designed to match the API of ncurses, an
20 open-source curses library hosted on Linux and the BSD variants of
24 \seemodule{curses.ascii
}{Utilities for working with
\ASCII{}
25 characters, regardless of your locale
27 \seemodule{curses.panel
}{A panel stack extension that adds depth to
29 \seemodule{curses.textpad
}{Editable text widget for curses supporting
30 \program{Emacs
}-like bindings.
}
31 \seemodule{curses.wrapper
}{Convenience function to ensure proper
32 terminal setup and resetting on
33 application entry and exit.
}
34 \seetitle[http://www.python.org/doc/howto/curses/curses.html
]{Curses
35 Programming with Python
}{Tutorial material on using curses
36 with Python, by Andrew Kuchling, is available on the
38 \seetitle[Demo/curses
]{}{Some example programs.
}
42 \subsection{Functions
\label{curses-functions
}}
44 The module
\module{curses
} defines the following exception:
46 \begin{excdesc
}{error
}
47 Exception raised when a curses library function returns an error.
50 \strong{Note:
} Whenever
\var{x
} or
\var{y
} arguments to a function
51 or a method are optional, they default to the current cursor location.
52 Whenever
\var{attr
} is optional, it defaults to
\constant{A_NORMAL
}.
54 The module
\module{curses
} defines the following functions:
56 \begin{funcdesc
}{baudrate
}{}
57 Returns the output speed of the terminal in bits per second. On
58 software terminal emulators it will have a fixed high value.
59 Included for historical reasons; in former times, it was used to
60 write output loops for time delays and occasionally to change
61 interfaces depending on the line speed.
64 \begin{funcdesc
}{beep
}{}
65 Emit a short attention sound.
68 \begin{funcdesc
}{can_change_color
}{}
69 Returns true or false, depending on whether the programmer can change
70 the colors displayed by the terminal.
73 \begin{funcdesc
}{cbreak
}{}
74 Enter cbreak mode. In cbreak mode (sometimes called ``rare'' mode)
75 normal tty line buffering is turned off and characters are available
76 to be read one by one. However, unlike raw mode, special characters
77 (interrupt, quit, suspend, and flow control) retain their effects on
78 the tty driver and calling program. Calling first
\function{raw()
}
79 then
\function{cbreak()
} leaves the terminal in cbreak mode.
82 \begin{funcdesc
}{color_content
}{color_number
}
83 Returns the intensity of the red, green, and blue (RGB) components in
84 the
color \var{color_number
}, which must be between
\code{0} and
85 \constant{COLORS
}. A
3-tuple is returned, containing the R,G,B values
86 for the given
color, which will be between
\code{0} (no component) and
87 \code{1000} (maximum amount of component).
90 \begin{funcdesc
}{color_pair
}{color_number
}
91 Returns the attribute value for displaying text in the specified
92 color. This attribute value can be combined with
93 \constant{A_STANDOUT
},
\constant{A_REVERSE
}, and the other
94 \constant{A_*
} attributes.
\function{pair_number()
} is the
95 counterpart to this function.
98 \begin{funcdesc
}{curs_set
}{visibility
}
99 Sets the cursor state.
\var{visibility
} can be set to
0,
1, or
2, for
100 invisible, normal, or very visible. If the terminal supports the
101 visibility requested, the previous cursor state is returned;
102 otherwise, an exception is raised. On many terminals, the ``visible''
103 mode is an underline cursor and the ``very visible'' mode is a block cursor.
106 \begin{funcdesc
}{def_prog_mode
}{}
107 Saves the current terminal mode as the ``program'' mode, the mode when
108 the running program is using curses. (Its counterpart is the
109 ``shell'' mode, for when the program is not in curses.) Subsequent calls
110 to
\function{reset_prog_mode()
} will restore this mode.
113 \begin{funcdesc
}{def_shell_mode
}{}
114 Saves the current terminal mode as the ``shell'' mode, the mode when
115 the running program is not using curses. (Its counterpart is the
116 ``program'' mode, when the program is using curses capabilities.)
118 to
\function{reset_shell_mode()
} will restore this mode.
121 \begin{funcdesc
}{delay_output
}{ms
}
122 Inserts an
\var{ms
} millisecond pause in output.
125 \begin{funcdesc
}{doupdate
}{}
126 Update the physical screen. The curses library keeps two data
127 structures, one representing the current physical screen contents
128 and a virtual screen representing the desired next state. The
129 \function{doupdate()
} ground updates the physical screen to match the
132 The virtual screen may be updated by a
\method{noutrefresh()
} call
133 after write operations such as
\method{addstr()
} have been performed
134 on a window. The normal
\method{refresh()
} call is simply
135 \method{noutrefresh()
} followed by
\function{doupdate()
}; if you have
136 to update multiple windows, you can speed performance and perhaps
137 reduce screen flicker by issuing
\method{noutrefresh()
} calls on
138 all windows, followed by a single
\function{doupdate()
}.
141 \begin{funcdesc
}{echo
}{}
142 Enter echo mode. In echo mode, each character input is echoed to the
143 screen as it is entered.
146 \begin{funcdesc
}{endwin
}{}
147 De-initialize the library, and return terminal to normal status.
150 \begin{funcdesc
}{erasechar
}{}
151 Returns the user's current erase character. Under Unix operating
152 systems this is a property of the controlling tty of the curses
153 program, and is not set by the curses library itself.
156 \begin{funcdesc
}{filter
}{}
157 The
\function{filter()
} routine, if used, must be called before
158 \function{initscr()
} is called. The effect is that, during those
159 calls, LINES is set to
1; the capabilities clear, cup, cud, cud1,
160 cuu1, cuu, vpa are disabled; and the home string is set to the value of cr.
161 The effect is that the cursor is confined to the current line, and so
162 are screen updates. This may be used for enabling cgaracter-at-a-time
163 line editing without touching the rest of the screen.
166 \begin{funcdesc
}{flash
}{}
167 Flash the screen. That is, change it to reverse-video and then change
168 it back in a short interval. Some people prefer such as `visible bell'
169 to the audible attention signal produced by
\function{beep()
}.
172 \begin{funcdesc
}{flushinp
}{}
173 Flush all input buffers. This throws away any typeahead that has
174 been typed by the user and has not yet been processed by the program.
177 \begin{funcdesc
}{getmouse
}{}
178 After
\method{getch()
} returns
\constant{KEY_MOUSE
} to signal a mouse
179 event, this method should be call to retrieve the queued mouse event,
180 represented as a
5-tuple
181 \code{(
\var{id
},
\var{x
},
\var{y
},
\var{z
},
\var{bstate
})
}.
182 \var{id
} is an ID value used to distinguish multiple devices,
183 and
\var{x
},
\var{y
},
\var{z
} are the event's coordinates. (
\var{z
}
184 is currently unused.).
\var{bstate
} is an integer value whose bits
185 will be set to indicate the type of event, and will be the bitwise OR
186 of one or more of the following constants, where
\var{n
} is the button
188 \constant{BUTTON
\var{n
}_PRESSED
},
189 \constant{BUTTON
\var{n
}_RELEASED
},
190 \constant{BUTTON
\var{n
}_CLICKED
},
191 \constant{BUTTON
\var{n
}_DOUBLE_CLICKED
},
192 \constant{BUTTON
\var{n
}_TRIPLE_CLICKED
},
193 \constant{BUTTON_SHIFT
},
194 \constant{BUTTON_CTRL
},
195 \constant{BUTTON_ALT
}.
198 \begin{funcdesc
}{getsyx
}{}
199 Returns the current coordinates of the virtual screen cursor in y and
200 x. If leaveok is currently true, then -
1,-
1 is returned.
203 \begin{funcdesc
}{getwin
}{file
}
204 Reads window related data stored in the file by an earlier
205 \function{putwin()
} call. The routine then creates and initializes a
206 new window using that data, returning the new window object.
209 \begin{funcdesc
}{has_colors
}{}
210 Returns true if the terminal can display colors; otherwise, it
214 \begin{funcdesc
}{has_ic
}{}
215 Returns true if the terminal has insert- and delete- character
216 capabilities. This function is included for historical reasons only,
217 as all modern software terminal emulators have such capabilities.
220 \begin{funcdesc
}{has_il
}{}
221 Returns true if the terminal has insert- and
222 delete-line capabilities, or can simulate them using
223 scrolling regions. This function is included for historical reasons only,
224 as all modern software terminal emulators have such capabilities.
227 \begin{funcdesc
}{has_key
}{ch
}
228 Takes a key value
\var{ch
}, and returns true if the current terminal
229 type recognizes a key with that value.
232 \begin{funcdesc
}{halfdelay
}{tenths
}
233 Used for half-delay mode, which is similar to cbreak mode in that
234 characters typed by the user are immediately available to the program.
235 However, after blocking for
\var{tenths
} tenths of seconds, an
236 exception is raised if nothing has been typed. The value of
237 \var{tenths
} must be a number between
1 and
255. Use
238 \function{nocbreak()
} to leave half-delay mode.
241 \begin{funcdesc
}{init_color
}{color_number, r, g, b
}
242 Changes the definition of a
color, taking the number of the
color to
243 be changed followed by three RGB values (for the amounts of red,
244 green, and blue components). The value of
\var{color_number
} must be
245 between
\code{0} and
\constant{COLORS
}. Each of
\var{r
},
\var{g
},
246 \var{b
}, must be a value between
\code{0} and
\code{1000}. When
247 \function{init_color()
} is used, all occurrences of that
color on the
248 screen immediately change to the new definition. This function is a
249 no-op on most terminals; it is active only if
250 \function{can_change_color()
} returns
\code{1}.
253 \begin{funcdesc
}{init_pair
}{pair_number, fg, bg
}
254 Changes the definition of a
color-pair. It takes three arguments: the
255 number of the
color-pair to be changed, the foreground
color number,
256 and the background
color number. The value of
\var{pair_number
} must
257 be between
\code{1} and
\code{COLOR_PAIRS -
1} (the
\code{0} color
258 pair is wired to white on black and cannot be changed). The value of
259 \var{fg
} and
\var{bg
} arguments must be between
\code{0} and
260 \constant{COLORS
}. If the
color-pair was previously initialized, the
261 screen is refreshed and all occurrences of that
color-pair are changed
262 to the new definition.
265 \begin{funcdesc
}{initscr
}{}
266 Initialize the library. Returns a
\class{WindowObject
} which represents
270 \begin{funcdesc
}{isendwin
}{}
271 Returns true if
\function{endwin()
} has been called (that is, the
272 curses library has been deinitialized).
275 \begin{funcdesc
}{keyname
}{k
}
276 Return the name of the key numbered
\var{k
}. The name of a key
277 generating printable ASCII character is the key's character. The name
278 of a control-key combination is a two-character string consisting of a
279 caret followed by the corresponding printable ASCII character. The
280 name of an alt-key combination (
128-
255) is a string consisting of the
281 prefix `M-' followed by the name of the corresponding ASCII character.
284 \begin{funcdesc
}{killchar
}{}
285 Returns the user's current line kill character. Under Unix operating
286 systems this is a property of the controlling tty of the curses
287 program, and is not set by the curses library itself.
290 \begin{funcdesc
}{longname
}{}
291 Returns a string containing the terminfo long name field describing the current
292 terminal. The maximum length of a verbose description is
128
293 characters. It is defined only after the call to
294 \function{initscr()
}.
297 \begin{funcdesc
}{meta
}{yes
}
298 If
\var{yes
} is
1, allow
8-bit characters to be input. If
\var{yes
} is
0,
299 allow only
7-bit chars.
302 \begin{funcdesc
}{mouseinterval
}{interval
}
303 Sets the maximum time in milliseconds that can elapse between press and
304 release events in order for them to be recognized as a click, and
305 returns the previous interval value. The default value is
200 msec,
306 or one fifth of a second.
309 \begin{funcdesc
}{mousemask
}{mousemask
}
310 Sets the mouse events to be reported, and returns a tuple
311 \code{(
\var{availmask
},
\var{oldmask
})
}.
312 \var{availmask
} indicates which of the
313 specified mouse events can be reported; on complete failure it returns
314 0.
\var{oldmask
} is the previous value of the given window's mouse
315 event mask. If this function is never called, no mouse events are
319 \begin{funcdesc
}{napms
}{ms
}
320 Sleep for
\var{ms
} milliseconds.
323 \begin{funcdesc
}{newpad
}{nlines, ncols
}
324 Creates and returns a pointer to a new pad data structure with the
325 given number of lines and columns. A pad is returned as a
328 A pad is like a window, except that it is not restricted by the screen
329 size, and is not necessarily associated with a particular part of the
330 screen. Pads can be used when a large window is needed, and only a
331 part of the window will be on the screen at one time. Automatic
332 refreshes of pads (e.g., from scrolling or echoing of input) do not
333 occur. The
\method{refresh()
} and
\method{noutrefresh()
} methods of a
334 pad require
6 arguments to specify the part of the pad to be
335 displayed and the location on the screen to be used for the display.
336 The arguments are pminrow, pmincol, sminrow, smincol, smaxrow,
337 smaxcol; the p arguments refer to the upper left corner of the the pad
338 region to be displayed and the s arguments define a clipping box on
339 the screen within which the pad region is to be displayed.
342 \begin{funcdesc
}{newwin
}{\optional{nlines, ncols,
} begin_y, begin_x
}
343 Return a new window, whose left-upper corner is at
344 \code{(
\var{begin_y
},
\var{begin_x
})
}, and whose height/width is
345 \var{nlines
}/
\var{ncols
}.
347 By default, the window will extend from the
348 specified position to the lower right corner of the screen.
351 \begin{funcdesc
}{nl
}{}
352 Enter newline mode. This mode translates the return key into newline
353 on input, and translates newline into return and line-feed on output.
354 Newline mode is initially on.
357 \begin{funcdesc
}{nocbreak
}{}
358 Leave cbreak mode. Return to normal ``cooked'' mode with line buffering.
361 \begin{funcdesc
}{noecho
}{}
362 Leave echo mode. Echoing of input characters is turned off,
365 \begin{funcdesc
}{nonl
}{}
366 Leave newline mode. Disable translation of return into newline on
367 input, and disable low-level translation of newline into
368 newline/return on output (but this does not change the behavior of
369 \code{addch('
\e n')
}, which always does the equivalent of return and
370 line feed on the virtual screen). With translation off, curses can
371 sometimes speed up vertical motion a little; also, it will be able to
372 detect the return key on input.
375 \begin{funcdesc
}{noqiflush
}{}
376 When the noqiflush routine is used, normal flush of input and
377 output queues associated with the INTR, QUIT and SUSP
378 characters will not be done. You may want to call
379 \function{noqiflush()
} in a signal handler if you want output
380 to continue as though the interrupt had not occurred, after the
384 \begin{funcdesc
}{noraw
}{}
385 Leave raw mode. Return to normal ``cooked'' mode with line buffering.
388 \begin{funcdesc
}{pair_content
}{pair_number
}
389 Returns a tuple
\var{(fg,bg)
} containing the colors for the requested
390 color pair. The value of
\var{pair_number
} must be between
0 and
394 \begin{funcdesc
}{pair_number
}{attr
}
395 Returns the number of the
color-pair set by the attribute value
\var{attr
}.
396 \function{color_pair()
} is the counterpart to this function.
399 \begin{funcdesc
}{putp
}{string
}
400 Equivalent to
\code{tputs(str,
1, putchar)
}; emits the value of a
401 specified terminfo capability for the current terminal. Note that the
402 output of putp always goes to standard output.
405 \begin{funcdesc
}{qiflush
}{ \optional{flag
} }
406 If
\var{flag
} is false, the effect is the same as calling
407 \function{noqiflush()
}. If
\var{flag
} is true, or no argument is
408 provided, the queues will be flushed when these control characters are
412 \begin{funcdesc
}{raw
}{}
413 Enter raw mode. In raw mode, normal line buffering and
414 processing of interrupt, quit, suspend, and flow control keys are
415 turned off; characters are presented to curses input functions one
419 \begin{funcdesc
}{reset_prog_mode
}{}
420 Restores the terminal to ``program'' mode, as previously saved
421 by
\function{def_prog_mode()
}.
424 \begin{funcdesc
}{reset_shell_mode
}{}
425 Restores the terminal to ``shell'' mode, as previously saved
426 by
\function{def_shell_mode()
}.
429 \begin{funcdesc
}{setsyx
}{y, x
}
430 Sets the virtual screen cursor to
\var{y
},
\var{x
}.
431 If
\var{y
} and
\var{x
} are both -
1, then leaveok is set.
434 \begin{funcdesc
}{setupterm
}{\optional{termstr, fd
}}
435 Initializes the terminal.
\var{termstr
} is a string giving the
436 terminal name; if omitted, the value of the TERM environment variable
437 will be used.
\var{fd
} is the file descriptor to which any
438 initialization sequences will be sent; if not supplied, the file
439 descriptor for
\code{sys.stdout
} will be used.
442 \begin{funcdesc
}{start_color
}{}
443 Must be called if the programmer wants to use colors, and before any
444 other
color manipulation routine is called. It is good
445 practice to call this routine right after
\function{initscr()
}.
447 \function{start_color()
} initializes eight basic colors (black, red,
448 green, yellow, blue, magenta, cyan, and white), and two global
449 variables in the
\module{curses
} module,
\constant{COLORS
} and
450 \constant{COLOR_PAIRS
}, containing the maximum number of colors and
451 color-pairs the terminal can support. It also restores the colors on
452 the terminal to the values they had when the terminal was just turned
456 \begin{funcdesc
}{termattrs
}{}
457 Returns a logical OR of all video attributes supported by the
458 terminal. This information is useful when a curses program needs
459 complete control over the appearance of the screen.
462 \begin{funcdesc
}{termname
}{}
463 Returns the value of the environment variable TERM, truncated to
14
467 \begin{funcdesc
}{tigetflag
}{capname
}
468 Returns the value of the Boolean capability corresponding to the
469 terminfo capability name
\var{capname
}. The value
\code{-
1} is
470 returned if
\var{capname
} is not a Boolean capability, or
\code{0} if
471 it is canceled or absent from the terminal description.
474 \begin{funcdesc
}{tigetnum
}{capname
}
475 Returns the value of the numeric capability corresponding to the
476 terminfo capability name
\var{capname
}. The value
\code{-
2} is
477 returned if
\var{capname
} is not a numeric capability, or
\code{-
1} if
478 it is canceled or absent from the terminal description.
481 \begin{funcdesc
}{tigetstr
}{capname
}
482 Returns the value of the string capability corresponding to the
483 terminfo capability name
\var{capname
}.
\code{None
} is returned if
484 \var{capname
} is not a string capability, or is canceled or absent
485 from the terminal description.
488 \begin{funcdesc
}{tparm
}{str
\optional{,...
}}
489 Instantiates the string
\var{str
} with the supplied parameters, where
490 \var{str
} should be a parameterized string obtained from the terminfo
491 database. E.g.
\code{tparm(tigetstr("cup"),
5,
3)
} could result in
492 \code{'
\e{}033[6;
4H'
}, the exact result depending on terminal type.
495 \begin{funcdesc
}{typeahead
}{fd
}
496 Specifies that the file descriptor
\var{fd
} be used for typeahead
497 checking. If
\var{fd
} is
\code{-
1}, then no typeahead checking is
500 The curses library does ``line-breakout optimization'' by looking for
501 typeahead periodically while updating the screen. If input is found,
502 and it is coming from a tty, the current update is postponed until
503 refresh or doupdate is called again, allowing faster response to
504 commands typed in advance. This function allows specifying a different
505 file descriptor for typeahead checking.
508 \begin{funcdesc
}{unctrl
}{ch
}
509 Returns a string which is a printable representation of the character
510 \var{ch
}. Control characters are displayed as a caret followed by the
511 character, for example as
\verb|^C|. Printing characters are left as they
515 \begin{funcdesc
}{ungetch
}{ch
}
516 Push
\var{ch
} so the next
\method{getch()
} will return it.
517 \strong{Note:
} only one
\var{ch
} can be pushed before
\method{getch()
}
521 \begin{funcdesc
}{ungetmouse
}{id, x, y, z, bstate
}
522 Push a
\constant{KEY_MOUSE
} event onto the input queue, associating
523 the given state data with it.
526 \begin{funcdesc
}{use_env
}{flag
}
527 If used, this function should be called before
\function{initscr()
} or
528 newterm are called. When
\var{flag
} is false, the values of
529 lines and columns specified in the terminfo database will be
530 used, even if environment variables
\envvar{LINES
} and
531 \envvar{COLUMNS
} (used by default) are set, or if curses is running in
532 a window (in which case default behavior would be to use the window
533 size if
\envvar{LINES
} and
\envvar{COLUMNS
} are not set).
536 \subsection{Window Objects
\label{curses-window-objects
}}
538 Window objects, as returned by
\function{initscr()
} and
539 \function{newwin()
} above, have the
542 \begin{methoddesc
}{addch
}{\optional{y, x,
} ch
\optional{, attr
}}
543 \strong{Note:
} A
\emph{character
} means a C character (i.e., an
544 \ASCII{} code), rather then a Python character (a string of length
1).
545 (This note is true whenever the documentation mentions a character.)
546 The builtin
\function{ord()
} is handy for conveying strings to codes.
548 Paint character
\var{ch
} at
\code{(
\var{y
},
\var{x
})
} with attributes
549 \var{attr
}, overwriting any character previously painter at that
550 location. By default, the character position and attributes are the
551 current settings for the window object.
554 \begin{methoddesc
}{addnstr
}{\optional{y, x,
} str, n
\optional{, attr
}}
555 Paint at most
\var{n
} characters of the
556 string
\var{str
} at
\code{(
\var{y
},
\var{x
})
} with attributes
557 \var{attr
}, overwriting anything previously on the display.
560 \begin{methoddesc
}{addstr
}{\optional{y, x,
} str
\optional{, attr
}}
561 Paint the string
\var{str
} at
\code{(
\var{y
},
\var{x
})
} with attributes
562 \var{attr
}, overwriting anything previously on the display.
565 \begin{methoddesc
}{attroff
}{attr
}
566 Remove attribute
\var{attr
} from the ``background'' set applied to all
567 writes to the current window.
570 \begin{methoddesc
}{attron
}{attr
}
571 Add attribute
\var{attr
} from the ``background'' set applied to all
572 writes to the current window.
575 \begin{methoddesc
}{attrset
}{attr
}
576 Set the ``background'' set of attributes to
\var{attr
}. This set is
577 initially
0 (no attributes).
580 \begin{methoddesc
}{bkgd
}{ch
\optional{, attr
}}
581 Sets the background property of the window to the character
\var{ch
},
582 with attributes
\var{attr
}. The change is then applied to every
583 character position in that window:
586 The attribute of every character in the window is
587 changed to the new background attribute.
589 Wherever the former background character appears,
590 it is changed to the new background character.
595 \begin{methoddesc
}{bkgdset
}{ch
\optional{, attr
}}
596 Sets the window's background. A window's background consists of a
597 character and any combination of attributes. The attribute part of
598 the background is combined (OR'ed) with all non-blank characters that
599 are written into the window. Both the character and attribute parts
600 of the background are combined with the blank characters. The
601 background becomes a property of the character and moves with the
602 character through any scrolling and insert/delete line/character
606 \begin{methoddesc
}{border
}{\optional{ls
\optional{, rs
\optional{, ts
\optional{,
607 bs
\optional{, tl
\optional{, tr
\optional{,
608 bl
\optional{, br
}}}}}}}}}
609 Draw a border around the edges of the window. Each parameter specifies
610 the character to use for a specific part of the border; see the table
611 below for more details. The characters must be specified as integers;
612 using one-character strings will cause
\exception{TypeError
} to be
615 \strong{Note:
} A
\code{0} value for any parameter will cause the
616 default character to be used for that parameter. Keyword parameters
617 can
\emph{not
} be used. The defaults are listed in this table:
619 \begin{tableiii
}{l|l|l
}{var
}{Parameter
}{Description
}{Default value
}
620 \lineiii{ls
}{Left side
}{\constant{ACS_VLINE
}}
621 \lineiii{rs
}{Right side
}{\constant{ACS_VLINE
}}
622 \lineiii{ts
}{Top
}{\constant{ACS_HLINE
}}
623 \lineiii{bs
}{Bottom
}{\constant{ACS_HLINE
}}
624 \lineiii{tl
}{Upper-left corner
}{\constant{ACS_ULCORNER
}}
625 \lineiii{tr
}{Upper-right corner
}{\constant{ACS_URCORNER
}}
626 \lineiii{bl
}{Bottom-left corner
}{\constant{ACS_BLCORNER
}}
627 \lineiii{br
}{Bottom-right corner
}{\constant{ACS_BRCORNER
}}
631 \begin{methoddesc
}{box
}{\optional{vertch, horch
}}
632 Similar to
\method{border()
}, but both
\var{ls
} and
\var{rs
} are
633 \var{vertch
} and both
\var{ts
} and
{bs
} are
\var{horch
}. The default
634 corner characters are always used by this function.
637 \begin{methoddesc
}{clear
}{}
638 Like
\method{erase()
}, but also causes the whole window to be repainted
639 upon next call to
\method{refresh()
}.
642 \begin{methoddesc
}{clearok
}{yes
}
643 If
\var{yes
} is
1, the next call to
\method{refresh()
}
644 will clear the window completely.
647 \begin{methoddesc
}{clrtobot
}{}
648 Erase from cursor to the end of the window: all lines below the cursor
649 are deleted, and then the equivalent of
\method{clrtoeol()
} is performed.
652 \begin{methoddesc
}{clrtoeol
}{}
653 Erase from cursor to the end of the line.
656 \begin{methoddesc
}{cursyncup
}{}
657 Updates the current cursor position of all the ancestors of the window
658 to reflect the current cursor position of the window.
661 \begin{methoddesc
}{delch
}{\optional{x, y
}}
662 Delete any character at
\code{(
\var{y
},
\var{x
})
}.
665 \begin{methoddesc
}{deleteln
}{}
666 Delete the line under the cursor. All following lines are moved up
670 \begin{methoddesc
}{derwin
}{\optional{nlines, ncols,
} begin_y, begin_y
}
671 An abbreviation for ``derive window'',
\method{derwin()
} is the same
672 as calling
\method{subwin()
}, except that
\var{begin_y
} and
673 \var{begin_x
} are relative to the origin of the window, rather than
674 relative to the entire screen. Returns a window object for the
678 \begin{methoddesc
}{echochar
}{ch
\optional{, attr
}}
679 Add character
\var{ch
} with attribute
\var{attr
}, and immediately
680 call
\method{refresh()
} on the window.
683 \begin{methoddesc
}{enclose
}{y, x
}
684 Tests whether the given pair of screen-relative character-cell
685 coordinates are enclosed by the given window, returning true or
686 false. It is useful for determining what subset of the screen
687 windows enclose the location of a mouse event.
690 \begin{methoddesc
}{erase
}{}
694 \begin{methoddesc
}{getbegyx
}{}
695 Return a tuple
\code{(
\var{y
},
\var{x
})
} of co-ordinates of upper-left
699 \begin{methoddesc
}{getch
}{\optional{x, y
}}
700 Get a character. Note that the integer returned does
\emph{not
} have to
701 be in
\ASCII{} range: function keys, keypad keys and so on return numbers
702 higher than
256. In no-delay mode, an exception is raised if there is
706 \begin{methoddesc
}{getkey
}{\optional{x, y
}}
707 Get a character, returning a string instead of an integer, as
708 \method{getch()
} does. Function keys, keypad keys and so on return a
709 multibyte string containing the key name. In no-delay mode, an
710 exception is raised if there is no input.
713 \begin{methoddesc
}{getmaxyx
}{}
714 Return a tuple
\code{(
\var{y
},
\var{x
})
} of the height and width of
718 \begin{methoddesc
}{getparyx
}{}
719 Returns the beginning coordinates of this window relative to its
720 parent window into two integer variables y and x. Returns
721 \code{-
1,-
1} if this window has no parent.
724 \begin{methoddesc
}{getstr
}{\optional{x, y
}}
725 Read a string from the user, with primitive line editing capacity.
728 \begin{methoddesc
}{getyx
}{}
729 Return a tuple
\code{(
\var{y
},
\var{x
})
} of current cursor position
730 relative to the window's upper-left corner.
733 \begin{methoddesc
}{hline
}{\optional{y, x,
} ch, n
}
734 Display a horizontal line starting at
\code{(
\var{y
},
\var{x
})
} with
735 length
\var{n
} consisting of the character
\var{ch
}.
738 \begin{methoddesc
}{idcok
}{flag
}
739 If
\var{flag
} is false, curses no longer considers using the hardware
740 insert/delete character feature of the terminal; if
\var{flag
} is
741 true, use of character insertion and deletion is enabled. When curses
742 is first initialized, use of character insert/delete is enabled by
746 \begin{methoddesc
}{idlok
}{yes
}
747 If called with
\var{yes
} equal to
1,
\module{curses
} will try and use
748 hardware line editing facilities. Otherwise, line insertion/deletion
752 \begin{methoddesc
}{immedok
}{flag
}
753 If
\var{flag
} is true, any change in the window image
754 automatically causes the window to be refreshed; you no longer
755 have to call
\method{refresh()
} yourself. However, it may
756 degrade performance considerably, due to repeated calls to
757 wrefresh. This option is disabled by default.
760 \begin{methoddesc
}{inch
}{\optional{x, y
}}
761 Return the character at the given position in the window. The bottom
762 8 bits are the character proper, and upper bits are the attributes.
765 \begin{methoddesc
}{insch
}{\optional{y, x,
} ch
\optional{, attr
}}
766 Paint character
\var{ch
} at
\code{(
\var{y
},
\var{x
})
} with attributes
767 \var{attr
}, moving the line from position
\var{x
} right by one
771 \begin{methoddesc
}{insdelln
}{nlines
}
772 Inserts
\var{nlines
} lines into the specified window above the current
773 line. The
\var{nlines
} bottom lines are lost. For negative
774 \var{nlines
}, delete
\var{nlines
} lines starting with the one under
775 the cursor, and move the remaining lines up. The bottom
\var{nlines
}
776 lines are cleared. The current cursor position remains the same.
779 \begin{methoddesc
}{insertln
}{}
780 Insert a blank line under the cursor. All following lines are moved
784 \begin{methoddesc
}{insnstr
}{\optional{y, x,
} str, n
\optional{, attr
}}
785 Insert a character string (as many characters as will fit on the line)
786 before the character under the cursor, up to
\var{n
} characters.
787 If
\var{n
} is zero or negative,
788 the entire string is inserted.
789 All characters to the right of
790 the cursor are shifted right, with the the rightmost characters on the
791 line being lost. The cursor position does not change (after moving to
792 \var{y
},
\var{x
}, if specified).
795 \begin{methoddesc
}{insstr
}{\optional{y, x,
} str
\optional{, attr
}}
796 Insert a character string (as many characters as will fit on the line)
797 before the character under the cursor. All characters to the right of
798 the cursor are shifted right, with the the rightmost characters on the
799 line being lost. The cursor position does not change (after moving to
800 \var{y
},
\var{x
}, if specified).
803 \begin{methoddesc
}{instr
}{\optional{y, x
} \optional{, n
}}
804 Returns a string of characters, extracted from the window starting at
805 the current cursor position, or at
\var{y
},
\var{x
} if specified.
806 Attributes are stripped from the characters. If
\var{n
} is specified,
807 \method{instr()
} returns return a string at most
\var{n
} characters
808 long (exclusive of the trailing NUL).
811 \begin{methoddesc
}{is_linetouched
}{\var{line
}}
812 Returns true if the specified line was modified since the last call to
813 \method{refresh()
}; otherwise returns false. Raises a
814 \exception{curses.error
} exception if
\var{line
} is not valid
815 for the given window.
818 \begin{methoddesc
}{is_wintouched
}{}
819 Returns true if the specified window was modified since the last call to
820 \method{refresh()
}; otherwise returns false.
823 \begin{methoddesc
}{keypad
}{yes
}
824 If
\var{yes
} is
1, escape sequences generated by some keys (keypad,
825 function keys) will be interpreted by
\module{curses
}.
826 If
\var{yes
} is
0, escape sequences will be left as is in the input
830 \begin{methoddesc
}{leaveok
}{yes
}
831 If
\var{yes
} is
1, cursor is left where it is on update, instead of
832 being at ``cursor position.'' This reduces cursor movement where
833 possible. If possible the cursor will be made invisible.
835 If
\var{yes
} is
0, cursor will always be at ``cursor position'' after
839 \begin{methoddesc
}{move
}{new_y, new_x
}
840 Move cursor to
\code{(
\var{new_y
},
\var{new_x
})
}.
843 \begin{methoddesc
}{mvderwin
}{y, x
}
844 Moves the window inside its parent window. The screen-relative
845 parameters of the window are not changed. This routine is used to
846 display different parts of the parent window at the same physical
847 position on the screen.
850 \begin{methoddesc
}{mvwin
}{new_y, new_x
}
851 Move the window so its upper-left corner is at
852 \code{(
\var{new_y
},
\var{new_x
})
}.
855 \begin{methoddesc
}{nodelay
}{yes
}
856 If
\var{yes
} is
\code{1},
\method{getch()
} will be non-blocking.
859 \begin{methoddesc
}{notimeout
}{yes
}
860 If
\var{yes
} is
\code{1}, escape sequences will not be timed out.
862 If
\var{yes
} is
\code{0}, after a few milliseconds, an escape sequence
863 will not be interpreted, and will be left in the input stream as is.
866 \begin{methoddesc
}{noutrefresh
}{}
867 Mark for refresh but wait. This function updates the data structure
868 representing the desired state of the window, but does not force
869 an update of the physical screen. To accomplish that, call
870 \function{doupdate()
}.
873 \begin{methoddesc
}{overlay
}{destwin
\optional{, sminrow, smincol,
874 dminrow, dmincol, dmaxrow, dmaxcol
}}
875 Overlay the window on top of
\var{destwin
}. The windows need not be
876 the same size, only the overlapping region is copied. This copy is
877 non-destructive, which means that the current background character
878 does not overwrite the old contents of
\var{destwin
}.
880 To get fine-grained control over the copied region, the second form
881 of
\method{overlay()
} can be used.
\var{sminrow
} and
\var{smincol
} are
882 the upper-left coordinates of the source window, and the other variables
883 mark a rectangle in the destination window.
886 \begin{methoddesc
}{overwrite
}{destwin
\optional{, sminrow, smincol,
887 dminrow, dmincol, dmaxrow, dmaxcol
}}
888 Overwrite the window on top of
\var{destwin
}. The windows need not be
889 the same size, in which case only the overlapping region is
890 copied. This copy is destructive, which means that the current
891 background character overwrites the old contents of
\var{destwin
}.
893 To get fine-grained control over the copied region, the second form
894 of
\method{overwrite()
} can be used.
\var{sminrow
} and
\var{smincol
} are
895 the upper-left coordinates of the source window, the other variables
896 mark a rectangle in the destination window.
899 \begin{methoddesc
}{putwin
}{file
}
900 Writes all data associated with the window into the provided file
901 object. This information can be later retrieved using the
902 \function{getwin()
} function.
906 \begin{methoddesc
}{redrawln
}{beg, num
}
907 Indicates that the
\var{num
} screen lines, starting at line
\var{beg
},
908 are corrupted and should be completely redrawn on the next
909 \method{refresh()
} call.
912 \begin{methoddesc
}{redrawwin
}{}
913 Touches the entire window, causing it to be completely redrawn on the
914 next
\method{refresh()
} call.
917 \begin{methoddesc
}{refresh
}{\optional{pminrow, pmincol, sminrow,
918 smincol, smaxrow, smaxcol
}}
919 Update the display immediately (sync actual screen with previous
920 drawing/deleting methods).
922 The
6 optional arguments can only be specified when the window is a
923 pad created with
\function{newpad()
}. The additional parameters are
924 needed to indicate what part of the pad and screen are involved.
925 \var{pminrow
} and
\var{pmincol
} specify the upper left-hand corner of the
926 rectangle to be displayed in the pad.
\var{sminrow
},
\var{smincol
},
927 \var{smaxrow
}, and
\var{smaxcol
} specify the edges of the rectangle to
928 be displayed on the screen. The lower right-hand corner of the
929 rectangle to be displayed in the pad is calculated from the screen
930 coordinates, since the rectangles must be the same size. Both
931 rectangles must be entirely contained within their respective
932 structures. Negative values of
\var{pminrow
},
\var{pmincol
},
933 \var{sminrow
}, or
\var{smincol
} are treated as if they were zero.
936 \begin{methoddesc
}{scroll
}{\optional{lines
\code{ =
1}}}
937 Scroll the screen or scrolling region upward by
\var{lines
} lines.
940 \begin{methoddesc
}{scrollok
}{flag
}
941 Controls what happens when the cursor of a window is moved off the
942 edge of the window or scrolling region, either as a result of a
943 newline action on the bottom line, or typing the last character
944 of the last line. If
\var{flag
} is false, the cursor is left
945 on the bottom line. If
\var{flag
} is true, the window is
946 scrolled up one line. Note that in order to get the physical
947 scrolling effect on the terminal, it is also necessary to call
951 \begin{methoddesc
}{setscrreg
}{top, bottom
}
952 Set the scrolling region from line
\var{top
} to line
\var{bottom
}. All
953 scrolling actions will take place in this region.
956 \begin{methoddesc
}{standend
}{}
957 Turn off the standout attribute. On some terminals this has the
958 side effect of turning off all attributes.
961 \begin{methoddesc
}{standout
}{}
962 Turn on attribute
\var{A_STANDOUT
}.
965 \begin{methoddesc
}{subpad
}{\optional{nlines, ncols,
} begin_y, begin_y
}
966 Return a sub-window, whose upper-left corner is at
967 \code{(
\var{begin_y
},
\var{begin_x
})
}, and whose width/height is
968 \var{ncols
}/
\var{nlines
}.
971 \begin{methoddesc
}{subwin
}{\optional{nlines, ncols,
} begin_y, begin_y
}
972 Return a sub-window, whose upper-left corner is at
973 \code{(
\var{begin_y
},
\var{begin_x
})
}, and whose width/height is
974 \var{ncols
}/
\var{nlines
}.
976 By default, the sub-window will extend from the
977 specified position to the lower right corner of the window.
980 \begin{methoddesc
}{syncdown
}{}
981 Touches each location in the window that has been touched in any of
982 its ancestor windows. This routine is called by
\method{refresh()
},
983 so it should almost never be necessary to call it manually.
986 \begin{methoddesc
}{syncok
}{flag
}
987 If called with
\var{flag
} set to true, then
\method{syncup()
} is
988 called automatically whenever there is a change in the window.
991 \begin{methoddesc
}{syncup
}{}
992 Touches all locations in ancestors of the window that have been changed in
996 \begin{methoddesc
}{timeout
}{delay
}
997 Sets blocking or non-blocking read behavior for the window. If
998 \var{delay
} is negative, blocking read is used, which will wait
999 indefinitely for input). If
\var{delay
} is zero, then non-blocking
1000 read is used, and -
1 will be returned by
\method{getch()
} if no input
1001 is waiting. If
\var{delay
} is positive, then
\method{getch()
} will
1002 block for
\var{delay
} milliseconds, and return -
1 if there is still no
1003 input at the end of that time.
1006 \begin{methoddesc
}{touchline
}{start, count
}
1007 Pretend
\var{count
} lines have been changed, starting with line
1011 \begin{methoddesc
}{touchwin
}{}
1012 Pretend the whole window has been changed, for purposes of drawing
1016 \begin{methoddesc
}{untouchwin
}{}
1017 Marks all lines in the window as unchanged since the last call to
1021 \begin{methoddesc
}{vline
}{\optional{y, x,
} ch, n
}
1022 Display a vertical line starting at
\code{(
\var{y
},
\var{x
})
} with
1023 length
\var{n
} consisting of the character
\var{ch
}.
1026 \subsection{Constants
}
1028 The
\module{curses
} module defines the following data members:
1030 \begin{datadesc
}{ERR
}
1031 Some curses routines that return an integer, such as
1032 \function{getch()
}, return
\constant{ERR
} upon failure.
1035 \begin{datadesc
}{OK
}
1036 Some curses routines that return an integer, such as
1037 \function{napms()
}, return
\constant{OK
} upon success.
1040 \begin{datadesc
}{version
}
1041 A string representing the current version of the module.
1042 Also available as
\constant{__version__
}.
1045 Several constants are available to specify character cell attributes:
1047 \begin{tableii
}{l|l
}{code
}{Attribute
}{Meaning
}
1048 \lineii{A_ALTCHARSET
}{Alternate character set mode.
}
1049 \lineii{A_BLINK
}{Blink mode.
}
1050 \lineii{A_BOLD
}{Bold mode.
}
1051 \lineii{A_DIM
}{Dim mode.
}
1052 \lineii{A_NORMAL
}{Normal attribute.
}
1053 \lineii{A_STANDOUT
}{Standout mode.
}
1054 \lineii{A_UNDERLINE
}{Underline mode.
}
1057 Keys are referred to by integer constants with names starting with
1058 \samp{KEY_
}. The exact keycaps available are system dependent.
1060 % XXX this table is far too large!
1061 % XXX should this table be alphabetized?
1063 \begin{longtableii
}{l|l
}{code
}{Key constant
}{Key
}
1064 \lineii{KEY_MIN
}{Minimum key value
}
1065 \lineii{KEY_BREAK
}{ Break key (unreliable)
}
1066 \lineii{KEY_DOWN
}{ Down-arrow
}
1067 \lineii{KEY_UP
}{ Up-arrow
}
1068 \lineii{KEY_LEFT
}{ Left-arrow
}
1069 \lineii{KEY_RIGHT
}{ Right-arrow
}
1070 \lineii{KEY_HOME
}{ Home key (upward+left arrow)
}
1071 \lineii{KEY_BACKSPACE
}{ Backspace (unreliable)
}
1072 \lineii{KEY_F0
}{ Function keys. Up to
64 function keys are supported.
}
1073 \lineii{KEY_F
\var{n
}}{ Value of function key
\var{n
} }
1074 \lineii{KEY_DL
}{ Delete line
}
1075 \lineii{KEY_IL
}{ Insert line
}
1076 \lineii{KEY_DC
}{ Delete character
}
1077 \lineii{KEY_IC
}{ Insert char or enter insert mode
}
1078 \lineii{KEY_EIC
}{ Exit insert char mode
}
1079 \lineii{KEY_CLEAR
}{ Clear screen
}
1080 \lineii{KEY_EOS
}{ Clear to end of screen
}
1081 \lineii{KEY_EOL
}{ Clear to end of line
}
1082 \lineii{KEY_SF
}{ Scroll
1 line forward
}
1083 \lineii{KEY_SR
}{ Scroll
1 line backward (reverse)
}
1084 \lineii{KEY_NPAGE
}{ Next page
}
1085 \lineii{KEY_PPAGE
}{ Previous page
}
1086 \lineii{KEY_STAB
}{ Set tab
}
1087 \lineii{KEY_CTAB
}{ Clear tab
}
1088 \lineii{KEY_CATAB
}{ Clear all tabs
}
1089 \lineii{KEY_ENTER
}{ Enter or send (unreliable)
}
1090 \lineii{KEY_SRESET
}{ Soft (partial) reset (unreliable)
}
1091 \lineii{KEY_RESET
}{ Reset or hard reset (unreliable)
}
1092 \lineii{KEY_PRINT
}{ Print
}
1093 \lineii{KEY_LL
}{ Home down or bottom (lower left)
}
1094 \lineii{KEY_A1
}{ Upper left of keypad
}
1095 \lineii{KEY_A3
}{ Upper right of keypad
}
1096 \lineii{KEY_B2
}{ Center of keypad
}
1097 \lineii{KEY_C1
}{ Lower left of keypad
}
1098 \lineii{KEY_C3
}{ Lower right of keypad
}
1099 \lineii{KEY_BTAB
}{ Back tab
}
1100 \lineii{KEY_BEG
}{ Beg (beginning)
}
1101 \lineii{KEY_CANCEL
}{ Cancel
}
1102 \lineii{KEY_CLOSE
}{ Close
}
1103 \lineii{KEY_COMMAND
}{ Cmd (command)
}
1104 \lineii{KEY_COPY
}{ Copy
}
1105 \lineii{KEY_CREATE
}{ Create
}
1106 \lineii{KEY_END
}{ End
}
1107 \lineii{KEY_EXIT
}{ Exit
}
1108 \lineii{KEY_FIND
}{ Find
}
1109 \lineii{KEY_HELP
}{ Help
}
1110 \lineii{KEY_MARK
}{ Mark
}
1111 \lineii{KEY_MESSAGE
}{ Message
}
1112 \lineii{KEY_MOVE
}{ Move
}
1113 \lineii{KEY_NEXT
}{ Next
}
1114 \lineii{KEY_OPEN
}{ Open
}
1115 \lineii{KEY_OPTIONS
}{ Options
}
1116 \lineii{KEY_PREVIOUS
}{ Prev (previous)
}
1117 \lineii{KEY_REDO
}{ Redo
}
1118 \lineii{KEY_REFERENCE
}{ Ref (reference)
}
1119 \lineii{KEY_REFRESH
}{ Refresh
}
1120 \lineii{KEY_REPLACE
}{ Replace
}
1121 \lineii{KEY_RESTART
}{ Restart
}
1122 \lineii{KEY_RESUME
}{ Resume
}
1123 \lineii{KEY_SAVE
}{ Save
}
1124 \lineii{KEY_SBEG
}{ Shifted Beg (beginning)
}
1125 \lineii{KEY_SCANCEL
}{ Shifted Cancel
}
1126 \lineii{KEY_SCOMMAND
}{ Shifted Command
}
1127 \lineii{KEY_SCOPY
}{ Shifted Copy
}
1128 \lineii{KEY_SCREATE
}{ Shifted Create
}
1129 \lineii{KEY_SDC
}{ Shifted Delete char
}
1130 \lineii{KEY_SDL
}{ Shifted Delete line
}
1131 \lineii{KEY_SELECT
}{ Select
}
1132 \lineii{KEY_SEND
}{ Shifted End
}
1133 \lineii{KEY_SEOL
}{ Shifted Clear line
}
1134 \lineii{KEY_SEXIT
}{ Shifted Dxit
}
1135 \lineii{KEY_SFIND
}{ Shifted Find
}
1136 \lineii{KEY_SHELP
}{ Shifted Help
}
1137 \lineii{KEY_SHOME
}{ Shifted Home
}
1138 \lineii{KEY_SIC
}{ Shifted Input
}
1139 \lineii{KEY_SLEFT
}{ Shifted Left arrow
}
1140 \lineii{KEY_SMESSAGE
}{ Shifted Message
}
1141 \lineii{KEY_SMOVE
}{ Shifted Move
}
1142 \lineii{KEY_SNEXT
}{ Shifted Next
}
1143 \lineii{KEY_SOPTIONS
}{ Shifted Options
}
1144 \lineii{KEY_SPREVIOUS
}{ Shifted Prev
}
1145 \lineii{KEY_SPRINT
}{ Shifted Print
}
1146 \lineii{KEY_SREDO
}{ Shifted Redo
}
1147 \lineii{KEY_SREPLACE
}{ Shifted Replace
}
1148 \lineii{KEY_SRIGHT
}{ Shifted Right arrow
}
1149 \lineii{KEY_SRSUME
}{ Shifted Resume
}
1150 \lineii{KEY_SSAVE
}{ Shifted Save
}
1151 \lineii{KEY_SSUSPEND
}{ Shifted Suspend
}
1152 \lineii{KEY_SUNDO
}{ Shifted Undo
}
1153 \lineii{KEY_SUSPEND
}{ Suspend
}
1154 \lineii{KEY_UNDO
}{ Undo
}
1155 \lineii{KEY_MOUSE
}{ Mouse event has occurred
}
1156 \lineii{KEY_RESIZE
}{ Terminal resize event
}
1157 \lineii{KEY_MAX
}{Maximum key value
}
1160 On VT100s and their software emulations, such as X terminal emulators,
1161 there are normally at least four function keys (
\constant{KEY_F1
},
1162 \constant{KEY_F2
},
\constant{KEY_F3
},
\constant{KEY_F4
}) available,
1163 and the arrow keys mapped to
\constant{KEY_UP
},
\constant{KEY_DOWN
},
1164 \constant{KEY_LEFT
} and
\constant{KEY_RIGHT
} in the obvious way. If
1165 your machine has a PC keybboard, it is safe to expect arrow keys and
1166 twelve function keys (older PC keyboards may have only ten function
1167 keys); also, the following keypad mappings are standard:
1169 \begin{tableii
}{l|l
}{kbd
}{Keycap
}{Constant
}
1170 \lineii{Insert
}{KEY_IC
}
1171 \lineii{Delete
}{KEY_DC
}
1172 \lineii{Home
}{KEY_HOME
}
1173 \lineii{End
}{KEY_END
}
1174 \lineii{Page Up
}{KEY_NPAGE
}
1175 \lineii{Page Down
}{KEY_PPAGE
}
1178 The following table lists characters from the alternate character set.
1179 These are inherited from the VT100 terminal, and will generally be
1180 available on software emulations such as X terminals. When there
1181 is no graphic available, curses falls back on a crude printable ASCII
1183 \strong{Note:
} These are available only after
\function{initscr()
} has
1186 \begin{longtableii
}{l|l
}{code
}{ACS code
}{Meaning
}
1187 \lineii{ACS_BBSS
}{alternate name for upper right corner
}
1188 \lineii{ACS_BLOCK
}{solid square block
}
1189 \lineii{ACS_BOARD
}{board of squares
}
1190 \lineii{ACS_BSBS
}{alternate name for horizontal line
}
1191 \lineii{ACS_BSSB
}{alternate name for upper left corner
}
1192 \lineii{ACS_BSSS
}{alternate name for top tee
}
1193 \lineii{ACS_BTEE
}{bottom tee
}
1194 \lineii{ACS_BULLET
}{bullet
}
1195 \lineii{ACS_CKBOARD
}{checker board (stipple)
}
1196 \lineii{ACS_DARROW
}{arrow pointing down
}
1197 \lineii{ACS_DEGREE
}{degree symbol
}
1198 \lineii{ACS_DIAMOND
}{diamond
}
1199 \lineii{ACS_GEQUAL
}{greater-than-or-equal-to
}
1200 \lineii{ACS_HLINE
}{horizontal line
}
1201 \lineii{ACS_LANTERN
}{lantern symbol
}
1202 \lineii{ACS_LARROW
}{left arrow
}
1203 \lineii{ACS_LEQUAL
}{less-than-or-equal-to
}
1204 \lineii{ACS_LLCORNER
}{lower left-hand corner
}
1205 \lineii{ACS_LRCORNER
}{lower right-hand corner
}
1206 \lineii{ACS_LTEE
}{left tee
}
1207 \lineii{ACS_NEQUAL
}{not-equal sign
}
1208 \lineii{ACS_PI
}{letter pi
}
1209 \lineii{ACS_PLMINUS
}{plus-or-minus sign
}
1210 \lineii{ACS_PLUS
}{big plus sign
}
1211 \lineii{ACS_RARROW
}{right arrow
}
1212 \lineii{ACS_RTEE
}{right tee
}
1213 \lineii{ACS_S1
}{scan line
1}
1214 \lineii{ACS_S3
}{scan line
3}
1215 \lineii{ACS_S7
}{scan line
7}
1216 \lineii{ACS_S9
}{scan line
9}
1217 \lineii{ACS_SBBS
}{alternate name for lower right corner
}
1218 \lineii{ACS_SBSB
}{alternate name for vertical line
}
1219 \lineii{ACS_SBSS
}{alternate name for right tee
}
1220 \lineii{ACS_SSBB
}{alternate name for lower left corner
}
1221 \lineii{ACS_SSBS
}{alternate name for bottom tee
}
1222 \lineii{ACS_SSSB
}{alternate name for left tee
}
1223 \lineii{ACS_SSSS
}{alternate name for crossover or big plus
}
1224 \lineii{ACS_STERLING
}{pound sterling
}
1225 \lineii{ACS_TTEE
}{top tee
}
1226 \lineii{ACS_UARROW
}{up arrow
}
1227 \lineii{ACS_ULCORNER
}{upper left corner
}
1228 \lineii{ACS_URCORNER
}{upper right corner
}
1229 \lineii{ACS_VLINE
}{vertical line
}
1232 The following table lists the predefined colors:
1234 \begin{tableii
}{l|l
}{code
}{Constant
}{Color
}
1235 \lineii{COLOR_BLACK
}{Black
}
1236 \lineii{COLOR_BLUE
}{Blue
}
1237 \lineii{COLOR_CYAN
}{Cyan (light greenish blue)
}
1238 \lineii{COLOR_GREEN
}{Green
}
1239 \lineii{COLOR_MAGENTA
}{Magenta (purplish red)
}
1240 \lineii{COLOR_RED
}{Red
}
1241 \lineii{COLOR_WHITE
}{White
}
1242 \lineii{COLOR_YELLOW
}{Yellow
}
1245 \section{\module{curses.textpad
} ---
1246 Text input widget for curses programs
}
1248 \declaremodule{standard
}{curses.textpad
}
1249 \sectionauthor{Eric Raymond
}{esr@thyrsus.com
}
1250 \moduleauthor{Eric Raymond
}{esr@thyrsus.com
}
1251 \modulesynopsis{Emacs-like input editing in a curses window.
}
1254 The
\module{curses.textpad
} module provides a
\class{Textbox
} class
1255 that handles elementary text editing in a curses window, supporting a
1256 set of keybindings resembling those of Emacs (thus, also of Netscape
1257 Navigator, BBedit
6.x, FrameMaker, and many other programs). The
1258 module also provides a rectangle-drawing function useful for framing
1259 text boxes or for other purposes.
1261 The module
\module{curses.textpad
} defines the following function:
1263 \begin{funcdesc
}{rectangle
}{win, uly, ulx, lry, lrx
}
1264 Draw a rectangle. The first argument must be a window object; the
1265 remaining arguments are coordinates relative to that window. The
1266 second and third arguments are the y and x coordinates of the upper
1267 left hand corner of the rectangle To be drawn; the fourth and fifth
1268 arguments are the y and x coordinates of the lower right hand corner.
1269 The rectangle will be drawn using VT100/IBM PC forms characters on
1270 terminals that make this possible (including xterm and most other
1271 software terminal emulators). Otherwise it will be drawn with ASCII
1272 dashes, vertical bars, and plus signs.
1276 \subsection{Textbox objects
\label{curses-textpad-objects
}}
1278 You can instantiate a
\class{Textbox
} object as follows:
1280 \begin{classdesc
}{Textbox
}{win
}
1281 Return a textbox widget object. The
\var{win
} argument should be a
1282 curses
\class{WindowObject
} in which the textbox is to be contained.
1283 The edit cursor of the textbox is initially located at the upper left
1284 hand corner of the containin window, with coordinates
\code{(
0,
0)
}.
1285 The instance's
\member{stripspaces
} flag is initially on.
1288 \class{Textbox
} objects have the following methods:
1290 \begin{methoddesc
}{edit
}{\optional{validator
}}
1291 This is the entry point you will normally use. It accepts editing
1292 keystrokes until one of the termination keystrokes is entered. If
1293 \var{validator
} is supplied, it must be a function. It will be called
1294 for each keystroke entered with the keystroke as a parameter; command
1295 dispatch is done on the result. This method returns the window
1296 contents as a string; whether blanks in the window are included is
1297 affected by the
\member{stripspaces
} member.
1300 \begin{methoddesc
}{do_command
}{ch
}
1301 Process a single command keystroke. Here are the supported special
1304 \begin{tableii
}{l|l
}{kbd
}{Keystroke
}{Action
}
1305 \lineii{Ctrl-A
}{Go to left edge of window.
}
1306 \lineii{Ctrl-B
}{Cursor left, wrapping to previous line if appropriate.
}
1307 \lineii{Ctrl-D
}{Delete character under cursor.
}
1308 \lineii{Ctrl-E
}{Go to right edge (stripspaces off) or end of line
1310 \lineii{Ctrl-F
}{Cursor right, wrapping to next line when appropriate.
}
1311 \lineii{Ctrl-G
}{Terminate, returning the window contents.
}
1312 \lineii{Ctrl-H
}{Delete character backward.
}
1313 \lineii{Ctrl-J
}{Terminate if the window is
1 line, otherwise insert newline.
}
1314 \lineii{Ctrl-K
}{If line is blank, delete it, otherwise clear to end of line.
}
1315 \lineii{Ctrl-L
}{Refresh screen.
}
1316 \lineii{Ctrl-N
}{Cursor down; move down one line.
}
1317 \lineii{Ctrl-O
}{Insert a blank line at cursor location.
}
1318 \lineii{Ctrl-P
}{Cursor up; move up one line.
}
1321 Move operations do nothing if the cursor is at an edge where the
1322 movement is not possible. The following synonyms are supported where
1325 \begin{tableii
}{l|l
}{constant
}{Constant
}{Keystroke
}
1326 \lineii{KEY_LEFT
}{\kbd{Ctrl-B
}}
1327 \lineii{KEY_RIGHT
}{\kbd{Ctrl-F
}}
1328 \lineii{KEY_UP
}{\kbd{Ctrl-P
}}
1329 \lineii{KEY_DOWN
}{\kbd{Ctrl-N
}}
1330 \lineii{KEY_BACKSPACE
}{\kbd{Ctrl-h
}}
1333 All other keystrokes are treated as a command to insert the given
1334 character and move right (with line wrapping).
1337 \begin{methoddesc
}{gather
}{}
1338 This method returns the window contents as a string; whether blanks in
1339 the window are included is affected by the
\member{stripspaces
}
1343 \begin{memberdesc
}{stripspaces
}
1344 This data member is a flag which controls the interpretation of blanks in
1345 the window. When it is on, trailing blanks on each line are ignored;
1346 any cursor motion that would land the cursor on a trailing blank goes
1347 to the end of that line instead, and trailing blanks are stripped when
1348 the window contents is gathered.
1352 \section{\module{curses.wrapper
} ---
1353 Terminal handler for curses programs
}
1355 \declaremodule{standard
}{curses.wrapper
}
1356 \sectionauthor{Eric Raymond
}{esr@thyrsus.com
}
1357 \moduleauthor{Eric Raymond
}{esr@thyrsus.com
}
1358 \modulesynopsis{Terminal configuration wrapper for curses programs.
}
1361 This module supplies one function,
\function{wrapper()
}, which runs
1362 another function which should be the rest of your curses-using
1363 application. If the application raises an exception,
1364 \function{wrapper()
} will restore the terminal to a sane state before
1365 passing it further up the stack and generating a traceback.
1367 \begin{funcdesc
}{wrapper
}{func,
\moreargs}
1368 Wrapper function that initializes curses and calls another function,
1369 \var{func
}, restoring normal keyboard/screen behavior on error.
1370 The callable object
\var{func
} is then passed the main window 'stdscr'
1371 as its first argument, followed by any other arguments passed to
1372 \function{wrapper()
}.
1375 Before calling the hook function,
\function{wrapper()
} turns on cbreak
1376 mode, turns off echo, enables the terminal keypad, and initializes
1377 colors if the terminal has
color support. On exit (whether normally
1378 or by exception) it restores cooked mode, turns on echo, and disables
1379 the terminal keypad.