Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

247 lines
8.7 KiB

/* File: D:\WACKER\emu\emu.h (Created: 08-Dec-1993)
*
* Copyright 1994, 1998 by Hilgraeve Inc. -- Monroe, MI
* All rights reserved
*
* $Revision: 7 $
* $Date: 12/27/01 11:13a $
*/
#include "..\tdll\features.h"
/* Emulator ID's */
// Don't ever change emulator id numbers. They are stored in session files
// and as such are cast in stone. - mrw,4/13/95
//
#define EMU_AUTO 100
#define EMU_ANSI 101
#define EMU_MINI 102
#define EMU_VIEW 109
#define EMU_TTY 110
#define EMU_VT100 111
#define EMU_VT220 112 // rde:23 Jan 98
#define EMU_VT320 113 // rde:23 Jan 98
#define EMU_VT52 115
#define EMU_VT100J 116
#define EMU_ANSIW 117
#define EMU_VT100PLUS 118 // REV: 02/28/2001
#define EMU_VTUTF8 119 // REV: 02/28/2001
#define NBR_EMULATORS 13
/* Emulator constants */
// Note: if you change MAX_EMUROWS or MAX_EMUCOLS also change
// TERM_ROWS and TERM_COLS in term.hh to match - mrw
// Note: Can't find TERM_ROWS and TERM_COLS. rde 10 Jun 98
#define MAX_EMUROWS 50 // Largest vertical size for emulator.
#define MAX_EMUCOLS 132 // Largest horizontal size for emulator.
#define MIN_EMUROWS 10 // Smallest allowable value for rows,
#define MIN_EMUCOLS 20 // and columns.
#define EMU_DEFAULT_COLS 80
#define EMU_DEFAULT_ROWS 24
#define EMU_OK 0
#define TRM_NUMSTRIPCHARS 3
#define EMU_MAX_NAMELEN 15
#define EMU_MAX_AUTODETECT_ATTEMPTS 10
#define EMU_MAX_TELNETID 256
// JCM should remove the two defines below.
//
#define EMU_DEFAULT_MAXCOL 79
#define EMU_DEFAULT_MAXROW 23
#define EMU_KEYS_ACCEL 0
#define EMU_KEYS_TERM 1
#define EMU_KEYS_SCAN 2
#define EMU_CURSOR_BLOCK 1
#define EMU_CURSOR_LINE 2
#define EMU_CURSOR_NONE 3
#define EMU_CHARSET_ASCII 0
#define EMU_CHARSET_UK 1
#define EMU_CHARSET_SPECIAL 2
#define EMU_CHARSET_MULTINATIONAL 3
#define EMU_CHARSET_FRENCH 4
#define EMU_CHARSET_FRENCHCANADIAN 5
#define EMU_CHARSET_GERMAN 6
#define EMU_EVENT_CONNECTED 1
#define EMU_EVENT_DISCONNECTED 2
#define EMU_EVENT_CONNECTING 3
#define EMU_BKSPKEYS_CTRLH 1
#define EMU_BKSPKEYS_DEL 2
#define EMU_BKSPKEYS_CTRLHSPACE 3
// 8 bits just ain't enough anymore. Going to bit fields to handle
// things like text marking, blinking, underlining, etc. Also can
// handle more colors this way if we want. For now though stick to
// original scheme of 4 bits for foreground color and 4 bits for
// background color.
struct stAttribute
{
unsigned int txtclr : 4; // text or foreground color index.
unsigned int bkclr : 4; // background color index.
unsigned int txtmrk : 1; // true if text is 'marked'.
unsigned int undrln : 1; // underline
unsigned int hilite : 1; // foreground intensity
unsigned int bklite : 1; // background intensity
unsigned int blink : 1; // soon to be famous blink attribute
unsigned int revvid : 1; // reverse video
unsigned int blank : 1; // blank attribute
unsigned int dblwilf: 1; // double wide left
unsigned int dblwirt: 1; // double wide right
unsigned int dblhilo: 1; // double height top half
unsigned int dblhihi: 1; // double height bottom half
unsigned int protect: 1; // protected bit for DEC emulators.
unsigned int symbol: 1; // use symbol font
unsigned int wilf : 1; // wide left
unsigned int wirt : 1; // wide right
};
typedef struct stAttribute STATTR;
typedef STATTR *PSTATTR;
// Note: This structure is now used only internally to the program--it is
// no longer used to load in and save out data in the session file.
// Consequently, it is safe to add and remove items at will. rde 8 Jun 98
struct emuSettings
{
int nEmuId, // 100 = EMU_AUTO
// 101 = EMU_ANSI
// 102 = EMU_MINI
// 109 = EMU_VIEW
// 110 = EMU_TTY
// 111 = EMU_VT100
// 112 = EMU_VT220
// 113 = EMU_VT320
// 115 = EMU_VT52
// 116 = EMU_VT100J
// 117 = EMU_ANSIW
// 118 = EMU_VT100PLUS
// 119 = EMU_VTUTF8
//
nTermKeys, // 0 = EMU_KEYS_ACCEL
// 1 = EMU_KEYS_TERM
// 2 = EMU_KEYS_SCAN
//
nCursorType, // 1 = EMU_CURSOR_BLOCK
// 2 = EMU_CURSOR_LINE
// 3 = EMU_CURSOR_NONE
//
nCharacterSet, // 0 = EMU_CHARSET_ASCII
// 1 = EMU_CHARSET_UK
// 2 = EMU_CHARSET_SPECIAL
//
nAutoAttempts, // Count of connections using the Auto
// Detect Emulator. At
// EMU_MAX_AUTODETECT_ATTEMPTS, we switch
// to Ansi emulation. Note, this may
// get moved into a Statictics Handle
// if we ever develop one.
//
fCursorBlink, // Blinking cursor. True\False.
fMapPFkeys, // PF1-PF4 to top row of keypad.True\False.
fAltKeypadMode, // Alternate keypad mode. True\False.
fKeypadAppMode, // Keypad application mode. True\False.
fCursorKeypadMode, // Cursor keypad mode. True\Fales.
fReverseDelBk, // Reverse Del and Backsp. True\False.
f132Columns, // 132 column display. True\False.
fDestructiveBk, // Destructive backspace. True\False.
fWrapLines, // Wrap lines. True\False.
fLbSymbolOnEnter, // Send # symbol on Enter. True\False.
// Note: The following two variables were added for the VT220/320. rde:24 Jan 98
fUse8BitCodes, // 8-bit control codes True\False.
fAllowUserKeys; // User defined keys allowed True\False.
#if defined(INCL_PRINT_PASSTHROUGH)
// Note: The following variable was added for VT100/220/320. mpt:5-18-00
int fPrintRaw; // Do not use windows print drv True\False.
#endif // INCL_PRINT_PASSTHROUGH
#ifdef INCL_TERMINAL_SIZE_AND_COLORS
// The following four variables were added for user settable
// terminal screen size and colors. rde 1 Jun 98
int nTextColor, // Default text color. 0 thru 15.
nBackgroundColor, // Default background color. 0 thru 15.
nUserDefRows, // Number of terminal rows. 12 thru 50.
nUserDefCols; // Number of terminal columns. 40 thru 132.
#endif
// Note: The following two variables are only used if the "Include
// User Defined Backspace and Telnet Terminal Id" feature is enabled.
// There is no compile switch here because this entire structure gets
// written to the session file in one large chunk. Using a compile
// switch could potentially cause version problems later on down
// the road. - cab:11/15/96
//
int nBackspaceKeys; // 1 = EMU_BKSPKEYS_CTRLH
// 2 = EMU_BKSPKEYS_DEL
// 3 = EMU_BKSPKEYS_CTRLHSPACE
TCHAR acTelnetId[EMU_MAX_TELNETID]; // Telnet terminal ID
};
typedef struct emuSettings STEMUSET;
typedef STEMUSET *PSTEMUSET;
/* emuhdl.c */
HEMU emuCreateHdl(const HSESSION hSession);
int emuDestroyHdl(const HEMU hEmu);
int emuLoad(const HEMU hEmu, const int nEmuId);
void emuLock(const HEMU hEmu);
void emuUnlock(const HEMU hEmu);
ECHAR **emuGetTxtBuf(const HEMU hEmu);
PSTATTR *emuGetAttrBuf(const HEMU hEmu);
int emuKbdIn(const HEMU hEmu, KEY_T key, const int fTest);
int emuDataIn(const HEMU hEmu, const ECHAR ccode);
int emuComDone(const HEMU hEmu);
int emuTrackingNotify(const HEMU hEmu);
int emuIsEmuKey(const HEMU hEmu, KEY_T key);
int emuQueryClearAttr(const HEMU hemu, PSTATTR pstClearAttr);
int emuQueryCurPos(const HEMU hEmu, int *row, int *col);
HPRINT emuQueryPrintEchoHdl(const HEMU hEmu);
int emuQueryRowsCols(const HEMU hEmu, int *piRows, int *piCols);
int emuQueryEmulatorId(const HEMU hEmulator);
int emuNotify(const HEMU hEmu, const int nEvent);
int emuQueryCursorType(const HEMU hEmu);
int emuQueryName(const HEMU hEmu, TCHAR *achBuffer, int nSize);
int emuSetSettings(const HEMU hEmu, const PSTEMUSET pstSettings);
int emuQuerySettings(const HEMU hEmu, PSTEMUSET pstSettings);
int emuInitializeHdl(const HEMU hEmu);
int emuSaveHdl(const HEMU hEmu);
int emuHomeHostCursor(const HEMU hEmu);
int emuEraseTerminalScreen(const HEMU hEmu);
void emuMinitelSendKey(const HEMU hEmu, const int iCmd); // minitel.c
int emuGetIdFromName(const HEMU hEmu, TCHAR *achEmuName);
int emuQueryDefaultTelnetId(const int nEmuId, TCHAR *achTelnetId, int nSize);
int emuLoadDefaultTelnetId(const HEMU hEmu);
/* colors indexes */
#define VC_BLACK 0
#define VC_BLUE 1
#define VC_GREEN 2
#define VC_CYAN 3
#define VC_RED 4
#define VC_MAGENTA 5
#define VC_BROWN 6
#define VC_WHITE 7
#define VC_GRAY 8
#define VC_BRT_BLUE 9
#define VC_BRT_GREEN 10
#define VC_BRT_CYAN 11
#define VC_BRT_RED 12
#define VC_BRT_MAGENTA 13
#define VC_BRT_YELLOW 14
#define VC_BRT_WHITE 15