/*
    Terminal interface header file
    Copyright (c) Tudor Hulubei & Andrei Pitis, May 1994

This file is part of UIT (UNIX Interactive Tools)

UIT is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the Free Software
Foundation; either version 2, or (at your option) any later version.

UIT is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
details .

You should have received a copy of the GNU General Public License along with
UIT; see the file COPYING.  If not, write to the Free Software Foundation,
675 Mass Ave, Cambridge, MA 02139, USA.  */


#ifndef __TTY_H
#define __TTY_H


#include "termcap.h"


#define OFF			0
#define ON			1

#define BLACK			0
#define RED			1
#define GREEN			2
#define YELLOW			3
#define BLUE			4
#define MAGENTA			5
#define CYAN			6
#define WHITE			7


#define KEY_NOKEY		0000		/* No key (error)	*/

#define KEY_ENTER       	0010           	/* Enter		*/
#define KEY_ESC			0033		/* Esc			*/
#define KEY_SPACE		0040		/* Space		*/

#define KEY_BACKSPACE   	0177    	/* Backspace		*/
#define KEY_TAB 	       	0011		/* Tab			*/


#define is_print(c)		((c) >= ' ' && (c) <= '~')


struct key_struct
{
    char *key_seq;
    struct key_struct *next;
    void *aux_data;
};


typedef struct 
{
    int fg_color;
    int bg_color;
    int br_status;
    int rv_status;
} tty_status;


void tty_init(void);
void tty_end(void);
void tty_kbdinit(int mode);
void tty_clrscr(void);
void tty_cursormove(int y, int x);
void tty_foreground(int color);
void tty_background(int color);
void tty_bright(int status);
void tty_reverse(int status);
void tty_blink(int status);
void tty_beep(void);
void tty_defaults(void);
void tty_save(tty_status *status);
void tty_restore(tty_status *status);
int  tty_write(char *buf, int length);
int  tty_read(char *buf, int length);
char tty_getch(void);
void tty_putch(int c);
void tty_getsize(int *columns, int *rows);
void tty_getscreen(char *buf);
void tty_putscreen(char *buf);
int  tty_getcolorindex(char *colorname);
void tty_key_list_insert(char *key_seq, void *aux_data);
void tty_key_search_restart(void);
void tty_key_list_delete(void);

struct key_struct *tty_key_search(char *key_seq);
struct key_struct *tty_getkey(int *repeat_count);


#endif
