xref: /freebsd/contrib/ncurses/include/curses.events (revision 21817992b3314c908ab50f0bb88d2ee750b9c4ac)
1*21817992SBaptiste Daroussin/* $Id: curses.events,v 1.4 2024/01/19 09:24:17 tom Exp $ */
27a656419SBaptiste Daroussin/*
37a656419SBaptiste Daroussin * vile:cmode:
47a656419SBaptiste Daroussin * This file is part of ncurses, designed to be appended after curses.h.in
57a656419SBaptiste Daroussin * (see that file for the relevant copyright).
67a656419SBaptiste Daroussin */
77a656419SBaptiste Daroussin
87a656419SBaptiste Daroussin/*
97a656419SBaptiste Daroussin * This is an extension to support events...
107a656419SBaptiste Daroussin */
117a656419SBaptiste Daroussin#ifdef NCURSES_WGETCH_EVENTS
127a656419SBaptiste Daroussin#if !defined(__BEOS__) || defined(__HAIKU__)
137a656419SBaptiste Daroussin   /* Fix _nc_timed_wait() on BEOS... */
147a656419SBaptiste Daroussin#  define NCURSES_EVENT_VERSION	1
157a656419SBaptiste Daroussin#endif	/* !defined(__BEOS__) */
167a656419SBaptiste Daroussin
177a656419SBaptiste Daroussin/*
187a656419SBaptiste Daroussin * Bits to set in _nc_event.data.flags
197a656419SBaptiste Daroussin */
207a656419SBaptiste Daroussin#  define _NC_EVENT_TIMEOUT_MSEC	1
217a656419SBaptiste Daroussin#  define _NC_EVENT_FILE		2
227a656419SBaptiste Daroussin#  define _NC_EVENT_FILE_READABLE	2
237a656419SBaptiste Daroussin#  if 0					/* Not supported yet... */
247a656419SBaptiste Daroussin#    define _NC_EVENT_FILE_WRITABLE	4
257a656419SBaptiste Daroussin#    define _NC_EVENT_FILE_EXCEPTION	8
267a656419SBaptiste Daroussin#  endif
277a656419SBaptiste Daroussin
287a656419SBaptiste Daroussintypedef struct
297a656419SBaptiste Daroussin{
307a656419SBaptiste Daroussin    int type;
317a656419SBaptiste Daroussin    union
327a656419SBaptiste Daroussin    {
337a656419SBaptiste Daroussin	long timeout_msec;	/* _NC_EVENT_TIMEOUT_MSEC */
347a656419SBaptiste Daroussin	struct
357a656419SBaptiste Daroussin	{
367a656419SBaptiste Daroussin	    unsigned int flags;
377a656419SBaptiste Daroussin	    int fd;
387a656419SBaptiste Daroussin	    unsigned int result;
397a656419SBaptiste Daroussin	} fev;				/* _NC_EVENT_FILE */
407a656419SBaptiste Daroussin    } data;
417a656419SBaptiste Daroussin} _nc_event;
427a656419SBaptiste Daroussin
437a656419SBaptiste Daroussintypedef struct
447a656419SBaptiste Daroussin{
457a656419SBaptiste Daroussin    int count;
467a656419SBaptiste Daroussin    int result_flags;	/* _NC_EVENT_TIMEOUT_MSEC or _NC_EVENT_FILE_READABLE */
477a656419SBaptiste Daroussin    _nc_event *events[1];
487a656419SBaptiste Daroussin} _nc_eventlist;
497a656419SBaptiste Daroussin
507a656419SBaptiste Daroussinextern NCURSES_EXPORT(int) wgetch_events (WINDOW *, _nc_eventlist *) GCC_DEPRECATED(experimental option); /* experimental */
517a656419SBaptiste Daroussinextern NCURSES_EXPORT(int) wgetnstr_events (WINDOW *,char *,int,_nc_eventlist *) GCC_DEPRECATED(experimental option); /* experimental */
527a656419SBaptiste Daroussin
53*21817992SBaptiste Daroussin#define KEY_EVENT	0634		/* We were interrupted by an event */
547a656419SBaptiste Daroussin
557a656419SBaptiste Daroussin#endif /* NCURSES_WGETCH_EVENTS */
56