mindestens auf der DM7k und der DM56k fukntionieren die Frontpanel Buttons mit Neutrino nicht.
Folgender Patch behebt das:
Code: Alles auswählen
--- rcinput.cpp.orig 2011-07-26 23:29:15.000000000 +0200
+++ rcinput.cpp 2011-07-26 23:21:42.000000000 +0200
@@ -69,7 +69,8 @@
#include <fstream> // used for reading conf file
#if defined HAVE_DREAMBOX_HARDWARE || defined HAVE_IPBOX_HARDWARE
-const char * const RC_EVENT_DEVICE[NUMBER_OF_EVENT_DEVICES] = {"/dev/rawir2"};
+const char * const RC_EVENT_DEVICE[NUMBER_OF_EVENT_DEVICES] = {"/dev/rawir2", "/dev/dbox/fpkeys0"};
+int bu_read=0;
#define RC_standby_release (KEY_MAX + 1)
typedef struct { __u16 code; } t_input_event;
#elif defined(HAVE_TRIPLEDRAGON)
@@ -1603,6 +1604,7 @@
if ((fd_rc[i] != -1) &&
(FD_ISSET(fd_rc[i], &rfds)))
{
+
#ifdef HAVE_TRIPLEDRAGON
int count = 0;
/* clear the input queue and process only the latest event
@@ -1611,10 +1613,19 @@
while (read(fd_rc[i], &ev, sizeof(t_input_event)) == sizeof(t_input_event))
count++;
if (count)
-#else
+#endif
+#ifdef HAVE_DREAMBOX_HARDWARE
+ if(i==1)
+ {
+ //read was from fpkeys device
+ bu_read=1;
+ }
+#endif
+#ifndef HAVE_TRIPLEDRAGON
if (read(fd_rc[i], &ev, sizeof(t_input_event)) == sizeof(t_input_event))
#endif
{
+ //printf("Code red is: %04hx\n",ev.code);
uint trkey = translate(ev.code);
#if defined HAVE_DREAMBOX_HARDWARE || defined HAVE_IPBOX_HARDWARE
if (ev.code == 0xff)
@@ -2254,11 +2265,54 @@
case 0x00: return RC_0;
case 0x01: return RC_1;
case 0x02: return RC_2;
- case 0x03: return RC_3;
+ case 0x03: if (bu_read==1)
+ {
+ //read from fpkeys device
+ bu_read=0;
+ return RC_down;
+ break;
+ }
+ else
+ {
+ return RC_3;
+ break;
+ }
case 0x04: return RC_4;
- case 0x05: return RC_5;
- case 0x06: return RC_6;
- case 0x07: return RC_7;
+ case 0x05: if (bu_read==1)
+ {
+ //read from fpkeys device
+ bu_read=0;
+ return RC_up;
+ break;
+ }
+ else
+ {
+ return RC_5;
+ }
+ case 0x06: if (bu_read==1)
+ {
+ //read from fpkeys device
+ bu_read=0;
+ return RC_standby;
+ break;
+ }
+ else
+ {
+ return RC_6;
+ break;
+ }
+ case 0x07: if (bu_read==1)
+ {
+ //read from fpkeys device
+ bu_read=0;
+ //we just exit here. from fpkeys, 0x7 is key_release
+ break;
+ }
+ else
+ {
+ return RC_7;
+ break;
+ }
case 0x08: return RC_8;
case 0x09: return RC_9;
case 0x0a: return RC_plus;
--- rcinput.h.orig 2011-07-26 23:32:24.000000000 +0200
+++ rcinput.h 2011-07-27 08:38:34.000000000 +0200
@@ -127,12 +127,13 @@
int fd_pipe_high_priority[2];
int fd_pipe_low_priority[2];
-#if defined(OLD_RC_API) || defined(HAVE_TRIPLEDRAGON)
+#if defined(HAVE_TRIPLEDRAGON)
#define NUMBER_OF_EVENT_DEVICES 1
-#else /* OLD_RC_API */
+#else
#define NUMBER_OF_EVENT_DEVICES 2
#endif /* OLD_RC_API */
int fd_rc[NUMBER_OF_EVENT_DEVICES];
+ int fd_bu;
int fd_keyb;
int fd_event;
Bitte testen, ob es doch Nebenwirkungen hat.
Gruß
HB
EDIT: War nen Typo drin, gefixt