Q3270
A Qt-based 3270 Terminal Emulator
Loading...
Searching...
No Matches
Keyboard.h
1/*
2 * Q3270 Terminal Emulator
3 *
4 * Copyright (c) 2020–2025 Andy Styles
5 * SPDX-License-Identifier: BSD-3-Clause
6 *
7 * This file is part of Q3270.
8 * See the LICENSE file in the project root for full license information.
9 */
10
11#ifndef KEYBOARD_H
12#define KEYBOARD_H
13
14#include <QApplication>
15#include <QClipboard>
16#include <QLineEdit>
17#include <QKeyEvent>
18#include <QSettings>
19#include <QVector>
20#include <QMap>
21
22#include "Models/KeyboardMap.h"
23
24class Keyboard : public QObject
25{
26
27 Q_OBJECT
28
29 public:
30
31 Keyboard();
32
33 bool processKey();
34
35 static QStringList allFunctionNames();
36
37 // Lookup helper
38 void invoke(const QString &functionName);
39 void setLocked(const bool locked);
40
41
42 signals:
43 void setEnterInhibit();
44 void setInsert(bool ins);
45
46 void key_Copy();
47 void key_moveCursor(int x, int y, bool absolute);
48 void key_Backspace();
49 void key_AID(int aid, bool short_read);
50 void key_Attn();
51 void key_Tab(int offset);
52 void key_Backtab();
53 void key_Home();
54 void key_EraseEOF();
55 void key_Delete();
56 void key_Newline();
57 void key_End();
58 void key_toggleRuler();
59 void key_Character(unsigned char keycode, bool insMode);
60 void key_Reset();
61
62 void key_showInfo();
63 void key_showFields();
64 void key_dumpScreen();
65
66 public slots:
67 void setConnected(bool state);
68
69 void setMap(const KeyboardMap &kmap);
70
71 protected:
72 bool eventFilter( QObject *dist, QEvent *event );
73
74 private:
75 using Handler = void (Keyboard::*)();
76
77 struct FunctionBinding {
78 const char *name;
79 Handler method;
80 };
81
82 static const FunctionBinding bindings[];
83 static QMap<QString, Handler> makeFunctionMap();
84 const QMap<QString, Handler> functionMap;
85
86 struct kbDets
87 {
88 Handler kbFunc;
89 QString keySeq;
90 QString keyFunc;
91 };
92
93 struct keyStruct
94 {
95 int key;
96 Qt::KeyboardModifiers modifiers;
97 int nativeKey;
98 QChar keyChar;
99 QMap<int, kbDets> *map;
100 bool isMapped;
101 bool mustMap;
102 Handler mapped;
103 };
104
105 QClipboard *clip; // Clipboard
106
107 QMap<int, kbDets> defaultMap;
108 QMap<int, kbDets> altMap;
109 QMap<int, kbDets> ctrlMap;
110 QMap<int, kbDets> shiftMap;
111 QMap<int, kbDets> metaMap;
112
113 keyStruct kbBuffer[1024];
114
115 int bufferPos;
116 int bufferEnd;
117 int keyCount;
118
119 bool systemLock;
120
121 bool insMode;
122 bool waitRelease;
123 bool connectedState; // Whether the session is connected or not
124
125 void lockKeyboard();
126
127 void cursorUp();
128 void cursorDown();
129 void cursorRight();
130 void cursorLeft();
131 void enter();
132 void tab();
133 void backtab();
134 void home();
135 void insert();
136 void reset();
137 void deleteKey();
138 void backspace();
139 void eraseEOF();
140 void newline();
141 void functionKey(int k);
142 void programaccessKey(int k);
143 void attn();
144 void clear();
145 void endline();
146
147 void ruler();
148
149 void fKey1();
150 void fKey2();
151 void fKey3();
152 void fKey4();
153 void fKey5();
154 void fKey6();
155 void fKey7();
156 void fKey8();
157 void fKey9();
158 void fKey10();
159 void fKey11();
160 void fKey12();
161 void fKey13();
162 void fKey14();
163 void fKey15();
164 void fKey16();
165 void fKey17();
166 void fKey18();
167 void fKey19();
168 void fKey20();
169 void fKey21();
170 void fKey22();
171 void fKey23();
172 void fKey24();
173
174 void paKey1();
175 void paKey2();
176 void paKey3();
177
178 void copy();
179 void paste();
180 void info();
181 void fields();
182 void dumpscreen();
183
184 void nextKey();
185 bool needtoWait(QKeyEvent *q);
186
187 void clearBufferEntry();
188
189 void setMapping(QString key, QString function);
190};
191#endif // KEYBOARD_H
Keyboard::Keyboard - Keyboard input processing.
Definition Keyboard.h:25
bool eventFilter(QObject *dist, QEvent *event)
Keyboard::eventFilter - process keyboard events.
Definition Keyboard.cpp:195
void setConnected(bool state)
Keyboard::setConnected - invoked when connection status changes.
Definition Keyboard.cpp:1176
static QStringList allFunctionNames()
Keyboard::allFunctionNames - return a list of all function names.
Definition Keyboard.cpp:146
Keyboard()
Keyboard::Keyboard - constructor.
Definition Keyboard.cpp:124
void setMap(const KeyboardMap &kmap)
Keyboard::setMap - set a keyboard map.
Definition Keyboard.cpp:1151
bool processKey()
Keyboard::processKey.
Definition Keyboard.cpp:277
Definition KeyboardMap.h:26