# SOME DESCRIPTIVE TITLE. # Copyright (C) 2001-2016, Python Software Foundation # This file is distributed under the same license as the Python package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: Python 3.6\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-04-02 22:11+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../Doc/howto/curses.rst:5 msgid "Curses Programming with Python" msgstr "" #: ../Doc/howto/curses.rst:7 msgid "A.M. Kuchling, Eric S. Raymond" msgstr "" #: ../Doc/howto/curses.rst:8 msgid "2.04" msgstr "" #: ../Doc/howto/curses.rst:0 msgid "Abstract" msgstr "Résumé" #: ../Doc/howto/curses.rst:13 msgid "" "This document describes how to use the :mod:`curses` extension module to " "control text-mode displays." msgstr "" #: ../Doc/howto/curses.rst:18 msgid "What is curses?" msgstr "" #: ../Doc/howto/curses.rst:20 msgid "" "The curses library supplies a terminal-independent screen-painting and " "keyboard-handling facility for text-based terminals; such terminals include " "VT100s, the Linux console, and the simulated terminal provided by various " "programs. Display terminals support various control codes to perform common " "operations such as moving the cursor, scrolling the screen, and erasing " "areas. Different terminals use widely differing codes, and often have their " "own minor quirks." msgstr "" #: ../Doc/howto/curses.rst:28 msgid "" "In a world of graphical displays, one might ask \"why bother\"? It's true " "that character-cell display terminals are an obsolete technology, but there " "are niches in which being able to do fancy things with them are still " "valuable. One niche is on small-footprint or embedded Unixes that don't run " "an X server. Another is tools such as OS installers and kernel " "configurators that may have to run before any graphical support is available." msgstr "" #: ../Doc/howto/curses.rst:36 msgid "" "The curses library provides fairly basic functionality, providing the " "programmer with an abstraction of a display containing multiple non-" "overlapping windows of text. The contents of a window can be changed in " "various ways---adding text, erasing it, changing its appearance---and the " "curses library will figure out what control codes need to be sent to the " "terminal to produce the right output. curses doesn't provide many user-" "interface concepts such as buttons, checkboxes, or dialogs; if you need such " "features, consider a user interface library such as `Urwid `_." msgstr "" #: ../Doc/howto/curses.rst:46 msgid "" "The curses library was originally written for BSD Unix; the later System V " "versions of Unix from AT&T added many enhancements and new functions. BSD " "curses is no longer maintained, having been replaced by ncurses, which is an " "open-source implementation of the AT&T interface. If you're using an open-" "source Unix such as Linux or FreeBSD, your system almost certainly uses " "ncurses. Since most current commercial Unix versions are based on System V " "code, all the functions described here will probably be available. The " "older versions of curses carried by some proprietary Unixes may not support " "everything, though." msgstr "" #: ../Doc/howto/curses.rst:56 msgid "" "The Windows version of Python doesn't include the :mod:`curses` module. A " "ported version called `UniCurses `_ " "is available. You could also try `the Console module `_ written by Fredrik Lundh, which doesn't use the " "same API as curses but provides cursor-addressable text output and full " "support for mouse and keyboard input." msgstr "" #: ../Doc/howto/curses.rst:66 msgid "The Python curses module" msgstr "" #: ../Doc/howto/curses.rst:68 msgid "" "Thy Python module is a fairly simple wrapper over the C functions provided " "by curses; if you're already familiar with curses programming in C, it's " "really easy to transfer that knowledge to Python. The biggest difference is " "that the Python interface makes things simpler by merging different C " "functions such as :c:func:`addstr`, :c:func:`mvaddstr`, and :c:func:" "`mvwaddstr` into a single :meth:`~curses.window.addstr` method. You'll see " "this covered in more detail later." msgstr "" #: ../Doc/howto/curses.rst:76 msgid "" "This HOWTO is an introduction to writing text-mode programs with curses and " "Python. It doesn't attempt to be a complete guide to the curses API; for " "that, see the Python library guide's section on ncurses, and the C manual " "pages for ncurses. It will, however, give you the basic ideas." msgstr "" #: ../Doc/howto/curses.rst:83 msgid "Starting and ending a curses application" msgstr "" #: ../Doc/howto/curses.rst:85 msgid "" "Before doing anything, curses must be initialized. This is done by calling " "the :func:`~curses.initscr` function, which will determine the terminal " "type, send any required setup codes to the terminal, and create various " "internal data structures. If successful, :func:`initscr` returns a window " "object representing the entire screen; this is usually called ``stdscr`` " "after the name of the corresponding C variable. ::" msgstr "" #: ../Doc/howto/curses.rst:96 msgid "" "Usually curses applications turn off automatic echoing of keys to the " "screen, in order to be able to read keys and only display them under certain " "circumstances. This requires calling the :func:`~curses.noecho` function. ::" msgstr "" #: ../Doc/howto/curses.rst:103 msgid "" "Applications will also commonly need to react to keys instantly, without " "requiring the Enter key to be pressed; this is called cbreak mode, as " "opposed to the usual buffered input mode. ::" msgstr "" #: ../Doc/howto/curses.rst:109 msgid "" "Terminals usually return special keys, such as the cursor keys or navigation " "keys such as Page Up and Home, as a multibyte escape sequence. While you " "could write your application to expect such sequences and process them " "accordingly, curses can do it for you, returning a special value such as :" "const:`curses.KEY_LEFT`. To get curses to do the job, you'll have to enable " "keypad mode. ::" msgstr "" #: ../Doc/howto/curses.rst:118 msgid "" "Terminating a curses application is much easier than starting one. You'll " "need to call::" msgstr "" #: ../Doc/howto/curses.rst:125 msgid "" "to reverse the curses-friendly terminal settings. Then call the :func:" "`~curses.endwin` function to restore the terminal to its original operating " "mode. ::" msgstr "" #: ../Doc/howto/curses.rst:131 msgid "" "A common problem when debugging a curses application is to get your terminal " "messed up when the application dies without restoring the terminal to its " "previous state. In Python this commonly happens when your code is buggy and " "raises an uncaught exception. Keys are no longer echoed to the screen when " "you type them, for example, which makes using the shell difficult." msgstr "" #: ../Doc/howto/curses.rst:137 msgid "" "In Python you can avoid these complications and make debugging much easier " "by importing the :func:`curses.wrapper` function and using it like this::" msgstr "" #: ../Doc/howto/curses.rst:156 msgid "" "The :func:`~curses.wrapper` function takes a callable object and does the " "initializations described above, also initializing colors if color support " "is present. :func:`wrapper` then runs your provided callable. Once the " "callable returns, :func:`wrapper` will restore the original state of the " "terminal. The callable is called inside a :keyword:`try`...\\ :keyword:" "`except` that catches exceptions, restores the state of the terminal, and " "then re-raises the exception. Therefore your terminal won't be left in a " "funny state on exception and you'll be able to read the exception's message " "and traceback." msgstr "" #: ../Doc/howto/curses.rst:168 msgid "Windows and Pads" msgstr "" #: ../Doc/howto/curses.rst:170 msgid "" "Windows are the basic abstraction in curses. A window object represents a " "rectangular area of the screen, and supports methods to display text, erase " "it, allow the user to input strings, and so forth." msgstr "" #: ../Doc/howto/curses.rst:174 msgid "" "The ``stdscr`` object returned by the :func:`~curses.initscr` function is a " "window object that covers the entire screen. Many programs may need only " "this single window, but you might wish to divide the screen into smaller " "windows, in order to redraw or clear them separately. The :func:`~curses." "newwin` function creates a new window of a given size, returning the new " "window object. ::" msgstr "" #: ../Doc/howto/curses.rst:185 msgid "" "Note that the coordinate system used in curses is unusual. Coordinates are " "always passed in the order *y,x*, and the top-left corner of a window is " "coordinate (0,0). This breaks the normal convention for handling " "coordinates where the *x* coordinate comes first. This is an unfortunate " "difference from most other computer applications, but it's been part of " "curses since it was first written, and it's too late to change things now." msgstr "" #: ../Doc/howto/curses.rst:193 msgid "" "Your application can determine the size of the screen by using the :data:" "`curses.LINES` and :data:`curses.COLS` variables to obtain the *y* and *x* " "sizes. Legal coordinates will then extend from ``(0,0)`` to ``(curses.LINES " "- 1, curses.COLS - 1)``." msgstr "" #: ../Doc/howto/curses.rst:198 msgid "" "When you call a method to display or erase text, the effect doesn't " "immediately show up on the display. Instead you must call the :meth:" "`~curses.window.refresh` method of window objects to update the screen." msgstr "" #: ../Doc/howto/curses.rst:203 msgid "" "This is because curses was originally written with slow 300-baud terminal " "connections in mind; with these terminals, minimizing the time required to " "redraw the screen was very important. Instead curses accumulates changes to " "the screen and displays them in the most efficient manner when you call :" "meth:`refresh`. For example, if your program displays some text in a window " "and then clears the window, there's no need to send the original text " "because they're never visible." msgstr "" #: ../Doc/howto/curses.rst:212 msgid "" "In practice, explicitly telling curses to redraw a window doesn't really " "complicate programming with curses much. Most programs go into a flurry of " "activity, and then pause waiting for a keypress or some other action on the " "part of the user. All you have to do is to be sure that the screen has been " "redrawn before pausing to wait for user input, by first calling ``stdscr." "refresh()`` or the :meth:`refresh` method of some other relevant window." msgstr "" #: ../Doc/howto/curses.rst:220 msgid "" "A pad is a special case of a window; it can be larger than the actual " "display screen, and only a portion of the pad displayed at a time. Creating " "a pad requires the pad's height and width, while refreshing a pad requires " "giving the coordinates of the on-screen area where a subsection of the pad " "will be displayed. ::" msgstr "" #: ../Doc/howto/curses.rst:241 msgid "" "The :meth:`refresh` call displays a section of the pad in the rectangle " "extending from coordinate (5,5) to coordinate (20,75) on the screen; the " "upper left corner of the displayed section is coordinate (0,0) on the pad. " "Beyond that difference, pads are exactly like ordinary windows and support " "the same methods." msgstr "" #: ../Doc/howto/curses.rst:247 msgid "" "If you have multiple windows and pads on screen there is a more efficient " "way to update the screen and prevent annoying screen flicker as each part of " "the screen gets updated. :meth:`refresh` actually does two things:" msgstr "" #: ../Doc/howto/curses.rst:252 msgid "" "Calls the :meth:`~curses.window.noutrefresh` method of each window to update " "an underlying data structure representing the desired state of the screen." msgstr "" #: ../Doc/howto/curses.rst:255 msgid "" "Calls the function :func:`~curses.doupdate` function to change the physical " "screen to match the desired state recorded in the data structure." msgstr "" #: ../Doc/howto/curses.rst:258 msgid "" "Instead you can call :meth:`noutrefresh` on a number of windows to update " "the data structure, and then call :func:`doupdate` to update the screen." msgstr "" #: ../Doc/howto/curses.rst:264 msgid "Displaying Text" msgstr "" #: ../Doc/howto/curses.rst:266 msgid "" "From a C programmer's point of view, curses may sometimes look like a twisty " "maze of functions, all subtly different. For example, :c:func:`addstr` " "displays a string at the current cursor location in the ``stdscr`` window, " "while :c:func:`mvaddstr` moves to a given y,x coordinate first before " "displaying the string. :c:func:`waddstr` is just like :c:func:`addstr`, but " "allows specifying a window to use instead of using ``stdscr`` by default. :c:" "func:`mvwaddstr` allows specifying both a window and a coordinate." msgstr "" #: ../Doc/howto/curses.rst:275 msgid "" "Fortunately the Python interface hides all these details. ``stdscr`` is a " "window object like any other, and methods such as :meth:`~curses.window." "addstr` accept multiple argument forms. Usually there are four different " "forms." msgstr "" #: ../Doc/howto/curses.rst:281 msgid "Form" msgstr "" #: ../Doc/howto/curses.rst:281 ../Doc/howto/curses.rst:350 msgid "Description" msgstr "Description" #: ../Doc/howto/curses.rst:283 msgid "*str* or *ch*" msgstr "" #: ../Doc/howto/curses.rst:283 msgid "Display the string *str* or character *ch* at the current position" msgstr "" #: ../Doc/howto/curses.rst:286 msgid "*str* or *ch*, *attr*" msgstr "" #: ../Doc/howto/curses.rst:286 msgid "" "Display the string *str* or character *ch*, using attribute *attr* at the " "current position" msgstr "" #: ../Doc/howto/curses.rst:290 msgid "*y*, *x*, *str* or *ch*" msgstr "" #: ../Doc/howto/curses.rst:290 msgid "Move to position *y,x* within the window, and display *str* or *ch*" msgstr "" #: ../Doc/howto/curses.rst:293 msgid "*y*, *x*, *str* or *ch*, *attr*" msgstr "" #: ../Doc/howto/curses.rst:293 msgid "" "Move to position *y,x* within the window, and display *str* or *ch*, using " "attribute *attr*" msgstr "" #: ../Doc/howto/curses.rst:297 msgid "" "Attributes allow displaying text in highlighted forms such as boldface, " "underline, reverse code, or in color. They'll be explained in more detail " "in the next subsection." msgstr "" #: ../Doc/howto/curses.rst:302 msgid "" "The :meth:`~curses.window.addstr` method takes a Python string or bytestring " "as the value to be displayed. The contents of bytestrings are sent to the " "terminal as-is. Strings are encoded to bytes using the value of the " "window's :attr:`encoding` attribute; this defaults to the default system " "encoding as returned by :func:`locale.getpreferredencoding`." msgstr "" #: ../Doc/howto/curses.rst:309 msgid "" "The :meth:`~curses.window.addch` methods take a character, which can be " "either a string of length 1, a bytestring of length 1, or an integer." msgstr "" #: ../Doc/howto/curses.rst:312 msgid "" "Constants are provided for extension characters; these constants are " "integers greater than 255. For example, :const:`ACS_PLMINUS` is a +/- " "symbol, and :const:`ACS_ULCORNER` is the upper left corner of a box (handy " "for drawing borders). You can also use the appropriate Unicode character." msgstr "" #: ../Doc/howto/curses.rst:318 msgid "" "Windows remember where the cursor was left after the last operation, so if " "you leave out the *y,x* coordinates, the string or character will be " "displayed wherever the last operation left off. You can also move the " "cursor with the ``move(y,x)`` method. Because some terminals always display " "a flashing cursor, you may want to ensure that the cursor is positioned in " "some location where it won't be distracting; it can be confusing to have the " "cursor blinking at some apparently random location." msgstr "" #: ../Doc/howto/curses.rst:326 msgid "" "If your application doesn't need a blinking cursor at all, you can call " "``curs_set(False)`` to make it invisible. For compatibility with older " "curses versions, there's a ``leaveok(bool)`` function that's a synonym for :" "func:`~curses.curs_set`. When *bool* is true, the curses library will " "attempt to suppress the flashing cursor, and you won't need to worry about " "leaving it in odd locations." msgstr "" #: ../Doc/howto/curses.rst:335 msgid "Attributes and Color" msgstr "" #: ../Doc/howto/curses.rst:337 msgid "" "Characters can be displayed in different ways. Status lines in a text-based " "application are commonly shown in reverse video, or a text viewer may need " "to highlight certain words. curses supports this by allowing you to specify " "an attribute for each cell on the screen." msgstr "" #: ../Doc/howto/curses.rst:342 msgid "" "An attribute is an integer, each bit representing a different attribute. " "You can try to display text with multiple attribute bits set, but curses " "doesn't guarantee that all the possible combinations are available, or that " "they're all visually distinct. That depends on the ability of the terminal " "being used, so it's safest to stick to the most commonly available " "attributes, listed here." msgstr "" #: ../Doc/howto/curses.rst:350 msgid "Attribute" msgstr "Attribut" #: ../Doc/howto/curses.rst:352 msgid ":const:`A_BLINK`" msgstr "" #: ../Doc/howto/curses.rst:352 msgid "Blinking text" msgstr "" #: ../Doc/howto/curses.rst:354 msgid ":const:`A_BOLD`" msgstr "" #: ../Doc/howto/curses.rst:354 msgid "Extra bright or bold text" msgstr "" #: ../Doc/howto/curses.rst:356 msgid ":const:`A_DIM`" msgstr "" #: ../Doc/howto/curses.rst:356 msgid "Half bright text" msgstr "" #: ../Doc/howto/curses.rst:358 msgid ":const:`A_REVERSE`" msgstr "" #: ../Doc/howto/curses.rst:358 msgid "Reverse-video text" msgstr "" #: ../Doc/howto/curses.rst:360 msgid ":const:`A_STANDOUT`" msgstr "" #: ../Doc/howto/curses.rst:360 msgid "The best highlighting mode available" msgstr "" #: ../Doc/howto/curses.rst:362 msgid ":const:`A_UNDERLINE`" msgstr "" #: ../Doc/howto/curses.rst:362 msgid "Underlined text" msgstr "" #: ../Doc/howto/curses.rst:365 msgid "" "So, to display a reverse-video status line on the top line of the screen, " "you could code::" msgstr "" #: ../Doc/howto/curses.rst:372 msgid "" "The curses library also supports color on those terminals that provide it. " "The most common such terminal is probably the Linux console, followed by " "color xterms." msgstr "" #: ../Doc/howto/curses.rst:376 msgid "" "To use color, you must call the :func:`~curses.start_color` function soon " "after calling :func:`~curses.initscr`, to initialize the default color set " "(the :func:`curses.wrapper` function does this automatically). Once that's " "done, the :func:`~curses.has_colors` function returns TRUE if the terminal " "in use can actually display color. (Note: curses uses the American spelling " "'color', instead of the Canadian/British spelling 'colour'. If you're used " "to the British spelling, you'll have to resign yourself to misspelling it " "for the sake of these functions.)" msgstr "" #: ../Doc/howto/curses.rst:386 msgid "" "The curses library maintains a finite number of color pairs, containing a " "foreground (or text) color and a background color. You can get the " "attribute value corresponding to a color pair with the :func:`~curses." "color_pair` function; this can be bitwise-OR'ed with other attributes such " "as :const:`A_REVERSE`, but again, such combinations are not guaranteed to " "work on all terminals." msgstr "" #: ../Doc/howto/curses.rst:393 msgid "An example, which displays a line of text using color pair 1::" msgstr "" #: ../Doc/howto/curses.rst:398 msgid "" "As I said before, a color pair consists of a foreground and background " "color. The ``init_pair(n, f, b)`` function changes the definition of color " "pair *n*, to foreground color f and background color b. Color pair 0 is " "hard-wired to white on black, and cannot be changed." msgstr "" #: ../Doc/howto/curses.rst:403 msgid "" "Colors are numbered, and :func:`start_color` initializes 8 basic colors when " "it activates color mode. They are: 0:black, 1:red, 2:green, 3:yellow, 4:" "blue, 5:magenta, 6:cyan, and 7:white. The :mod:`curses` module defines " "named constants for each of these colors: :const:`curses.COLOR_BLACK`, :" "const:`curses.COLOR_RED`, and so forth." msgstr "" #: ../Doc/howto/curses.rst:409 msgid "" "Let's put all this together. To change color 1 to red text on a white " "background, you would call::" msgstr "" #: ../Doc/howto/curses.rst:414 msgid "" "When you change a color pair, any text already displayed using that color " "pair will change to the new colors. You can also display new text in this " "color with::" msgstr "" #: ../Doc/howto/curses.rst:420 msgid "" "Very fancy terminals can change the definitions of the actual colors to a " "given RGB value. This lets you change color 1, which is usually red, to " "purple or blue or any other color you like. Unfortunately, the Linux " "console doesn't support this, so I'm unable to try it out, and can't provide " "any examples. You can check if your terminal can do this by calling :func:" "`~curses.can_change_color`, which returns ``True`` if the capability is " "there. If you're lucky enough to have such a talented terminal, consult " "your system's man pages for more information." msgstr "" #: ../Doc/howto/curses.rst:431 msgid "User Input" msgstr "" #: ../Doc/howto/curses.rst:433 msgid "" "The C curses library offers only very simple input mechanisms. Python's :mod:" "`curses` module adds a basic text-input widget. (Other libraries such as " "`Urwid `_ have more extensive " "collections of widgets.)" msgstr "" #: ../Doc/howto/curses.rst:438 msgid "There are two methods for getting input from a window:" msgstr "" #: ../Doc/howto/curses.rst:440 msgid "" ":meth:`~curses.window.getch` refreshes the screen and then waits for the " "user to hit a key, displaying the key if :func:`~curses.echo` has been " "called earlier. You can optionally specify a coordinate to which the cursor " "should be moved before pausing." msgstr "" #: ../Doc/howto/curses.rst:445 msgid "" ":meth:`~curses.window.getkey` does the same thing but converts the integer " "to a string. Individual characters are returned as 1-character strings, and " "special keys such as function keys return longer strings containing a key " "name such as ``KEY_UP`` or ``^G``." msgstr "" #: ../Doc/howto/curses.rst:450 msgid "" "It's possible to not wait for the user using the :meth:`~curses.window." "nodelay` window method. After ``nodelay(True)``, :meth:`getch` and :meth:" "`getkey` for the window become non-blocking. To signal that no input is " "ready, :meth:`getch` returns ``curses.ERR`` (a value of -1) and :meth:" "`getkey` raises an exception. There's also a :func:`~curses.halfdelay` " "function, which can be used to (in effect) set a timer on each :meth:" "`getch`; if no input becomes available within a specified delay (measured in " "tenths of a second), curses raises an exception." msgstr "" #: ../Doc/howto/curses.rst:460 msgid "" "The :meth:`getch` method returns an integer; if it's between 0 and 255, it " "represents the ASCII code of the key pressed. Values greater than 255 are " "special keys such as Page Up, Home, or the cursor keys. You can compare the " "value returned to constants such as :const:`curses.KEY_PPAGE`, :const:" "`curses.KEY_HOME`, or :const:`curses.KEY_LEFT`. The main loop of your " "program may look something like this::" msgstr "" #: ../Doc/howto/curses.rst:476 msgid "" "The :mod:`curses.ascii` module supplies ASCII class membership functions " "that take either integer or 1-character string arguments; these may be " "useful in writing more readable tests for such loops. It also supplies " "conversion functions that take either integer or 1-character-string " "arguments and return the same type. For example, :func:`curses.ascii.ctrl` " "returns the control character corresponding to its argument." msgstr "" #: ../Doc/howto/curses.rst:483 msgid "" "There's also a method to retrieve an entire string, :meth:`~curses.window." "getstr`. It isn't used very often, because its functionality is quite " "limited; the only editing keys available are the backspace key and the Enter " "key, which terminates the string. It can optionally be limited to a fixed " "number of characters. ::" msgstr "" #: ../Doc/howto/curses.rst:494 msgid "" "The :mod:`curses.textpad` module supplies a text box that supports an Emacs-" "like set of keybindings. Various methods of the :class:`~curses.textpad." "Textbox` class support editing with input validation and gathering the edit " "results either with or without trailing spaces. Here's an example::" msgstr "" #: ../Doc/howto/curses.rst:518 msgid "" "See the library documentation on :mod:`curses.textpad` for more details." msgstr "" #: ../Doc/howto/curses.rst:522 msgid "For More Information" msgstr "" #: ../Doc/howto/curses.rst:524 msgid "" "This HOWTO doesn't cover some advanced topics, such as reading the contents " "of the screen or capturing mouse events from an xterm instance, but the " "Python library page for the :mod:`curses` module is now reasonably " "complete. You should browse it next." msgstr "" #: ../Doc/howto/curses.rst:529 msgid "" "If you're in doubt about the detailed behavior of the curses functions, " "consult the manual pages for your curses implementation, whether it's " "ncurses or a proprietary Unix vendor's. The manual pages will document any " "quirks, and provide complete lists of all the functions, attributes, and :" "const:`ACS_\\*` characters available to you." msgstr "" #: ../Doc/howto/curses.rst:536 msgid "" "Because the curses API is so large, some functions aren't supported in the " "Python interface. Often this isn't because they're difficult to implement, " "but because no one has needed them yet. Also, Python doesn't yet support " "the menu library associated with ncurses. Patches adding support for these " "would be welcome; see `the Python Developer's Guide `_ to learn more about submitting patches to Python." msgstr "" #: ../Doc/howto/curses.rst:544 msgid "" "`Writing Programs with NCURSES `_: a lengthy tutorial for C programmers." msgstr "" #: ../Doc/howto/curses.rst:546 msgid "`The ncurses man page `_" msgstr "" #: ../Doc/howto/curses.rst:547 msgid "" "`The ncurses FAQ `_" msgstr "" #: ../Doc/howto/curses.rst:548 msgid "" "`\"Use curses... don't swear\" `_: video of a PyCon 2013 talk on controlling terminals using " "curses or Urwid." msgstr "" #: ../Doc/howto/curses.rst:550 msgid "" "`\"Console Applications with Urwid\" `_: video of a PyCon CA 2012 talk " "demonstrating some applications written using Urwid." msgstr ""