|
|
/* File: \wacker\emu\emudec.hh (Created: 29-Jan-1998)
* * Copyright 1998 by Hilgraeve Inc. -- Monroe, MI * All rights reserved * * $Revision: 3 $ * $Date: 7/20/01 5:56p $ */
// The maximum number of user defined keys. Used by the VT220 and VT320.
//
#define MAX_UDK_KEYS 15
#define MAX_KEY_SPACE 256
// These constants are state table states used when processing user
// defined keys for the VT220 and VT320.
//
#define KEY_NUMBER_NEXT 0
#define KEY_DIGIT2_NEXT 1
#define SLASH_NEXT 2
#define CHAR_DIGIT1_NEXT 3
#define CHAR_DIGIT2_NEXT 4
#define ESC_SEEN 5
// The following key data structures are used only for user-defined
// keys in HTPE. But in shared code, they completely replace all
// key data structures. In shared code, these definitios are in
// \shared\emulator\emu.hh
// Key table structure definitions. These are conditionally defined
// so the debug version of the program can supply additional information
// for testing. In the debug version, when the user
// presses the F1 key, we can output the name of the key "HVK_F1" and
// the sequence that is assigned to that key. The KEYDEF macro defined
// below is used in the initialization of the emulator key tables, found
// in each emulator's initialize function. See John Masters for more
// details.
//
#if defined(_DEBUG)
typedef struct { KEYDEF Key; TCHAR * pSequence; unsigned int iSequenceLen; TCHAR * pszKeyName; } STEMUKEYDATA;
#define EMUKEY(K, V, C, A, S, E, SEQ, L) \
{ K | (V ? VIRTUAL_KEY : 0) | (C ? CTRL_KEY : 0) | \ (A ? ALT_KEY : 0) | (S ? SHIFT_KEY : 0) | (E ? EXTENDED_KEY : 0), \ { TEXT(SEQ) }, {L}, {#K} } //{ {K, V, C, A, S, E}, { TEXT(SEQ) }, {L}, {#K} }
#else
typedef struct { KEYDEF Key; TCHAR * pSequence; unsigned int iSequenceLen; } STEMUKEYDATA;
#define EMUKEY(K, V, C, A, S, E, SEQ, L) \
{ K | (V ? VIRTUAL_KEY : 0) | (C ? CTRL_KEY : 0) | \ (A ? ALT_KEY : 0) | (S ? SHIFT_KEY : 0) | (E ? EXTENDED_KEY : 0), \ { TEXT(SEQ) }, {L} } //{ {K, V, C, A, S, E}, { TEXT(SEQ) }, {L} }
#endif
typedef STEMUKEYDATA const * PSTCEMUKEYDATA; typedef STEMUKEYDATA * PSTEMUKEYDATA;
// Private emulator data for DEC Terminals.
//
typedef struct stPrivateDEC { int sv_row, sv_col, sv_state, sv_AWM, sv_DECOM, sv_protectmode, fAttrsSaved, len_s, len_t, nState, gn, old_gl, gl, gr, sv_gr, sv_gl, fDecColHold, *aiLineAttr;
ECHAR storage[40], vt_charset[4], vt_sv_charset[4], terminate[4], *pntr;
STATTR sv_attr;
#if defined(INCL_VT220)
PSTCEMUKEYDATA pstcEmuKeyTbl1, pstcEmuKeyTbl2, pstcEmuKeyTbl3, pstcEmuKeyTbl4, pstcEmuKeyTbl5, pstcEmuKeyTbl6;
int iKeyTable1Entries, iKeyTable2Entries, iKeyTable3Entries, iKeyTable4Entries, iKeyTable5Entries, iKeyTable6Entries;
// A pointer to a table of user defined keys,
//
PSTEMUKEYDATA pstUDK;
int iUDKTableEntries;
// This variable is a state variable used in the processing of
// user defined keys in the VT220 and VT320.
//
int iUDKState, iUDKTableIndex, iUDKSequenceLen;
// A flag that is used identify the locked or unlocked status
// of the UDK's, after they are defined. See emuDecClearUDK.
//
int fUnlockedUDK;
// A temporary buffer to collect the user defined key sequence as
// it is being processed.
//
TCHAR acUDKSequence[MAX_KEY_SPACE];
TCHAR chUDKAssignment;
TCHAR const *pacUDKSelectors; #endif
#if defined(INCL_VTUTF8)
ECHAR echUTF8CodeInProgress; #endif
} DECPRIVATE;
typedef DECPRIVATE *PSTDECPRIVATE;
// From vt220ini.c
void vt220_init(const HHEMU hhEmu);
// From vt220.c
void vt220_DA(const HHEMU hhEmu); void vt220_hostreset(const HHEMU hhEmu); void vt100_printcmnds(const HHEMU hhEmu); void emuDecClearUDK(const HHEMU hhEmu); void vt220_softreset(const HHEMU hhEmu); void vt220_2ndDA(const HHEMU hhEmu); void vt220_definekey(const HHEMU hhEmu); void vt220_level(const HHEMU hhEmu); void vt220_protmode(const HHEMU hhEmu); int vt220_reset(const HHEMU hhEmu, const int host_request); void vt220mode_reset(const HHEMU hhEmu); void vt220_savekeys(const HHEMU hhEmu, const int iSave); void emuDecSendKeyString(const HHEMU hhEmu, const int iIndex, PSTCEMUKEYDATA pstcKeyTbl, const int iMaxEntries);
void emuDecDefineUDK(const HHEMU hhEmu); int emuDecStoreUDK(const HHEMU hhEmu); int emuDecKeyboardIn(const HHEMU hhEmu, int Key, const int fTest); int emuDecKbdKeyLookup(const HHEMU hhEmu, const KEYDEF Key, PSTCEMUKEYDATA pstKeyTbl, const int iMaxEntries); void emuDecSendKeyString(const HHEMU hhEmu, const int iIndex, PSTCEMUKEYDATA pstcKeyTbl, const int iMaxEntries); void emuVT220SendKeyString(const HHEMU hhEmu, const int iIndex, PSTCEMUKEYDATA pstcKeyTbl, const int iMaxEntries); void emuDecEL(const HHEMU hhEmu); void emuDecClearLine(const HHEMU hhEmu, const int iClearSelect); void emuVT220ED(const HHEMU hhEmu); void emuDecEraseScreen(const HHEMU hhEmu, const int iClearSelect); void emuDecClearImageRowSelective(const HHEMU hhEmu, const int iImageRow); void emuDecUnload(const HHEMU hhEmu);
|