rcinput: workaround for VU+ solo2 remote control driver.
authorErik Slagter <erik@slagter.name>
Fri, 21 Jun 2013 13:30:13 +0000 (15:30 +0200)
committerErik Slagter <erik@slagter.name>
Fri, 21 Jun 2013 13:36:40 +0000 (15:36 +0200)
The solo2 remote control driver offers all possible
devices (remote control, keyboard, mouse, touchpad)
through one event device node, which confuses enigma,
because enigma assumes that a device that has an 'A'
key, can in fact send that key (and other letters),
while the remote control cannot send letters actually.

This fixes the remote control problems on the VU+ solo,
but it may break non-remote-control devices on this STB.

Also this workaround may or may not be required on
other VU+ STBes.

configure.ac
lib/driver/rc.cpp

index 6a4f4b4..659701d 100644 (file)
@@ -61,6 +61,9 @@ if test `echo "$BOXTYPE" | cut -b 1-2` == "dm"; then
        AC_DEFINE(DREAMBOX, 1, [Dreambox hardware])
        AC_DEFINE(KEY_PLAY_ACTUALLY_IS_KEY_PLAYPAUSE, 1,[define when rc sends a KEY_PLAY event for its KEY_PLAYPAUSE key])
 fi
+if test "$BOXTYPE" == "vusolo2"; then
+       AC_DEFINE(VUPLUS_RC_WORKAROUND, 1, [workaround for problem with vusolo2 event/rc driver])
+fi
 
 AC_ARG_WITH(textlcd,
        AC_HELP_STRING([--with-textlcd], [use ascii based lcd, yes or no]),
index 351c3f4..a3598dd 100644 (file)
@@ -148,13 +148,21 @@ bool eRCInputEventDriver::hasCap(unsigned char *caps, int bit)
 
 bool eRCInputEventDriver::isKeyboard()
 {
+#ifdef VUPLUS_RC_WORKAROUND
+       return(false);
+#else
        /* check whether the input device has KEY_A, in which case we assume it is a keyboard */
        return hasCap(keyCaps, KEY_A);
+#endif
 }
 
 bool eRCInputEventDriver::isPointerDevice()
 {
+#ifdef VUPLUS_RC_WORKAROUND
+       return(false);
+#else
        return hasCap(evCaps, EV_REL) || hasCap(evCaps, EV_ABS);
+#endif
 }
 
 eRCInputEventDriver::~eRCInputEventDriver()