• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • applications API Reference
  • KDE Home
  • Contact Us
 

Konsole

  • kde-4.14
  • applications
  • konsole
  • src
Vt102Emulation.h
Go to the documentation of this file.
1 /*
2  This file is part of Konsole, an X terminal.
3 
4  Copyright 2007-2008 by Robert Knight <robertknight@gmail.com>
5  Copyright 1997,1998 by Lars Doelle <lars.doelle@on-line.de>
6 
7  This program is free software; you can redistribute it and/or modify
8  it under the terms of the GNU General Public License as published by
9  the Free Software Foundation; either version 2 of the License, or
10  (at your option) any later version.
11 
12  This program is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with this program; if not, write to the Free Software
19  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
20  02110-1301 USA.
21 */
22 
23 #ifndef VT102EMULATION_H
24 #define VT102EMULATION_H
25 
26 // Qt
27 #include <QtCore/QHash>
28 
29 // Konsole
30 #include "Emulation.h"
31 #include "Screen.h"
32 
33 class QTimer;
34 class QKeyEvent;
35 
36 #define MODE_AppScreen (MODES_SCREEN+0) // Mode #1
37 #define MODE_AppCuKeys (MODES_SCREEN+1) // Application cursor keys (DECCKM)
38 #define MODE_AppKeyPad (MODES_SCREEN+2) //
39 #define MODE_Mouse1000 (MODES_SCREEN+3) // Send mouse X,Y position on press and release
40 #define MODE_Mouse1001 (MODES_SCREEN+4) // Use Hilight mouse tracking
41 #define MODE_Mouse1002 (MODES_SCREEN+5) // Use cell motion mouse tracking
42 #define MODE_Mouse1003 (MODES_SCREEN+6) // Use all motion mouse tracking
43 #define MODE_Mouse1005 (MODES_SCREEN+7) // Xterm-style extended coordinates
44 #define MODE_Mouse1006 (MODES_SCREEN+8) // 2nd Xterm-style extended coordinates
45 #define MODE_Mouse1015 (MODES_SCREEN+9) // Urxvt-style extended coordinates
46 #define MODE_Ansi (MODES_SCREEN+10) // Use US Ascii for character sets G0-G3 (DECANM)
47 #define MODE_132Columns (MODES_SCREEN+11) // 80 <-> 132 column mode switch (DECCOLM)
48 #define MODE_Allow132Columns (MODES_SCREEN+12) // Allow DECCOLM mode
49 #define MODE_BracketedPaste (MODES_SCREEN+13) // Xterm-style bracketed paste mode
50 #define MODE_total (MODES_SCREEN+14)
51 
52 namespace Konsole
53 {
54 extern unsigned short vt100_graphics[32];
55 
56 struct CharCodes {
57  // coding info
58  char charset[4]; //
59  int cu_cs; // actual charset.
60  bool graphic; // Some VT100 tricks
61  bool pound; // Some VT100 tricks
62  bool sa_graphic; // saved graphic
63  bool sa_pound; // saved pound
64 };
65 
76 class Vt102Emulation : public Emulation
77 {
78  Q_OBJECT
79 
80 public:
82  Vt102Emulation();
83  ~Vt102Emulation();
84 
85  // reimplemented from Emulation
86  virtual void clearEntireScreen();
87  virtual void reset();
88  virtual char eraseChar() const;
89 
90 public slots:
91  // reimplemented from Emulation
92  virtual void sendString(const char*, int length = -1);
93  virtual void sendText(const QString& text);
94  virtual void sendKeyEvent(QKeyEvent*);
95  virtual void sendMouseEvent(int buttons, int column, int line, int eventType);
96 
97 protected:
98  // reimplemented from Emulation
99  virtual void setMode(int mode);
100  virtual void resetMode(int mode);
101  virtual void receiveChar(int cc);
102 
103 private slots:
104  //causes changeTitle() to be emitted for each (int,QString) pair in pendingTitleUpdates
105  //used to buffer multiple title updates
106  void updateTitle();
107 
108 private:
109  unsigned short applyCharset(unsigned short c);
110  void setCharset(int n, int cs);
111  void useCharset(int n);
112  void setAndUseCharset(int n, int cs);
113  void saveCursor();
114  void restoreCursor();
115  void resetCharset(int scrno);
116 
117  void setMargins(int top, int bottom);
118  //set margins for all screens back to their defaults
119  void setDefaultMargins();
120 
121  // returns true if 'mode' is set or false otherwise
122  bool getMode(int mode);
123  // saves the current boolean value of 'mode'
124  void saveMode(int mode);
125  // restores the boolean value of 'mode'
126  void restoreMode(int mode);
127  // resets all modes
128  // (except MODE_Allow132Columns)
129  void resetModes();
130 
131  void resetTokenizer();
132 #define MAX_TOKEN_LENGTH 256 // Max length of tokens (e.g. window title)
133  void addToCurrentToken(int cc);
134  int tokenBuffer[MAX_TOKEN_LENGTH]; //FIXME: overflow?
135  int tokenBufferPos;
136 #define MAXARGS 15
137  void addDigit(int dig);
138  void addArgument();
139  int argv[MAXARGS];
140  int argc;
141  void initTokenizer();
142 
143  // Set of flags for each of the ASCII characters which indicates
144  // what category they fall into (printable character, control, digit etc.)
145  // for the purposes of decoding terminal output
146  int charClass[256];
147 
148  void reportDecodingError();
149 
150  void processToken(int code, int p, int q);
151  void processWindowAttributeChange();
152 
153  void reportTerminalType();
154  void reportSecondaryAttributes();
155  void reportStatus();
156  void reportAnswerBack();
157  void reportCursorPosition();
158  void reportTerminalParms(int p);
159 
160  // clears the screen and resizes it to the specified
161  // number of columns
162  void clearScreenAndSetColumns(int columnCount);
163 
164  CharCodes _charset[2];
165 
166  class TerminalState
167  {
168  public:
169  // Initializes all modes to false
170  TerminalState() {
171  memset(&mode, false, MODE_total * sizeof(bool));
172  }
173 
174  bool mode[MODE_total];
175  };
176 
177  TerminalState _currentModes;
178  TerminalState _savedModes;
179 
180  //hash table and timer for buffering calls to the session instance
181  //to update the name of the session
182  //or window title.
183  //these calls occur when certain escape sequences are seen in the
184  //output from the terminal
185  QHash<int, QString> _pendingTitleUpdates;
186  QTimer* _titleUpdateTimer;
187 };
188 }
189 
190 #endif // VT102EMULATION_H
Konsole::Vt102Emulation::~Vt102Emulation
~Vt102Emulation()
Definition: Vt102Emulation.cpp:79
Konsole::vt100_graphics
unsigned short vt100_graphics[32]
Definition: Vt102Emulation.cpp:60
MODE_total
#define MODE_total
Definition: Vt102Emulation.h:50
Emulation.h
Screen.h
Konsole::Vt102Emulation::reset
virtual void reset()
Resets the state of the terminal.
Definition: Vt102Emulation.cpp:88
Konsole::Vt102Emulation::sendMouseEvent
virtual void sendMouseEvent(int buttons, int column, int line, int eventType)
Definition: Vt102Emulation.cpp:919
Konsole::Vt102Emulation::receiveChar
virtual void receiveChar(int cc)
Processes an incoming character.
Definition: Vt102Emulation.cpp:291
MAXARGS
#define MAXARGS
Definition: Vt102Emulation.h:136
Konsole::Vt102Emulation::Vt102Emulation
Vt102Emulation()
Constructs a new emulation.
Definition: Vt102Emulation.cpp:68
Konsole::CharCodes::pound
bool pound
Definition: Vt102Emulation.h:61
MAX_TOKEN_LENGTH
#define MAX_TOKEN_LENGTH
Definition: Vt102Emulation.h:132
QTimer
Konsole::Vt102Emulation::eraseChar
virtual char eraseChar() const
Returns the special character used for erasing character.
Definition: Vt102Emulation.cpp:1299
Konsole::Vt102Emulation::sendText
virtual void sendText(const QString &text)
Definition: Vt102Emulation.cpp:964
QHash< int, QString >
Konsole::Vt102Emulation::resetMode
virtual void resetMode(int mode)
Definition: Vt102Emulation.cpp:1249
Konsole::Vt102Emulation::clearEntireScreen
virtual void clearEntireScreen()
Copies the current image into the history and clears the screen.
Definition: Vt102Emulation.cpp:82
Konsole::Vt102Emulation::sendString
virtual void sendString(const char *, int length=-1)
Definition: Vt102Emulation.cpp:837
Konsole::CharCodes::graphic
bool graphic
Definition: Vt102Emulation.h:60
Konsole::Emulation
Base class for terminal emulation back-ends.
Definition: Emulation.h:117
QString
Konsole::CharCodes::sa_graphic
bool sa_graphic
Definition: Vt102Emulation.h:62
Konsole::CharCodes::sa_pound
bool sa_pound
Definition: Vt102Emulation.h:63
Konsole::CharCodes::cu_cs
int cu_cs
Definition: Vt102Emulation.h:59
Konsole::Vt102Emulation
Provides an xterm compatible terminal emulation based on the DEC VT102 terminal.
Definition: Vt102Emulation.h:76
QKeyEvent
Konsole::CharCodes
Definition: Vt102Emulation.h:56
Konsole::CharCodes::charset
char charset[4]
Definition: Vt102Emulation.h:58
Konsole::Vt102Emulation::setMode
virtual void setMode(int mode)
Definition: Vt102Emulation.cpp:1215
Konsole::Vt102Emulation::sendKeyEvent
virtual void sendKeyEvent(QKeyEvent *)
Definition: Vt102Emulation.cpp:974
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Sat May 9 2020 03:56:27 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

Konsole

Skip menu "Konsole"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

applications API Reference

Skip menu "applications API Reference"
  •   kate
  •       kate
  •   KTextEditor
  •   Kate
  • Konsole

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal