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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
/* -------------------------------------------------------------------------- */
/* */
/* [keytrans.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 */
/* */
/* -------------------------------------------------------------------------- */
/* */
/* Ported Konsole to Qt/Embedded */
/* */
/* Copyright (C) 2000 by John Ryland <jryland@trolltech.com> */
/* */
/* -------------------------------------------------------------------------- */
#ifndef KEYTRANS_H
#define KEYTRANS_H
#include <qstring.h>
#include <qlist.h>
#include <qiodevice.h>
#define BITS_NewLine 0
#define BITS_BsHack 1
#define BITS_Ansi 2
#define BITS_AppCuKeys 3
#define BITS_Control 4
#define BITS_Shift 5
#define BITS_Alt 6
#define BITS_COUNT 7
#define CMD_send 0
#define CMD_emitSelection 1
#define CMD_scrollPageUp 2
#define CMD_scrollPageDown 3
#define CMD_scrollLineUp 4
#define CMD_scrollLineDown 5
#define CMD_prevSession 6
#define CMD_nextSession 7
#define BITS(x,v) ((((v)!=0)<<(x)))
class KeyTrans
{
public:
KeyTrans();
~KeyTrans();
static KeyTrans* defaultKeyTrans();
static KeyTrans* fromFile(const char* path);
static KeyTrans* find(int numb);
static KeyTrans* find(const char* path);
public:
static int count();
static void loadAll();
public:
bool findEntry(int key, int bits, int* cmd, const char** txt, int* len);
private:
void addKeyTrans();
static KeyTrans* fromDevice(QString path, QIODevice &buf);
public:
class KeyEntry
{
public:
KeyEntry(int ref, int key, int bits, int mask, int cmd, QString txt);
~KeyEntry();
public:
bool matches(int key, int bits, int mask);
QString text();
public:
int ref;
private:
int key;
int bits;
int mask;
public:
int cmd;
QString txt;
};
public:
KeyEntry* addEntry(int ref, int key, int bits, int mask, int cmd, QString txt);
private:
QList<KeyEntry> table;
public: //FIXME: we'd do better
QString hdr;
int numb;
QString path;
};
#endif
|