forked from KolibriOS/kolibrios
325 lines
7.6 KiB
C
325 lines
7.6 KiB
C
/*
|
|
***************************************************************************
|
|
* This file comprises part of PDCurses. PDCurses is Public Domain software.
|
|
* You may use this code for whatever purposes you desire. This software
|
|
* is provided AS IS with NO WARRANTY whatsoever.
|
|
* Should this software be used in another application, an acknowledgement
|
|
* that PDCurses code is used would be appreciated, but is not mandatory.
|
|
*
|
|
* Any changes which you make to this software which may improve or enhance
|
|
* it, should be forwarded to the current maintainer for the benefit of
|
|
* other users.
|
|
*
|
|
* The only restriction placed on this code is that no distribution of
|
|
* modified PDCurses code be made under the PDCurses name, by anyone
|
|
* other than the current maintainer.
|
|
*
|
|
* See the file maintain.er for details of the current maintainer.
|
|
***************************************************************************
|
|
*/
|
|
/*
|
|
$Id$
|
|
*/
|
|
#ifndef CURSOS2_INCL
|
|
#define CURSOS2_INCL 1
|
|
|
|
#ifdef CURSES__32BIT__
|
|
|
|
#if (NOVIO)
|
|
#define KbdSetStatus Kbd32SetStatus
|
|
#define KbdGetStatus Kbd32GetStatus
|
|
#define KbdCharIn Kbd32CharIn
|
|
#define KbdPeek Kbd32Peek
|
|
#define KbdFlushBuffer Kbd32FlushBuffer
|
|
|
|
#define VioGetMode Vio32GetMode
|
|
#define VioSetMode Vio32SetMode
|
|
#define VioGetCurPos Vio32GetCurPos
|
|
#define VioSetCurPos Vio32SetCurPos
|
|
#define VioGetCurType Vio32GetCurType
|
|
#define VioSetCurType Vio32SetCurType
|
|
#define VioScrollDn Vio32ScrollDn
|
|
#define VioScrollUp Vio32ScrollUp
|
|
#define VioGetConfig Vio32GetConfig
|
|
#define VioWrtTTY Vio32WrtTTY
|
|
#define VioReadCellStr Vio32ReadCellStr
|
|
#define VioWrtCellStr Vio32WrtCellStr
|
|
#define VioWrtNAttr Vio32WrtNAttr
|
|
#endif /* NOVIO */
|
|
|
|
#define FARKeyword
|
|
|
|
#define CURS_INCL_VIO_KBD
|
|
|
|
|
|
#ifdef __EMX__
|
|
# ifndef USE_OS2_H
|
|
# ifdef EMXVIDEO /* Define to use emx dos compatible video */
|
|
# include <stdlib.h>
|
|
# include <sys/video.h>
|
|
# ifdef USE_OS2_H
|
|
# undef USE_OS2_H /* And we can use the extra compile speed... */
|
|
# endif
|
|
# else
|
|
# define USE_OS2_H
|
|
# endif
|
|
# endif
|
|
# define APIENTRY
|
|
#else
|
|
# define APIRET ULONG
|
|
#endif
|
|
|
|
#else
|
|
|
|
|
|
# define FARKeyword far
|
|
# define APIRET USHORT
|
|
|
|
#ifdef USE_OS2_H
|
|
# define INCL_VIO
|
|
# define INCL_KBD
|
|
#else
|
|
# define CURS_INCL_VIO_KBD
|
|
#endif
|
|
|
|
|
|
#endif /* __32BIT__ */
|
|
|
|
#ifndef EMXVIDEO
|
|
|
|
/* if USE_OS2_H is defined then use the os2.h that comes with your compiler ...*/
|
|
|
|
#ifdef USE_OS2_H
|
|
# include <os2.h>
|
|
#else
|
|
|
|
/* ... otherwise use these definitions */
|
|
|
|
# include <os2def.h>
|
|
|
|
#endif
|
|
|
|
#ifdef CURS_INCL_VIO_KBD
|
|
|
|
typedef SHANDLE HKBD;
|
|
typedef HKBD FARKeyword * PHKBD;
|
|
|
|
|
|
typedef SHANDLE HVIO;
|
|
typedef HVIO FARKeyword * PHVIO;
|
|
|
|
|
|
|
|
typedef struct _KBDINFO {
|
|
USHORT cb;
|
|
USHORT fsMask;
|
|
USHORT chTurnAround;
|
|
USHORT fsInterim;
|
|
USHORT fsState;
|
|
}KBDINFO;
|
|
typedef KBDINFO FARKeyword *PKBDINFO;
|
|
|
|
|
|
USHORT APIENTRY KbdSetStatus(
|
|
PKBDINFO pkbdinfo,
|
|
HKBD hkbd );
|
|
|
|
|
|
USHORT APIENTRY KbdGetStatus(
|
|
PKBDINFO pkbdinfo,
|
|
HKBD hdbd );
|
|
|
|
|
|
typedef struct _KBDKEYINFO {
|
|
UCHAR chChar; /* ASCII character code */
|
|
UCHAR chScan; /* Scan Code */
|
|
UCHAR fbStatus;
|
|
UCHAR bNlsShift;
|
|
USHORT fsState;
|
|
ULONG time;
|
|
}KBDKEYINFO;
|
|
typedef KBDKEYINFO FARKeyword *PKBDKEYINFO;
|
|
|
|
#define IO_WAIT 0
|
|
#define IO_NOWAIT 1
|
|
|
|
USHORT APIENTRY KbdCharIn(
|
|
PKBDKEYINFO pkbci,
|
|
USHORT fWait, /* IO_WAIT, IO_NOWAIT */
|
|
HKBD hkbd);
|
|
|
|
USHORT APIENTRY KbdPeek(
|
|
PKBDKEYINFO pkbci,
|
|
HKBD hkbd );
|
|
|
|
USHORT APIENTRY KbdFlushBuffer(
|
|
HKBD hkbd);
|
|
|
|
|
|
typedef struct _VIOMODEINFO {
|
|
USHORT cb;
|
|
UCHAR fbType;
|
|
UCHAR color;
|
|
USHORT col; /* number of text columns */
|
|
USHORT row; /* number of text rows */
|
|
USHORT hres; /* horizontal resolution */
|
|
USHORT vres; /* vertical resolution */
|
|
UCHAR fmt_ID;
|
|
UCHAR attrib; /* number of attributes */
|
|
ULONG buf_addr;
|
|
ULONG buf_length;
|
|
ULONG full_length;
|
|
ULONG partial_length;
|
|
PCH ext_data_addr;
|
|
} VIOMODEINFO;
|
|
typedef VIOMODEINFO FARKeyword *PVIOMODEINFO;
|
|
|
|
|
|
USHORT APIENTRY VioGetMode(
|
|
PVIOMODEINFO pvioModeInfo,
|
|
HVIO hvio);
|
|
|
|
|
|
USHORT APIENTRY VioSetMode(
|
|
PVIOMODEINFO pvioModeInfo,
|
|
HVIO hvio);
|
|
|
|
|
|
USHORT APIENTRY VioGetCurPos(
|
|
PUSHORT pusRow,
|
|
PUSHORT pusColumn,
|
|
HVIO hvio );
|
|
|
|
|
|
USHORT APIENTRY VioSetCurPos(
|
|
USHORT usRow,
|
|
USHORT usColumn,
|
|
HVIO hvio);
|
|
|
|
typedef struct _VIOCURSORINFO {
|
|
USHORT yStart;
|
|
USHORT cEnd;
|
|
USHORT cx;
|
|
USHORT attr; /* -1=hidden cursor, any other=normal cursor */
|
|
} VIOCURSORINFO;
|
|
typedef VIOCURSORINFO FARKeyword *PVIOCURSORINFO;
|
|
|
|
|
|
USHORT APIENTRY VioGetCurType(
|
|
PVIOCURSORINFO pvioCursorInfo,
|
|
HVIO hvio );
|
|
|
|
|
|
USHORT APIENTRY VioSetCurType(
|
|
PVIOCURSORINFO pvioCursorInfo,
|
|
HVIO hvio );
|
|
|
|
USHORT APIENTRY VioScrollDn(
|
|
USHORT usTopRow,
|
|
USHORT usLeftCol,
|
|
USHORT usBotRow,
|
|
USHORT usRightCol,
|
|
USHORT cbLines,
|
|
PBYTE pCell,
|
|
HVIO hvio );
|
|
|
|
|
|
|
|
USHORT APIENTRY VioScrollUp(
|
|
USHORT usTopRow,
|
|
USHORT usLeftCol,
|
|
USHORT usBotRow,
|
|
USHORT usRightCol,
|
|
USHORT cbLines,
|
|
PBYTE pCell,
|
|
HVIO hvio );
|
|
|
|
|
|
/* VIOCONFIGINFO.adapter constants */
|
|
|
|
#define DISPLAY_MONOCHROME 0x0000
|
|
#define DISPLAY_CGA 0x0001
|
|
#define DISPLAY_EGA 0x0002
|
|
#define DISPLAY_VGA 0x0003
|
|
#define DISPLAY_8514A 0x0007
|
|
|
|
/* VIOCONFIGINFO.display constants */
|
|
|
|
#define MONITOR_MONOCHROME 0x0000
|
|
#define MONITOR_COLOR 0x0001
|
|
#define MONITOR_ENHANCED 0x0002
|
|
#define MONITOR_8503 0x0003
|
|
#define MONITOR_851X_COLOR 0x0004
|
|
#define MONITOR_8514 0x0009
|
|
|
|
typedef struct _VIOCONFIGINFO {
|
|
USHORT cb;
|
|
USHORT adapter;
|
|
USHORT display;
|
|
ULONG cbMemory;
|
|
USHORT Configuration;
|
|
USHORT VDHVersion;
|
|
USHORT Flags;
|
|
ULONG HWBufferSize;
|
|
ULONG FullSaveSize;
|
|
ULONG PartSaveSize;
|
|
USHORT EMAdaptersOFF;
|
|
USHORT EMDisplaysOFF;
|
|
} VIOCONFIGINFO;
|
|
typedef VIOCONFIGINFO FARKeyword *PVIOCONFIGINFO;
|
|
|
|
|
|
USHORT APIENTRY VioGetConfig(
|
|
USHORT usConfigId, /* Reserved (must be 0) */
|
|
PVIOCONFIGINFO pvioin,
|
|
HVIO hvio );
|
|
|
|
USHORT APIENTRY VioWrtTTY(
|
|
PCH pch,
|
|
USHORT cb,
|
|
HVIO hvio );
|
|
|
|
USHORT APIENTRY VioReadCellStr(
|
|
PCH pchCellStr,
|
|
PUSHORT pcb,
|
|
USHORT usRow,
|
|
USHORT usColumn,
|
|
HVIO hvio );
|
|
|
|
USHORT APIENTRY VioWrtCellStr(
|
|
PCH pchCellStr,
|
|
USHORT cb,
|
|
USHORT usRow,
|
|
USHORT usColumn,
|
|
HVIO hvio );
|
|
|
|
USHORT APIENTRY VioWrtNAttr(
|
|
PBYTE pAttr,
|
|
USHORT cb,
|
|
USHORT usRow,
|
|
USHORT usColumn,
|
|
HVIO hvio );
|
|
|
|
|
|
USHORT APIENTRY VioWrtNCell(
|
|
PBYTE pCell,
|
|
USHORT cb,
|
|
USHORT usRow,
|
|
USHORT usColumn,
|
|
HVIO hvio );
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
#ifndef KEYBOARD_ASCII_MODE
|
|
#define KEYBOARD_ASCII_MODE 0x0008
|
|
#endif
|
|
|
|
#ifndef KEYBOARD_BINARY_MODE
|
|
#define KEYBOARD_BINARY_MODE 0x0004
|
|
#endif
|
|
|
|
#endif /* !EMXVIDEO */
|