"Fossies" - the Fresh Open Source Software Archive

Member "tnftp-20200705/libedit/terminal.h" (4 Jul 2020, 5361 Bytes) of package /linux/privat/tnftp-20200705.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "terminal.h" see the Fossies "Dox" file reference documentation.

    1 /*  $NetBSD: terminal.h,v 1.1.1.2 2020/07/04 12:41:18 lukem Exp $   */
    2 /*  from    NetBSD: terminal.h,v 1.9 2016/05/09 21:46:56 christos Exp   */
    3 
    4 /*-
    5  * Copyright (c) 1992, 1993
    6  *  The Regents of the University of California.  All rights reserved.
    7  *
    8  * This code is derived from software contributed to Berkeley by
    9  * Christos Zoulas of Cornell University.
   10  *
   11  * Redistribution and use in source and binary forms, with or without
   12  * modification, are permitted provided that the following conditions
   13  * are met:
   14  * 1. Redistributions of source code must retain the above copyright
   15  *    notice, this list of conditions and the following disclaimer.
   16  * 2. Redistributions in binary form must reproduce the above copyright
   17  *    notice, this list of conditions and the following disclaimer in the
   18  *    documentation and/or other materials provided with the distribution.
   19  * 3. Neither the name of the University nor the names of its contributors
   20  *    may be used to endorse or promote products derived from this software
   21  *    without specific prior written permission.
   22  *
   23  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
   24  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   25  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   26  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
   27  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   28  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   29  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   30  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   31  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   32  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   33  * SUCH DAMAGE.
   34  *
   35  *  @(#)term.h  8.1 (Berkeley) 6/4/93
   36  */
   37 
   38 /*
   39  * el.term.h: Termcap header
   40  */
   41 #ifndef _h_el_terminal
   42 #define _h_el_terminal
   43 
   44 typedef struct {        /* Symbolic function key bindings   */
   45     const wchar_t   *name;  /* name of the key          */
   46     int      key;   /* Index in termcap table       */
   47     keymacro_value_t     fun;   /* Function bound to it         */
   48     int      type;  /* Type of function         */
   49 } funckey_t;
   50 
   51 typedef struct {
   52     const char *t_name;     /* the terminal name    */
   53     coord_t   t_size;       /* # lines and cols */
   54     int   t_flags;
   55 #define TERM_CAN_INSERT     0x001   /* Has insert cap   */
   56 #define TERM_CAN_DELETE     0x002   /* Has delete cap   */
   57 #define TERM_CAN_CEOL       0x004   /* Has CEOL cap     */
   58 #define TERM_CAN_TAB        0x008   /* Can use tabs     */
   59 #define TERM_CAN_ME     0x010   /* Can turn all attrs.  */
   60 #define TERM_CAN_UP     0x020   /* Can move up      */
   61 #define TERM_HAS_META       0x040   /* Has a meta key   */
   62 #define TERM_HAS_AUTO_MARGINS   0x080   /* Has auto margins */
   63 #define TERM_HAS_MAGIC_MARGINS  0x100   /* Has magic margins    */
   64     char     *t_buf;        /* Termcap buffer   */
   65     size_t    t_loc;        /* location used    */
   66     char    **t_str;        /* termcap strings  */
   67     int  *t_val;        /* termcap values   */
   68     char     *t_cap;        /* Termcap buffer   */
   69     funckey_t    *t_fkey;       /* Array of keys    */
   70 } el_terminal_t;
   71 
   72 /*
   73  * fKey indexes
   74  */
   75 #define A_K_DN      0
   76 #define A_K_UP      1
   77 #define A_K_LT      2
   78 #define A_K_RT      3
   79 #define A_K_HO      4
   80 #define A_K_EN      5
   81 #define A_K_DE      6
   82 #define A_K_NKEYS   7
   83 
   84 libedit_private void    terminal_move_to_line(EditLine *, int);
   85 libedit_private void    terminal_move_to_char(EditLine *, int);
   86 libedit_private void    terminal_clear_EOL(EditLine *, int);
   87 libedit_private void    terminal_overwrite(EditLine *, const wchar_t *, size_t);
   88 libedit_private void    terminal_insertwrite(EditLine *, wchar_t *, int);
   89 libedit_private void    terminal_deletechars(EditLine *, int);
   90 libedit_private void    terminal_clear_screen(EditLine *);
   91 libedit_private void    terminal_beep(EditLine *);
   92 libedit_private int terminal_change_size(EditLine *, int, int);
   93 libedit_private int terminal_get_size(EditLine *, int *, int *);
   94 libedit_private int terminal_init(EditLine *);
   95 libedit_private void    terminal_bind_arrow(EditLine *);
   96 libedit_private void    terminal_print_arrow(EditLine *, const wchar_t *);
   97 libedit_private int terminal_clear_arrow(EditLine *, const wchar_t *);
   98 libedit_private int terminal_set_arrow(EditLine *, const wchar_t *,
   99     keymacro_value_t *, int);
  100 libedit_private void    terminal_end(EditLine *);
  101 libedit_private void    terminal_get(EditLine *, const char **);
  102 libedit_private int terminal_set(EditLine *, const char *);
  103 libedit_private int terminal_settc(EditLine *, int, const wchar_t **);
  104 libedit_private int terminal_gettc(EditLine *, int, char **);
  105 libedit_private int terminal_telltc(EditLine *, int, const wchar_t **);
  106 libedit_private int terminal_echotc(EditLine *, int, const wchar_t **);
  107 libedit_private void    terminal_writec(EditLine *, wint_t);
  108 libedit_private int terminal__putc(EditLine *, wint_t);
  109 libedit_private void    terminal__flush(EditLine *);
  110 
  111 /*
  112  * Easy access macros
  113  */
  114 #define EL_FLAGS    (el)->el_terminal.t_flags
  115 
  116 #define EL_CAN_INSERT       (EL_FLAGS & TERM_CAN_INSERT)
  117 #define EL_CAN_DELETE       (EL_FLAGS & TERM_CAN_DELETE)
  118 #define EL_CAN_CEOL     (EL_FLAGS & TERM_CAN_CEOL)
  119 #define EL_CAN_TAB      (EL_FLAGS & TERM_CAN_TAB)
  120 #define EL_CAN_ME       (EL_FLAGS & TERM_CAN_ME)
  121 #define EL_CAN_UP       (EL_FLAGS & TERM_CAN_UP)
  122 #define EL_HAS_META     (EL_FLAGS & TERM_HAS_META)
  123 #define EL_HAS_AUTO_MARGINS (EL_FLAGS & TERM_HAS_AUTO_MARGINS)
  124 #define EL_HAS_MAGIC_MARGINS    (EL_FLAGS & TERM_HAS_MAGIC_MARGINS)
  125 
  126 #endif /* _h_el_terminal */