-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathConfig.h
More file actions
102 lines (75 loc) · 3.53 KB
/
Config.h
File metadata and controls
102 lines (75 loc) · 3.53 KB
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
94
95
96
97
98
99
100
101
102
#ifndef _CONFIG_H_
#define _CONFIG_H_
#include "Main.h"
#include <pcre.h>
#define CURRENT_CONFIG_VERSION 2 // Актуальная версия конфиг-файла
#define CODES_EVENT_VARIABLE 3 // Количество чисел, кодирующих одно событие клавиатуры
#define CODES_EVENT_LENGTH 16 // Возможное количество событий клавиатуры в буфере
#define CODES_LAYOUT_NUMBER 10 // Возможное количество раскладок клавиатуры
#define EVENT_ARRAY_SIZE 64
#define REGEXP_COMPILE_SIZE 4096
#define REGEXP_OVECTOR_SIZE 64
#define CONFIG_DEVICE_TYPE_KEYBOARD 0
#define CONFIG_DEVICE_TYPE_JOYSTICK 1
#define CONFIG_SWITCH_METHOD_CYCLIC 0
#define CONFIG_SWITCH_METHOD_DIRECT 1
struct REGEXPDATA
{
char regexp[STRING_LEN]; // Текст регулярного выражения
char regexpCompile[REGEXP_COMPILE_SIZE]; // Скомпилированный образ регулярного выражения
};
struct CMDDATA
{
char cmdText[STRING_LEN]; // Текст команды
};
class Config
{
public:
Config();
~Config();
void init(void);
void setFileName(const char *fileName);
const char *getFileName();
bool readFile();
bool readFile(const char *fileName);
void createStandartConfig();
void print(void);
void printStandartConfig();
// Методы получения значений из конфига
char *getInputDevice();
int getAllowWaitDeviceConnect();
int getAllowDeviceReconnect();
int getDeviceReconnectTime();
int getDeviceType();
int getNumberOfLayout();
int getSwitchMethod();
char *getEventFilter();
char *getEventFilterCompile();
char *getSequence(int n);
char *getSequenceCompile(int n);
char *getCommand(int n);
char *getUserDirectory();
char *getUserName();
protected:
void regexpCompiling(char *regexpText, char *regexpCompileData);
void createDirIfNotExists(char *dirName, char *userName);
void printStandartConfigToFileDescriptor(FILE *uk);
void updateVersion(const char *fileName, const int versionFrom, const int versionTo);
bool readAllValues(const char *fileName);
bool updateValue(const char *fileName, const char *name, const char *value);
// Переменные, в которых хранится конфигурация программы
int configVersion;
char inputDevice[STRING_LEN]; // Строка с именем устройства ввода
int allowWaitDeviceConnect; // Разрешено ли ожидание появления устройства при старте LLS
int allowDeviceReconnect; // Разрешено ли переподключение устройства в процессе работы
int deviceReconnectTime; // Переодичность переустановки соединения с устройством, сек
int deviceType; // Тип устройства
int numberOfLayout; // Количество раскладок
int switchMethod; // Метод переключения
REGEXPDATA eventFilter; // Первичный фильтр событий
REGEXPDATA sequences[CODES_LAYOUT_NUMBER]; // Строки с регулярными выражениями
CMDDATA commands[CODES_LAYOUT_NUMBER]; // Строки с командами
// Имя файла, из которого считывается конфигурация
char configFileName[STRING_LEN];
};
#endif // _CONFIG_H_