This document applies to version 2.0.0 of the Turbo Vision library.
It was originally designed for SETEdit and moved to Turbo Vision in 2002.
The internal encoding system maps the first 256 to CP 437.
Important: The Turbo Vision never had such a thing and this is completly new code that affects a lot of TV components.
The mechanism used is similar to what Linux kernel uses, why? simple:
1) That's the most complex mechanism I found in all the targets so far.
2) This is quite crazy but at the same time flexible.
What's similar?
We have two maps. The first map is what Linux calls SFM (Screen Font Map).
It defines which internal codes are rendered by each font character (which
unicodes in Linux kernel). This is basically a map that describes the font.
This is the only map I had in the editor. The curScrCP variable holds the
ID of this map.
The second map is what the Linux kernel calls ACM (Application Charset Map). This map describes how is the application data encoded, as an example: how is encoded the text. It doesn't have to map one to one with the font, and that's the complex stuff. For this reason this map is used to do an "on-the-fly" remap before sending the characters to the screen. If this map is identical to the SFM (maps 1 to 1 => what Linux calls trivial mapping) we don't do the remap. The OnTheFlyRemapNeeded() and OnTheFlyRemap(uchar val) are used for the remap. The curAppCP holds the ID of this map.
Is important to note that we don't do 8-bits -> ACM -> Unicode -> SFM -> 8-bits Screen like the Linux kernel does. We recode the application using the ACM and if ACM!=SFM we use a simple table that makes: 8-bits -> 8-bits Screen and if it isn't needed we just send the code to the screen.
I added a new code page to this: the input code page. In Linux systems the input is supposed to be encoded in the ACM code page. In Windows systems they can be different and they are asked with different calls. It can be useful if you want to use an encoding different than the currently used by the OS. You can change the screen encoding and load an appropriate font for it, then you change the application code page and you can properly see documents encoded in the target code page. But in order to edit them you need to translate the codes that come from keyboard to the target code page. That's a good use for the input code page.
The information from a configuration file is stored in memory as a tree. You can search in the tree some key indicating it as a you indicate a path and file name. Just think it as a particular file system, just use forward slashes.
Todo:
* The palette map could be changed during suspend. Currently not
suported. But is a really bizarre case and is restored if VGA state saving
is used.
SFT Files: This is currently platform dependent! It means SFT files should be generated in the same platform they are used. It will be fixed in the future. 17 bytes: SET's editor font 1 byte: 26 (DOS EOF) int: version (1 or 2) int: number of fonts contained. 2 bytes: size of name the name, the length includes the EOS, but this isn't stored on disk. Here are the fonts, each one have this format: version 1: int: first symbol defined. int: last symbol defined. unsigned: height of the font. The width is assumed to be 8 pixels (1 byte) version 2, the same but adds: unsigned: width of the font. The fonts itself follows the internal code.
#define Uses_TVCodePage #include <tv.h>
TVCodePage::CreateCodePagesCol();Member of the class: TVCodePage
Description
Protected member used to create the list of known code pages stored in CodePages.
#define Uses_TVCodePage #include <tv.h>
TVCodePage::TVCodePage(int idApp, int idScr, int idInp);Member of the class: TVCodePage
Description
Initializes the code page system selecting the indicated code pages. This is only used iternally. SetCodePage.
#define Uses_TVCodePage #include <tv.h>
TVCodePage::CreateRemap(int idSource, int idDest, uchar *table);Member of the class: TVCodePage
Description
Protected member used to create a one to one table to convert from one code page to another. Used to create the input to application and application to screen on the fly convertion tables.
#define Uses_TVCodePage #include <tv.h>
TVCodePage::CreateOnTheFlyRemap(int idApp, int idScr);Member of the class: TVCodePage
Description
Protected member used to create the application to screen map when we have to translate values on the fly. CreateRemap.
#define Uses_TVCodePage #include <tv.h>
TVCodePage::CreateOnTheFlyInpRemap(int idInp, int idApp);Member of the class: TVCodePage
Description
Protected member used to create the input to application map when we have to translate values on the fly. CreateRemap.
#define Uses_TVCodePage #include <tv.h>
TVCodePage::SetCodePage(int idApp, int idScr, int idInp);Member of the class: TVCodePage
Description
Selects the current code page used for toupper, tolower, etc. operations and internal encodings, the code page used for the screen and the one used for input.
If any of the arguments is -1 the current value is used. If the code pages aren't the same the remap on the fly is enabled. The application code page is used to remap the application, only if it changed.
#define Uses_TVCodePage #include <tv.h>
TVCodePage::FillTables(int id);Member of the class: TVCodePage
Description
Protected member used to create the toupper, tolower and isalpha tables.
#define Uses_TVCodePage #include <tv.h>
TVCodePage::~TVCodePage();Member of the class: TVCodePage
Description
Deallocates memory used by TVCodePage.
#define Uses_TVCodePage #include <tv.h>
TVCodePage::IDToIndex(int id);Member of the class: TVCodePage
Description
Converts a code page id into an index in the code page collection.
Return Value
The index of the code page with this id. If error the index for PC 437 code page is returned.
#define Uses_TVCodePage #include <tv.h>
TVCodePage::IndexToID(ccIndex index);Member of the class: TVCodePage
Description
Converts an index in the code page collection into a code page id. No check of range is done.
Return Value
The code page id for the indicated index.
#define Uses_TVCodePage #include <tv.h>
TVCodePage::GetTranslate(int id);Member of the class: TVCodePage
Description
Used to get a map to translate code page symbols into internal symbols for the indicated code page id.
Return Value
A pointer to a static buffer containing the translation values. Or NULL if not initialized. The index 256 indicates 128 if only the upper 128 values are really different from CP 437 or 256 if all the values are different. In any case all the values are usable.
#define Uses_TVCodePage #include <tv.h>
TVCodePage::GetList(void);Member of the class: TVCodePage
Description
Used to get a TStringCollection listing all the available code pages. Useful to make the user choose one. This is a read-only value, don't modify it.
Return Value
The internal collection casted to TStringCollection.
#define Uses_TVCodePage #include <tv.h>
TVCodePage::RemapChar(uchar c, ushort *map);Member of the class: TVCodePage
Description
Remaps the desired character using the provided map. The original character should be in CP437 encoding. GetTranslate.
Return Value
The remapped character. It can be a direct translation or the closest found.
#define Uses_TVCodePage #include <tv.h>
TVCodePage::RemapString(uchar *n, uchar *o, ushort *map);Member of the class: TVCodePage
Description
Remaps the o string using the provided map and storing it in the n string. The string should be terminated by a 0. RemapChar.
#define Uses_TVCodePage #include <tv.h>
TVCodePage::RemapNString(uchar *n, uchar *o, ushort *map, int len);Member of the class: TVCodePage
Description
Remaps the @var{o} string using the provided map and storing it in the @var{n} string. The number of items to remap is indicated with @var{len}. RemapChar.
#define Uses_TVCodePage #include <tv.h>
TVCodePage::RemapBufferGeneric(int sourID, int destID, uchar *buffer, unsigned len, unsigned ops);Member of the class: TVCodePage
Description
Used to remap a buffer from any of the supported code pages into another. The process doesn't have to be reversible.
Tabs, carriage returns, new lines and the null code aren't remapped.
#define Uses_TVCodePage #include <tv.h>
TVCodePage::RemapTVStrings(ushort *map);Member of the class: TVCodePage
Description
Protected member used internally to remap all the TV stuff that isn't ASCII.
#define Uses_TVCodePage #include <tv.h>
TVCodePage::SetCallBack(TVCodePageCallBack cb);Member of the class: TVCodePage
Description
Sets the function to be called after changing the code page. This should remap the special strings used by the application.
Return Value
The previous function. If it's != NULL you should call it.
#define Uses_TVCodePage #include <tv.h>
TVCodePage::CodePageOfID(int id);Member of the class: TVCodePage
Description
Protected member used to find the code page structure for a provided id.
Return Value
A CodePage structure pointer.
#define Uses_TVCodePage #include <tv.h>
TVCodePage::UnicodeForInternalCode(uint16 value);Member of the class: TVCodePage
Description
Finds which unicode is represented by the specified internal code. Currently that's an slow search because isn't very.
Return Value
The first unicode found.
#define Uses_TVCodePage #include <tv.h>
TVCodePage::InternalCodeForUnicode(ushort unicode);Member of the class: TVCodePage
Description
Finds which internal code can render an Unicode value.
Return Value
The internal or -1 if none can do it.
#define Uses_TVCodePage #include <tv.h>
TVCodePage::CreateCPFromUnicode(CodePage *cp, int id, const char *name, ushort *unicodes);Member of the class: TVCodePage
Description
Creates a new code page from an arry containing the unicodes for each symbol. Use an id over than 0x7FFF8000 to avoid collisions. This is used by the Linux driver when the unicodes maps doesn't match with known cp.
#define Uses_TVCodePage #include <tv.h>
TVCodePage::AddCodePage(CodePage *cp);Member of the class: TVCodePage
Description
Adds a custom code page to the list. You can create a new one from an array containing the Unicodes for each symbol. CreateCPFromUnicode.
Return Value
The index of the new code page in the collection.
#define Uses_TVCodePage #include <tv.h>
TVCodePage::LookSimilarInRange(int code, int last);Member of the class: TVCodePage
Description
This is a helper for the TVFontCollection class the parameters of this
function could change in the future.
Basically it finds a replacement for a missing symbol in a font. It allows
using incomplete font.
Return Value
The replacement or -1 if none known.
#define Uses_TVConfigFile #include <tv.h>
TVConfigFile::TVConfigFile();Member of the class: TVConfigFile
Description
Initializes the class and reads the contents of the specified file to a tree in memory.
#define Uses_TVConfigFile #include <tv.h>
TVConfigFile::Search(const char *key, char *&p, long &n);Member of the class: TVConfigFile
Description
Searchs for the indicated key in the tree. Separate nested sections using forward slashes.
Return Value
not 0 if the key was found, the return value is in p if the key is an string. Otherwise p is NULL and the value is in n.
#define Uses_TVConfigFile #include <tv.h>
TVConfigFile::AddInt(const char *key, const char *name, long value, int priority);Member of the class: TVConfigFile
Description
Adds a new variable to the tree. The type of the variable is integer. The name variable is added to the section indicated by key. Possible priority values are justHint (25), fromFile (50) or fromApplication (75). It is used to determine if a current value should be replaced by the new value. The name is copied.
Return Value
!=0 if the variable was added.
Example
TVConfigFile::AddInt("TV/X11","ScreenWidth",90, TVConfigFile::fromFile)
#define Uses_TVConfigFile #include <tv.h>
TVConfigFile::AddString(const char *key, const char *name, const char *value, int priority);Member of the class: TVConfigFile
Description
Adds a new variable to the tree. The type of the variable is string. The name variable is added to the section indicated by key. Possible priority values are justHint (25), fromFile (50) or fromApplication (75). It is used to determine if a current value should be replaced by the new value. The name and the content are copied.
Return Value
!=0 if the variable was added.
Example
TVConfigFile::AddInt("TV/X11","ExtProgVideoMode","A_Program", TVConfigFile::fromFile)
#define Uses_TVConfigFile #include <tv.h>
TVConfigFile::Print(FILE *f);Member of the class: TVConfigFile
Description
Prints the current tree to the specified file. It's main purpose is to debug programs, but you can use it to generate valid configuration files from data found in memory.
#define Uses_TVConfigFile #include <tv.h>
~TVConfigFile();Member of the class: TVConfigFile
Description
This is the destructor and just releases the tree that contains the variables.
#define Uses_TVConfigFile #include <tv.h>
int Load(const char *file);Member of the class: TVConfigFile
Description
Reads the specified configuration file.
Return Value
The read status, 0 means no error. The Errors data member contains descriptions for the errors.
#define Uses_TVConfigFile #include <tv.h>
TVMainConfigFile::TVMainConfigFile();Member of the class: TVMainConfigFile
Description
This is the constructor for TVMainConfigFile. This class is a special case of TVConfigFile used for the Turbo Vision configuration file. Note you can store application specific information in the configuration file using a section different than TV.
#define Uses_TVConfigFile #include <tv.h>
TVMainConfigFile::Load();Member of the class: TVMainConfigFile
Description
Loads the configuration file. First we try using the application provided name, then we search in the current directory, the path indicated by the HOME environment variable, the path indicated by the HOMEDIR environment variable, /etc and /dev/env/DJDIR/etc (%DJDIR%/etc). The default name for the file is tvrc, if the OS uses a point in the name to make it a hidden file the library also tries with .tvrc.
Return Value
The error status. 0 is OK.
#define Uses_TVConfigFile #include <tv.h>
TVMainConfigFile::~TVMainConfigFile();Member of the class: TVMainConfigFile
Description
Destroys the global TVConfigFile that contains the configuration.
#define Uses_TVConfigFile #include <tv.h>
TVMainConfigFile::Search(const char *key, long &val);Member of the class: TVMainConfigFile
Description
Looks for the specified key in the TV section. If found the result is stored in val, but only if that's an integer.
Return Value
True if the key exists, even when that's an string.
#define Uses_TVConfigFile #include <tv.h>
TVMainConfigFile::Search(const char *section, const char *variable, long &val);Member of the class: TVMainConfigFile
Description
Looks for the specified @var{variable} in the TV section using the specified @var{section} as subsection. If found the result is stored in val, but only if that's an integer.
Return Value
True if the key exists, even when that's an string.
#define Uses_TVConfigFile #include <tv.h>
TVMainConfigFile::Search(const char *key);Member of the class: TVMainConfigFile
Description
Looks for the specified key in the TV section. If found the result is returned but only if that's a string.
Return Value
The string or NULL.
#define Uses_TVConfigFile #include <tv.h>
TVMainConfigFile::Search(const char *section, const char *variable);Member of the class: TVMainConfigFile
Description
Looks for the specified @var{variable} in the TV section using the specified @var{section} as subsection. If found the result is returned but only if that's a string.
Return Value
The string or NULL.
#define Uses_TVConfigFile #include <tv.h>
TVMainConfigFile::Add(const char *section, const char *name, long value);Member of the class: TVMainConfigFile
Description
Adds a new variable of integer type to the TV subtree in the specified section and using the specified name. The priority for this variable is TVConfigFile::fromApplication. AddInt.
Return Value
!=0 if added.
#define Uses_TVConfigFile #include <tv.h>
TVMainConfigFile::Add(const char *section, const char *name, const char *value);Member of the class: TVMainConfigFile
Description
Adds a new variable of string type to the TV subtree in the specified section and using the specified name. The priority for this variable is TVConfigFile::fromApplication. The string is copied. AddInt.
Return Value
!=0 if added.
#define Uses_TVConfigFile #include <tv.h>
void TVMainConfigFile::Print(FILE *f);Member of the class: TVMainConfigFile
Description
Prints the current tree to the specified file. It's main purpose is to debug programs, but you can use it to generate valid configuration files from data found in memory.
#define Uses_TVConfigFile #include <tv.h>
void TVMainConfigFile::SetUserConfigFile(const char *name);Member of the class: TVMainConfigFile
Description
Specifies a name and path for the configuration file. Use it if your application needs special settings different than the rest of the TV applications.
TDisplayDOS::testForSupport();Member of the class: TDisplayDOS
Description
Used to test if a mode that we don't know can be handled by the driver or not. If the mode uses an unknown memory region we just assume that's a graphics mode and revert to 80x25. It could be enhanced a lot specially to support VESA video modes when implemented in a way that the video memory isn't located at the usual address.
TDisplayDOS::SetCrtMode(ushort mode);Member of the class: TDisplayDOS
Description
Sets a video mode from the video mode number. Video modes with the low
nibble equal 3 are used to encode extended and tweacked video modes. Note
that VESA 800x600x256 mode is 0x103 and here it is assumed to be extended
mode 1, that's 80x28. Also note that regular VGA 80x25 mode is the
"extended mode 0".
Any other value is assumed to be a user provided video mode and is
accepted only if we are sure that's really text mode and we know how to
handle it.
TDisplayDOS::GetWindowTitle(void);Member of the class: TDisplayDOS
Description
Finds the main window title if we are running under W95 and windowed.
Return Value
A pointer to a newly allocated string (new[]). Or 0 if fail. by SET.
TDisplayDOS::SetWindowTitle(const char *name);Member of the class: TDisplayDOS
Description
Sets the main window title if we are running under W95 and windowed.
Return Value
1 successful. by SET.
TVFontCollection::freeItem(void *item);Member of the class: TVFontCollection
Description
A specialized free to free the memory used by the font structure.
TVFontCollection::CheckForLines(void *item, void *arg);Member of the class: TVFontCollection
Description
Internally used during searchs to look for a font that matchs a specified size.
TVFontCollection::ReduceOne(uchar *dest, uchar *ori, int height, int wBytes, int num);Member of the class: TVFontCollection
Description
Creates a font of the specified height from another of the same height plus one. The destination buffer should be large enough (num*height bytes). Special care is taked for letters.
TVFontCollection::EnlargeOne(uchar *dest, uchar *ori, int height, int wBytes, int num);Member of the class: TVFontCollection
Description
Creates a font of the specified height from another of the same height minus one. The destination buffer should be large enough (num*height bytes). The last line is filled with 0.
TVFontCollection::GetFont(int width, int height);Member of the class: TVFontCollection
Description
Return Value
NULL if the font isn't available.
TVFontCollection::CheckSignature(FILE *f);Member of the class: TVFontCollection
Description
Internally used to check if we opened a fonts file.
TVFontCollection::ReadName(FILE *f);Member of the class: TVFontCollection
Description
Internally used to get the font's name.
TVFontCollection::ReadVersionNum(FILE *f, int *version, int *numfonts);Member of the class: TVFontCollection
Description
Internally used to read the version and number of fonts in the file.
TVFontCollection::ReadFontInfo(FILE *f, int version, TVBitmapFont *p);Member of the class: TVFontCollection
Description
Internally used to read the information about a font contained in an SFT file.
Return Value
Size of the data font.
TVFontCollection::CreateFont(void *item, void *arg);Member of the class: TVFontCollection
Description
Internally used to create a font for a desired code page.
TVFontCollection::SetCodePage(int id);Member of the class: TVFontCollection
Description
Sets the encoding of the fonts returned by GetFont.
TVFontCollection::TVFontCollection(const char *file, int cp);Member of the class: TVFontCollection
Description
Creates a font collection from the specified file and using the specified code page. You must check the error status with GetError before using the collection.
TVFontCollection::CreateListOfFonts(const char *dir, unsigned wmin, unsigned wmax, unsigned hmin, unsigned hmax);Member of the class: TVFontCollection
Description
Constructs a string collection of fonts files that provides shapes inside
the specified range. The fonts are searched in the specified directory. If
you specify NULL as directory then the search is done in the current
directory. Each element in the collection is a string that contains two
ASCIIZ strings. The first is the fantasy name of the font and the second is
the name of the file containing it. It is useful to display the name in
a TSortedListBox and easilly locate which file contains it using strlen.
This is an static member.
Return Value
The collection of available fonts or NULL if none.
#define Uses_TDisplay #include <tv.h>
TDisplay::defaultGetCols();Member of the class: TDisplay
Description
Number of columns of the physical screen.
#define Uses_TDisplay #include <tv.h>
TDisplay::defaultGetRows();Member of the class: TDisplay
Description
Number of rows of the physical screen.
#define Uses_TDisplay #include <tv.h>
TDisplay::defaultClearScreen(uchar, uchar);Member of the class: TDisplay
Description
Erase the screen using this width and height.
#define Uses_TDisplay #include <tv.h>
TDisplay::defaultSetCursorShape(unsigned, unsigned);Member of the class: TDisplay
Description
Sets the cursor shape, values in percent.
#define Uses_TDisplay #include <tv.h>
TDisplay::defaultGetCursorShape(unsigned &start, unsigned &end);Member of the class: TDisplay
Description
Gets the cursor shape, values in percent.
#define Uses_TDisplay #include <tv.h>
TDisplay::searchDOSModeInfo(ushort mode, unsigned &w, unsigned &h, int &fW, int &fH);Member of the class: TDisplay
Description
Return Value
True if the mode is known.
#define Uses_TDisplay #include <tv.h>
TDisplay::defaultSetCrtMode(ushort mode);Member of the class: TDisplay
Description
Sets the video mode.
#define Uses_TDisplay #include <tv.h>
TDisplay::defaultSetCrtModeExt(char *command);Member of the class: TDisplay
Description
Sets the video mode using a string. It could be an external program or other information that doesn't fit in an ushort.
#define Uses_TDisplay #include <tv.h>
TDisplay::defaultSetCrtModeRes(unsigned, unsigned, int, int);Member of the class: TDisplay
Description
Selects the mode that's closest to the sepcified width and height. The optional font size can be specified.
Return Value
0 no change done, 1 change done with all the requested parameters, 2 change done but just to get closer.
#define Uses_TDisplay #include <tv.h>
TDisplay::defaultGetCrtMode();Member of the class: TDisplay
Description
Returns current video mode.
#define Uses_TDisplay #include <tv.h>
TDisplay::defaultCheckForWindowSize(void);Member of the class: TDisplay
Description
Returns !=0 if the screen size changed externally. Usually when we are in a window, but isn't the only case.
#define Uses_TDisplay #include <tv.h>
TDisplay::defaultGetWindowTitle(void);Member of the class: TDisplay
Description
Gets the visible title of the screen, usually the window title.
#define Uses_TDisplay #include <tv.h>
TDisplay::defaultSetWindowTitle(const char *);Member of the class: TDisplay
Description
Sets the visible title of the screen, usually the window title.
Return Value
!=0 success.
#define Uses_TDisplay #include <tv.h>
TDisplay::defaultGetBlinkState();Member of the class: TDisplay
Description
Finds if the MSB of the attribute is for blinking.
Return Value
0 no, 1 yes, 2 no but is used for other thing.
#define Uses_TDisplay #include <tv.h>
TDisplay::setCursorType(ushort val);Member of the class: TDisplay
Description
Sets the cursor shape. I take the TV 2.0 convention: the low 8 bits is the start and the high 8 bits the end. Values can be between 0 and 99. To disable the cursor a value of 0 is used.
TDrawBuffer::moveBuf(unsigned indent, const void *source, unsigned attr, unsigned count);Member of the class: TDrawBuffer
Description
Copies count bytes from source to the data buffer starting at indent. The function uses the provided attribute, but if the attribute is 0 the attribute in the buffer is unmodified.
Added a check to avoid writings passing the end of the buffer.
TDrawBuffer::moveChar(unsigned indent, char c, unsigned attr, unsigned count);Member of the class: TDrawBuffer
Description
Fills count bytes in the buffer starting at the indent position. If the attribute is 0 the original is left unchanged. If the character is 0 only the attribute is used.
Added a check to avoid writings passing the end of the buffer.
TDrawBuffer::moveCStr(unsigned indent, const char *str, unsigned attrs);Member of the class: TDrawBuffer
Description
That's the same as moveStr but the attrs parameter holds two attributes the lower 8 bits are the normal value and the upper 8 bits define the attribute to be used for text enclosed by ASCII 126. moveStr.
The routine was modified to avoid writes passing the end of the buffer. Additionally was re-writed in assembler (I guess the Borland's original code was assembler, but I didn't take a look to it) because the check slow downs the routine so I wanted to avoid a lose in performance. SET.
TDrawBuffer::moveStr(unsigned indent, const char *str, unsigned attr);Member of the class: TDrawBuffer
Description
Writes a string in the buffer with the provided attribute. The routine copies until the EOS is found or the buffer is filled.
Modified to avoid writes passing the end of the buffer. Optimized for 32 bits. Translated to asm just for fun, I think is a little bit faster. SET.
#define Uses_TScreen #include <tv.h>
TScreen::TScreen();Member of the class: TScreen
Description
This constructor is called when the TApplication object is created. The
TProgramInit constructor creates a dynamic copy instance of a TScreen
object.
Actually it calls the detection routines to determine the best driver
available. If non is found prints and error to the stderr output and aborts
the execution.
TGKeyXTerm::InitOnce();Member of the class: TGKeyXTerm
Description
Does initialization tasks performed only once.
Return Value
0 if success, !=0 if an error ocurred. In the last case the error member points to a descriptive error.
TGKeyXTerm::Suspend();Member of the class: TGKeyXTerm
Description
Restore the original console state.
TGKeyXTerm::Resume();Member of the class: TGKeyXTerm
Description
Memorize current console state and setup the one needed for us.
TGKeyXTerm::ProcessEscape();Member of the class: TGKeyXTerm
Description
Parse a escape sequence.
Return Value
: 1 if the sequence found, 0 if not and the keys are stored in the buffer.
TGKeyXTerm::GetKeyParsed();Member of the class: TGKeyXTerm
Description
Gets a key from the buffer, waiting value or fIn and if needed calls the escape sequence parser.
TGKeyXTerm::GetRaw();Member of the class: TGKeyXTerm
Description
Gets the next key, their modifiers and ASCII. Is a postprocessor for GetKeyParsed.
TGKeyXTerm::GKey();Member of the class: TGKeyXTerm
Description
Gets a key from the input and converts it into the TV format.
TGKeyXTerm::GetShiftState();Member of the class: TGKeyXTerm
Description
Finds the value of the modifiers in TV format.
TGKeyXTerm::FillTEvent(TEvent &e);Member of the class: TGKeyXTerm
Description
Fills the TV event structure for a key.