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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
#include <lib/driver/rcinput.h>
#include <sys/ioctl.h>
#include <linux/input.h>
#include <sys/stat.h>
#include <lib/base/ebase.h>
#include <lib/base/init.h>
#include <lib/base/init_num.h>
#include <lib/driver/input_fake.h>
void eRCDeviceInputDev::handleCode(int rccode)
{
struct input_event *ev = (struct input_event *)rccode;
if (ev->type!=EV_KEY)
return;
eDebug("%x %x %x", ev->value, ev->code, ev->type);
switch (ev->value)
{
case 0:
/*emit*/ input->keyPressed(eRCKey(this, ev->code, eRCKey::flagBreak));
break;
case 1:
/*emit*/ input->keyPressed(eRCKey(this, ev->code, 0));
break;
case 2:
/*emit*/ input->keyPressed(eRCKey(this, ev->code, eRCKey::flagRepeat));
break;
}
}
eRCDeviceInputDev::eRCDeviceInputDev(eRCInputEventDriver *driver): eRCDevice(driver->getDeviceName(), driver)
{
}
const char *eRCDeviceInputDev::getDescription() const
{
return id.c_str();
}
const char *eRCDeviceInputDev::getKeyDescription(const eRCKey &key) const
{
switch (key.code)
{
case KEY_0: return "0";
case KEY_1: return "1";
case KEY_2: return "2";
case KEY_3: return "3";
case KEY_4: return "4";
case KEY_5: return "5";
case KEY_6: return "6";
case KEY_7: return "7";
case KEY_8: return "8";
case KEY_9: return "9";
case KEY_RIGHT: return "rechts";
case KEY_LEFT: return "links";
case KEY_UP: return "oben";
case KEY_DOWN: return "unten";
case KEY_OK: return "ok";
case KEY_MUTE: return "mute";
case KEY_POWER: return "power";
case KEY_GREEN: return "gruen";
case KEY_YELLOW: return "gelb";
case KEY_RED: return "rot";
case KEY_BLUE: return "blau";
case KEY_VOLUMEUP: return "Lautstaerke plus";
case KEY_VOLUMEDOWN: return "Lautstaerke minus";
case KEY_HELP: return "?";
case KEY_SETUP: return "d-Box";
#if 0
case KEY_TOPLEFT: return "oben links";
case KEY_TOPRIGHT: return "oben rechts";
case KEY_BOTTOMLEFT: return "unten links";
case KEY_BOTTOMRIGHT: return "unten rechts";
#endif
case KEY_HOME: return "home";
default: return 0;
}
}
int eRCDeviceInputDev::getKeyCompatibleCode(const eRCKey &key) const
{
switch (key.code)
{
case KEY_0: return eRCInput::RC_0;
case KEY_1: return eRCInput::RC_1;
case KEY_2: return eRCInput::RC_2;
case KEY_3: return eRCInput::RC_3;
case KEY_4: return eRCInput::RC_4;
case KEY_5: return eRCInput::RC_5;
case KEY_6: return eRCInput::RC_6;
case KEY_7: return eRCInput::RC_7;
case KEY_8: return eRCInput::RC_8;
case KEY_9: return eRCInput::RC_9;
case KEY_RIGHT: return eRCInput::RC_RIGHT;
case KEY_LEFT: return eRCInput::RC_LEFT;
case KEY_UP: return eRCInput::RC_UP;
case KEY_DOWN: return eRCInput::RC_DOWN;
case KEY_OK: return eRCInput::RC_OK;
case KEY_MUTE: return eRCInput::RC_MUTE;
case KEY_POWER: return eRCInput::RC_STANDBY;
case KEY_GREEN: return eRCInput::RC_GREEN;
case KEY_YELLOW: return eRCInput::RC_YELLOW;
case KEY_RED: return eRCInput::RC_RED;
case KEY_VOLUMEUP: return eRCInput::RC_PLUS;
case KEY_BLUE: return eRCInput::RC_BLUE;
case KEY_VOLUMEDOWN: return eRCInput::RC_MINUS;
case KEY_HELP: return eRCInput::RC_HELP;
case KEY_SETUP: return eRCInput::RC_DBOX;
case KEY_HOME: return eRCInput::RC_HOME;
}
return -1;
}
class eInputDeviceInit
{
eRCInputEventDriver driver;
eRCDeviceInputDev deviceInputDev;
public:
eInputDeviceInit(): driver("/dev/input/event0"), deviceInputDev(&driver)
{
}
};
eAutoInitP0<eInputDeviceInit> init_rcinputdev(eAutoInitNumbers::rc+1, "input device driver");
|