summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaércio de Sousa <laerciosousa@sme-mogidascruzes.sp.gov.br>2015-12-11 11:43:07 -0200
committerAdam Jackson <ajax@redhat.com>2016-02-08 15:04:20 -0500
commit0b80da0d18713df4712c05973388b6226bb0227f (patch)
treeaf24e83e0c693008b931e919efddbdd492910615
parent6d6fd688ecf95f2e84f2af276d681ff42f9d5610 (diff)
kdrive: set "evdev" driver for input devices automatically, if available.
If kdrive input driver "evdev" is available, no other driver was explicitly set for a given input device, and its kernel device node is /dev/input/event*, this patch will make kdrive set "evdev" driver automatically for such device. Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Laércio de Sousa <laerciosousa@sme-mogidascruzes.sp.gov.br>
-rw-r--r--hw/kdrive/src/kinput.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c
index 980fd3ea2..3a1c6a001 100644
--- a/hw/kdrive/src/kinput.c
+++ b/hw/kdrive/src/kinput.c
@@ -51,6 +51,11 @@
#include "inpututils.h"
#include "optionstr.h"
+#ifdef KDRIVE_EVDEV
+#define DEV_INPUT_EVENT_PREFIX "/dev/input/event"
+#define DEV_INPUT_EVENT_PREFIX_LEN (sizeof(DEV_INPUT_EVENT_PREFIX) - 1)
+#endif
+
#define AtomFromName(x) MakeAtom(x, strlen(x), 1)
struct KdConfigDevice {
@@ -1097,6 +1102,16 @@ KdParseKbdOptions(KdKeyboardInfo * ki)
ErrorF("Kbd option key (%s) of value (%s) not assigned!\n",
key, value);
}
+
+#ifdef KDRIVE_EVDEV
+ if (!ki->driver && ki->path != NULL &&
+ strncasecmp(ki->path,
+ DEV_INPUT_EVENT_PREFIX,
+ DEV_INPUT_EVENT_PREFIX_LEN) == 0) {
+ ki->driver = KdFindKeyboardDriver("evdev");
+ ki->options = input_option_new(ki->options, "driver", "evdev");
+ }
+#endif
}
KdKeyboardInfo *
@@ -1191,6 +1206,16 @@ KdParsePointerOptions(KdPointerInfo * pi)
ErrorF("Pointer option key (%s) of value (%s) not assigned!\n",
key, value);
}
+
+#ifdef KDRIVE_EVDEV
+ if (!pi->driver && pi->path != NULL &&
+ strncasecmp(pi->path,
+ DEV_INPUT_EVENT_PREFIX,
+ DEV_INPUT_EVENT_PREFIX_LEN) == 0) {
+ pi->driver = KdFindPointerDriver("evdev");
+ pi->options = input_option_new(pi->options, "driver", "evdev");
+ }
+#endif
}
KdPointerInfo *