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.
127 lines
3.0 KiB
127 lines
3.0 KiB
/* -------------------------------------------------------------------------- */ |
|
/* */ |
|
/* [TEmuVt102.h] X Terminal Emulation */ |
|
/* */ |
|
/* -------------------------------------------------------------------------- */ |
|
/* */ |
|
/* Copyright (c) 1997,1998 by Lars Doelle <lars.doelle@on-line.de> */ |
|
/* */ |
|
/* This file is part of Konsole - an X terminal for KDE */ |
|
/* */ |
|
/* -------------------------------------------------------------------------- */ |
|
|
|
#ifndef VT102EMU_H |
|
#define VT102EMU_H |
|
|
|
#include "TEWidget.h" |
|
#include "TEScreen.h" |
|
#include "TEmulation.h" |
|
#include <qtimer.h> |
|
#include <stdio.h> |
|
|
|
// |
|
|
|
#define MODE_AppScreen (MODES_SCREEN+0) |
|
#define MODE_AppCuKeys (MODES_SCREEN+1) |
|
#define MODE_AppKeyPad (MODES_SCREEN+2) |
|
#define MODE_Mouse1000 (MODES_SCREEN+3) |
|
#define MODE_Ansi (MODES_SCREEN+4) |
|
#define MODE_total (MODES_SCREEN+5) |
|
|
|
struct DECpar |
|
{ |
|
BOOL mode[MODE_total]; |
|
}; |
|
|
|
struct CharCodes |
|
{ |
|
// coding info |
|
char charset[4]; // |
|
int cu_cs; // actual charset. |
|
bool graphic; // Some VT100 tricks |
|
bool pound ; // Some VT100 tricks |
|
bool sa_graphic; // saved graphic |
|
bool sa_pound; // saved pound |
|
}; |
|
|
|
class TEmuVt102 : public TEmulation |
|
{ Q_OBJECT |
|
|
|
public: |
|
|
|
TEmuVt102(TEWidget* gui); |
|
~TEmuVt102(); |
|
|
|
public slots: // signals incoming from TEWidget |
|
|
|
void onKeyPress(QKeyEvent*); |
|
void onMouse(int cb, int cx, int cy); |
|
|
|
signals: |
|
|
|
void changeTitle(int,const QString&); |
|
|
|
public: |
|
|
|
void reset(); |
|
|
|
void onRcvChar(int cc); |
|
void sendString(const char *); |
|
|
|
public: |
|
|
|
BOOL getMode (int m); |
|
|
|
void setMode (int m); |
|
void resetMode (int m); |
|
void saveMode (int m); |
|
void restoreMode(int m); |
|
void resetModes(); |
|
|
|
void setConnect(bool r); |
|
|
|
private: |
|
|
|
void resetToken(); |
|
#define MAXPBUF 80 |
|
void pushToToken(int cc); |
|
int pbuf[MAXPBUF]; //FIXME: overflow? |
|
int ppos; |
|
#define MAXARGS 15 |
|
void addDigit(int dig); |
|
void addArgument(); |
|
int argv[MAXARGS]; |
|
int argc; |
|
void initTokenizer(); |
|
int tbl[256]; |
|
|
|
void scan_buffer_report(); //FIXME: rename |
|
void ReportErrorToken(); //FIXME: rename |
|
|
|
void tau(int code, int p, int q); |
|
void XtermHack(); |
|
|
|
// |
|
|
|
void reportTerminalType(); |
|
void reportStatus(); |
|
void reportAnswerBack(); |
|
void reportCursorPosition(); |
|
void reportTerminalParms(int p); |
|
|
|
protected: |
|
|
|
unsigned short applyCharset(unsigned short c); |
|
void setCharset(int n, int cs); |
|
void useCharset(int n); |
|
void setAndUseCharset(int n, int cs); |
|
void saveCursor(); |
|
void restoreCursor(); |
|
void resetCharset(int scrno); |
|
CharCodes charset[2]; |
|
|
|
DECpar currParm; |
|
DECpar saveParm; |
|
}; |
|
|
|
#endif // ifndef ANSIEMU_H
|
|
|