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.
 
 
 
 
 

82 lines
2.3 KiB

/* -------------------------------------------------------------------------- */
/* */
/* [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 */
/* */
/* -------------------------------------------------------------------------- */
#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 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);
void addEntry(int key, int bits, int mask, int cmd, QString txt);
private:
class KeyEntry
{
public:
KeyEntry(int key, int bits, int mask, int cmd, QString txt);
~KeyEntry();
public:
bool matches(int key, int bits, int mask);
QString text();
private:
int key;
int bits;
int mask;
public:
int cmd;
QString txt;
};
private:
QList<KeyEntry> table;
public: //FIXME: we'd do better
QString hdr;
int numb;
QString path;
};
#endif