1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
#ifndef _KEY_MAPPINGS_H_
#define _KEY_MAPPINGS_H_
#include <qwindowsystem_qws.h>
#include <qmap.h>
#include <qintdict.h>
class MapInfo
{
public:
MapInfo(){};
MapInfo(int code, int mod = 0, int uni = 0,
int shift_uni = 0, int ctrl_uni = 0);
static const QWSServer::KeyMap* findKeyMap(int code);
int keycode;
int modifiers;
int unicode;
int shift_unicode;
int ctrl_unicode;
bool isDefined;
};
class KeyMappings
{
public:
typedef QWSServer::KeyMap KeyMap;
typedef QMap<int, MapInfo> CodeMaps;
KeyMappings();
virtual ~KeyMappings();
void setOriginal(int unicode, int modifiers);
void setModifiers(int modifiers);
void setUnicode(int unicode);
void setKeycode(int keycode);
int getUnicode();
int getKeycode();
int getModifiers();
bool isDefined();
void assign(int keycode, int keymask, int mapcode, int mapmodifiers = 0,
int unicode = 0, int shift_unicode = 0, int ctrl_unicode = 0);
void assignModifier(const QString& type, const QString& state);
void assignUnicode(const QString& kind, const QString& ch);
void assignUnicode(int unicode);
bool apply(int unicode, int keycode, int modifiers, int keymask, bool isPress);
bool apply(int keycode, int keymask, bool isPress);
void setCapsLock(bool on=true){
m_capslock = on;
}
void reset();
void statistics();
private:
QMap<int, CodeMaps*> m_keymaps;
MapInfo m_keyinfo;
int m_modifiers;
CodeMaps::Iterator m_it;
bool m_capslock;
bool m_isMapped;
void init();
void clear();
};
#endif /* _KEY_MAPPINGS_H_ */
|