xref: /freebsd/contrib/ncurses/TO-DO (revision 43c7dd6b597947c27cab4ebc5a67a8a3f5b7c58d)
14a1a9510SRong-En Fan-------------------------------------------------------------------------------
2*e1865124SBaptiste Daroussin-- Copyright 2020 Thomas E. Dickey                                           --
3*e1865124SBaptiste Daroussin-- Copyright 1998-2010,2011 Free Software Foundation, Inc.                   --
44a1a9510SRong-En Fan--                                                                           --
54a1a9510SRong-En Fan-- Permission is hereby granted, free of charge, to any person obtaining a   --
64a1a9510SRong-En Fan-- copy of this software and associated documentation files (the             --
74a1a9510SRong-En Fan-- "Software"), to deal in the Software without restriction, including       --
84a1a9510SRong-En Fan-- without limitation the rights to use, copy, modify, merge, publish,       --
94a1a9510SRong-En Fan-- distribute, distribute with modifications, sublicense, and/or sell copies --
104a1a9510SRong-En Fan-- of the Software, and to permit persons to whom the Software is furnished  --
114a1a9510SRong-En Fan-- to do so, subject to the following conditions:                            --
124a1a9510SRong-En Fan--                                                                           --
134a1a9510SRong-En Fan-- The above copyright notice and this permission notice shall be included   --
144a1a9510SRong-En Fan-- in all copies or substantial portions of the Software.                    --
154a1a9510SRong-En Fan--                                                                           --
164a1a9510SRong-En Fan-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS   --
174a1a9510SRong-En Fan-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF                --
184a1a9510SRong-En Fan-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN --
194a1a9510SRong-En Fan-- NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,       --
204a1a9510SRong-En Fan-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR     --
214a1a9510SRong-En Fan-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE --
224a1a9510SRong-En Fan-- USE OR OTHER DEALINGS IN THE SOFTWARE.                                    --
234a1a9510SRong-En Fan--                                                                           --
244a1a9510SRong-En Fan-- Except as contained in this notice, the name(s) of the above copyright    --
254a1a9510SRong-En Fan-- holders shall not be used in advertising or otherwise to promote the      --
264a1a9510SRong-En Fan-- sale, use or other dealings in this Software without prior written        --
274a1a9510SRong-En Fan-- authorization.                                                            --
284a1a9510SRong-En Fan-------------------------------------------------------------------------------
29*e1865124SBaptiste Daroussin-- $Id: TO-DO,v 1.58 2020/02/02 23:34:34 tom Exp $
304a1a9510SRong-En Fan-------------------------------------------------------------------------------
310e3d5408SPeter Wemm
320e3d5408SPeter WemmSHORT-TERM TO-DO ITEMS:
330e3d5408SPeter Wemm
340e3d5408SPeter WemmKnown Problems:
350e3d5408SPeter Wemm
364a1a9510SRong-En Fan+ libtool does not work with GNAT.
370e3d5408SPeter Wemm
384a1a9510SRong-En Fan+ The screen optimization has been tested only in an ad hoc manner.  We should
390e3d5408SPeter Wemm  develop a good set of regression tests to cover lib_doupdate.c and
400e3d5408SPeter Wemm  lib_mvcur.c.
410e3d5408SPeter Wemm
424a1a9510SRong-En Fan+ Magic cookie support (for nonzero xmc values) does not work, since the logic
434a1a9510SRong-En Fan  does not take into account refresh.  Also, the initial optimize does not
444a1a9510SRong-En Fan  adjust the current location when a cookie is emitted.
450e3d5408SPeter Wemm
464a1a9510SRong-En Fan+ Scrolling optimization has holes:  for example, it forces repaints of the
470e3d5408SPeter Wemm  screen between calls to refresh().
480e3d5408SPeter Wemm
494a1a9510SRong-En Fan+ SVr4 uses slightly different rules for determining when softkeys are shown.
500e3d5408SPeter Wemm  For example, they are initially displayed (before the ncurses 'e' test
510e3d5408SPeter Wemm  activates them), and a touchwin can apparently also force them to be
520e3d5408SPeter Wemm  displayed.
530e3d5408SPeter Wemm
540e3d5408SPeter Wemm+ The code departs from perfect 8-bit cleanness in one respect; you cannot
554a1a9510SRong-En Fan  specify a character \200 as part of a capability string, because the
564a1a9510SRong-En Fan  terminfo library interprets \200 as a request to embed NUL (\000) at that
574a1a9510SRong-En Fan  point.  This is a legacy terminfo property we can't mess with.
580e3d5408SPeter Wemm
594a1a9510SRong-En Fan+ The window classes defined in the c++ subdirectory need documentation.  Some
604a1a9510SRong-En Fan  C++ programmer could earn a lot of good karma by doing this...
614a1a9510SRong-En Fan
624a1a9510SRong-En Fan+ vid_attr() should support the set_a_attributes (sgr1) string, but does not.
634a1a9510SRong-En Fan  There appear to be no terminals that require that functionality.
640e3d5408SPeter Wemm
655d08fb1fSRong-En Fan+ the configure --disable-ext-funcs option does not work for Ada95 tree.
665d08fb1fSRong-En Fan
675d08fb1fSRong-En Fan+ the --with-pthread configuration builds for Cygwin, but does not work
685d08fb1fSRong-En Fan  properly (test/worm.c shows all of the worms in the same location).
695d08fb1fSRong-En Fan
705d08fb1fSRong-En Fan+ the --enable-rpath configure option builds for the corresponding platforms;
715d08fb1fSRong-En Fan  however combining it with --with-ticlib and --with-termlib does not always
725d08fb1fSRong-En Fan  produce libraries that can be run without setting environment variables.
735d08fb1fSRong-En Fan  Building those with libtool does not work either.  (This is a problem with
745d08fb1fSRong-En Fan  the BSD platforms).
755d08fb1fSRong-En Fan
7606bfebdeSXin LI+ more work is needed to make the MinGW port support ordinary terminals.
7706bfebdeSXin LI
780e3d5408SPeter WemmPortability (or lack thereof):
790e3d5408SPeter Wemm
804a1a9510SRong-En Fan+ Users of older System V UNIXes (but not Solaris, and probably not SVr4) may
814a1a9510SRong-En Fan  trip over a known problem with the signal-handling code which causes abrupt
824a1a9510SRong-En Fan  termination of ncurses applications following resume from a ^Z suspend (this
834a1a9510SRong-En Fan  problem was first seen running lynx).  You will not see this problem if you
8406bfebdeSXin LI  are using one of the 4.4BSD derivatives like such as, NetBSD, or BSDI, or
8506bfebdeSXin LI  systems using that convention.  For details, see the analysis in the header
8606bfebdeSXin LI  comment of ncurses/tty/lib_tstp.c .
870e3d5408SPeter Wemm
884a1a9510SRong-En Fan+ In theory, vwprintw and vwscanf are supposed to use the older varargs.h
895ca44d1cSRong-En Fan  interface for handling variadic argument lists (and are deprecated by X/Open
9006bfebdeSXin LI  for that reason).  Many newer systems do no have varargs.h, instead they have
9106bfebdeSXin LI  only the newer X/Open-standard stdargs.h equivalent.  So these functions use
9206bfebdeSXin LI  stdargs instead.  This is unlikely to be a problem unless you're building
9306bfebdeSXin LI  ncurses on a System V old enough to only have varargs.h.  (Solaris 2.5.1 used
9406bfebdeSXin LI  the stdarg.h binding as well).
950e3d5408SPeter Wemm
9606bfebdeSXin LI+ If you're using a system old enough not to have a native vsscanf(3) in its
9706bfebdeSXin LI  library, vwscanw() will not work.  If you want to fix this, add an
984a1a9510SRong-En Fan  implementation to ncurses/vsscanf.c.
990e3d5408SPeter Wemm
1005ca44d1cSRong-En Fan+ The C++ binding fails to build with a few C++ compilers.
1010e3d5408SPeter Wemm
1020e3d5408SPeter Wemm+ terminfo.5 does not format with the SunOS (and most other platform's) tbl
1034a1a9510SRong-En Fan  utility because it relies on a diversion for each table entry.  Get the
1044a1a9510SRong-En Fan  groff package.
1050e3d5408SPeter Wemm
1060e3d5408SPeter WemmUntested features:
1070e3d5408SPeter Wemm
1084a1a9510SRong-En Fan+ The code for the HP color model using set_color_pair is untested.
1090e3d5408SPeter Wemm
1104a1a9510SRong-En Fan+ The code for handling soft labels on a terminal type with built-in support
1110e3d5408SPeter Wemm  for them (num_labels > 0, label_height, label_width, label_format, label_off,
1120e3d5408SPeter Wemm  label_on, plab_norm, lab_f*) has not been tested.  The label_format and
1130e3d5408SPeter Wemm  lab_f* capabilities aren't presently used.
1140e3d5408SPeter Wemm
1150e3d5408SPeter WemmLONGER-TERM TO-DO ITEMS:
1160e3d5408SPeter Wemm
1170e3d5408SPeter Wemm1. Extended COSE conformance
1180e3d5408SPeter Wemm
1195ca44d1cSRong-En FanThere is an XPG4 standard released in 1996 which describes a superset
1200e3d5408SPeter Wemmof the SVr4 API.  The library is BASE conformant with this standard.
1210e3d5408SPeter WemmWe would like to make ncurses fully conformant at the EXTENDED level
1220e3d5408SPeter Wemmsupporting internationalization.
1230e3d5408SPeter Wemm
1240e3d5408SPeter Wemm2. DOS port
1250e3d5408SPeter Wemm
1264a1a9510SRong-En FanOnly a few of the files in the library depend on the terminfo format.
1270e3d5408SPeter WemmIt should be possible to further kernelize the package, then rewrite
1280e3d5408SPeter Wemma small number of core files to produce a functionally-compatible
1290e3d5408SPeter Wemmport that would do updates to a memory-mapped screen area.  The first
1300e3d5408SPeter Wemmresult of this would be a DOS port.
1310e3d5408SPeter Wemm
1320e3d5408SPeter Wemm3. X port
1330e3d5408SPeter Wemm
1340e3d5408SPeter WemmIt would be nice if ncurses could recognize when it was running under X and
1350e3d5408SPeter Wemmmaintain its own window.  With this feature, all ncurses programs would
1360e3d5408SPeter Wemmautomatically become X programs.  The challenge is to handle resize events
1370e3d5408SPeter Wemmproperly.
1380e3d5408SPeter Wemm
1390e3d5408SPeter Wemm4. Unused capabilities
1400e3d5408SPeter Wemm
1410e3d5408SPeter WemmThe currently unused capabilities fall naturally into several groups:
1420e3d5408SPeter Wemm
1430e3d5408SPeter WemmA. Status-line capabilities:
1440e3d5408SPeter Wemm
1450e3d5408SPeter Wemm	Booleans: has_status_line, status_line_esc_ok.
1460e3d5408SPeter Wemm	Numerics: width_status_line.
1470e3d5408SPeter Wemm	Strings: dis_status_line, from_status_line, to_status_line.
1480e3d5408SPeter Wemm
1490e3d5408SPeter WemmSystem V Release 1 curses made no use of these at all.  SVr4's use, if
1500e3d5408SPeter Wemmany, is unknown.  From the AT&T termcap file it looks like curses, in general,
1510e3d5408SPeter Wemmshouldn't use them; terminal variants with status lines have their line count
1520e3d5408SPeter Wemmdecremented by 1, suggesting that curses is supposed to leave the status line
1530e3d5408SPeter Wemmalone.
1540e3d5408SPeter Wemm
1550e3d5408SPeter WemmB. Printer capabilities:
1560e3d5408SPeter Wemm
1570e3d5408SPeter Wemm	Boolean: col_addr_glitch, cr_cancels_micro_mode, has_print_wheel,
1580e3d5408SPeter Wemm		row_addr_glitch, semi_auto_right_margin, cpi_changes_res,
1590e3d5408SPeter Wemm		lpi_changes_res.
1600e3d5408SPeter Wemm	Numeric: buffer_capacity, dot_horz_spacing, dot_vert_spacing,
1610e3d5408SPeter Wemm		max_micro_address, max_micro_jump, micro_col_size,
1620e3d5408SPeter Wemm		micro_line_size, number_of_pins, output_res_char,
1630e3d5408SPeter Wemm		output_res_line, output_res_horz_inch, print_rate,
1640e3d5408SPeter Wemm		wide_char_size, bit_image_entwining, bit_image_type.
1650e3d5408SPeter Wemm	String: down_half_line, form_feed, up_half_line, set_left_margin,
1660e3d5408SPeter Wemm		set_right_margin, clear_margins, change_char_pitch
1670e3d5408SPeter Wemm		... set_page_length (all the SVr4 printer caps),
1680e3d5408SPeter Wemm
1690e3d5408SPeter WemmCurses doesn't use these.
1700e3d5408SPeter Wemm
1710e3d5408SPeter WemmC. Printer-control capabilities:
1720e3d5408SPeter Wemm
1730e3d5408SPeter Wemm	Boolean: prtr_silent.
1740e3d5408SPeter Wemm	Strings: print_screen, prtr_on, prtr_off, prtr_non.
1750e3d5408SPeter Wemm
1760e3d5408SPeter WemmCurses doesn't use these.
1770e3d5408SPeter Wemm
1780e3d5408SPeter WemmD. Dialer strings:
1790e3d5408SPeter Wemm
1800e3d5408SPeter Wemm	Strings: hangup, dial_phone, quick_dial, tone, pulse, flash_hook,
1810e3d5408SPeter Wemm		fixed_pause, wait_tone.
1820e3d5408SPeter Wemm
1830e3d5408SPeter WemmCurses doesn't use these.
1840e3d5408SPeter Wemm
1850e3d5408SPeter WemmE. Window and virtual-terminal capabilities:
1860e3d5408SPeter Wemm
1870e3d5408SPeter Wemm	Numerics: maximum_windows, virtual_terminal.
1880e3d5408SPeter Wemm	Strings: req_for_input, create_window, goto_window, set_window.
1890e3d5408SPeter Wemm
1900e3d5408SPeter WemmThese seem to be fossils from some AT&T experiments on character-based
1910e3d5408SPeter Wemmwindow systems that never escaped the lab.  The virtual_terminal cap had
1920e3d5408SPeter Wemmsomething to do with building terminal emulations into tty line disciplines.
1930e3d5408SPeter Wemm
1940e3d5408SPeter WemmF. Unused VDT capabilities:
1950e3d5408SPeter Wemm
1960e3d5408SPeter Wemm	Booleans: erase_overstrike, has_meta_key, insert_null_glitch,
1970e3d5408SPeter Wemm		move_insert, dest_tabs_magic_smso, transparent_underline,
1980e3d5408SPeter Wemm		needs_xon_xoff, hard_cursor.
1990e3d5408SPeter Wemm	Numerics: lines_of_memory, buttons.
2000e3d5408SPeter Wemm	Strings: pkey_key, pkey_local, pkey_xmit, underline_char,
2010e3d5408SPeter Wemm		enter_xon_mode,	exit_xon_mode, xon_character, xoff_character,
2020e3d5408SPeter Wemm		display_clock, remove_clock, user[0-5], display_pc_char,
2030e3d5408SPeter Wemm		enter_scancode_mode, exit_scancode_mode, pc_term_options,
2040e3d5408SPeter Wemm		scancode_escape, alt_scancode_esc.
2050e3d5408SPeter Wemm
2060e3d5408SPeter WemmThese are the potentially important ones for ncurses.  Notes:
2070e3d5408SPeter Wemm
2080e3d5408SPeter Wemm	i) ncurses doesn't need move_insert; it never uses cup/hpa/vpa while
2090e3d5408SPeter Wemm		insert_mode is on.
2100e3d5408SPeter Wemm
2110e3d5408SPeter Wemm	ii) We probably don't care about dest_tabs_magic_smso; only
2120e3d5408SPeter Wemm		Telerays used it and they're all long obsolete.
2130e3d5408SPeter Wemm
2144a1a9510SRong-En Fan-- vile:txtmode
215