[xorg,6/7] Added xf86-input-elographics

Submitted by Mads Doré Hansen on Aug. 7, 2014, 12:32 p.m.

Details

Message ID 1407414726-1710-6-git-send-email-dore@madsdore.dk
State New
Delegated to: Jacob Kjaergaard
Headers show

Commit Message

Mads Doré Hansen Aug. 7, 2014, 12:32 p.m.
---
 .../xf86-input-elographics/axis-inversion.patch    | 80 ++++++++++++++++++++++
 .../xorg-driver/xf86-input-elographics_1.4.1.oe    |  5 ++
 .../xf86-input-elographics_1.4.1.oe.sig            |  1 +
 3 files changed, 86 insertions(+)
 create mode 100644 recipes/xorg-driver/xf86-input-elographics/axis-inversion.patch
 create mode 100644 recipes/xorg-driver/xf86-input-elographics_1.4.1.oe
 create mode 100644 recipes/xorg-driver/xf86-input-elographics_1.4.1.oe.sig

Patch hide | download patch | download mbox

diff --git a/recipes/xorg-driver/xf86-input-elographics/axis-inversion.patch b/recipes/xorg-driver/xf86-input-elographics/axis-inversion.patch
new file mode 100644
index 0000000..d572a73
--- /dev/null
+++ b/recipes/xorg-driver/xf86-input-elographics/axis-inversion.patch
@@ -0,0 +1,80 @@ 
+From 0d3ec2e97c99431cdbaea8e958a75ff2e748da41 Mon Sep 17 00:00:00 2001
+From: Jaska Kivela <jaska@kivela.net>
+Date: Wed, 16 Jan 2013 11:51:04 +0200
+Subject: Added axis inversion functionality.
+
+The module would previously log a message if min > max, but not do anything
+about it. Keep the original min/max around, swap on-the-fly.
+
+Signed-off-by: Jaska Kivela <jaska@kivela.net>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+diff --git a/src/xf86Elo.c b/src/xf86Elo.c
+index cb1699e..c37cf9a 100644
+--- a/src/xf86Elo.c
++++ b/src/xf86Elo.c
+@@ -360,6 +360,22 @@ xf86EloReadInput(InputInfoPtr	pInfo)
+           cur_y = WORD_ASSEMBLY(priv->packet_buf[5], priv->packet_buf[6]);
+           state = priv->packet_buf[2] & 0x07;
+ 
++          DBG(5, ErrorF("ELO got: x(%d), y(%d), %s\n",
++                      cur_x, cur_y,
++                      (state == ELO_PRESS) ? "Press" :
++			((state == ELO_RELEASE) ? "Release" : "Stream")));
++
++          if (priv->min_y > priv->max_y) {
++            /* inverted y axis */
++            cur_y = priv->max_y - cur_y + priv->min_y;
++          }
++
++          if (priv->min_x > priv->max_x) {
++            /* inverted x axis */
++            cur_x = priv->max_x - cur_x + priv->min_x;
++          }
++
++
+           /*
+            * Send events.
+            *
+@@ -676,6 +692,7 @@ xf86EloControl(DeviceIntPtr	dev,
+   unsigned char		reply[ELO_PACKET_SIZE];
+   Atom btn_label;
+   Atom axis_labels[2] = { 0, 0 };
++  int x0, x1, y0, y1;
+ 
+   switch(mode) {
+ 
+@@ -719,17 +736,27 @@ xf86EloControl(DeviceIntPtr	dev,
+ 	return !Success;
+       }
+       else {
++
++	/* Correct the coordinates for possibly inverted axis.
++	   Leave priv->variables untouched so we can check for
++	   inversion on incoming events.
++	 */
++	y0 = min(priv->min_y, priv->max_y);
++	y1 = max(priv->min_y, priv->max_y);
++	x0 = min(priv->min_x, priv->max_x);
++	x1 = max(priv->min_x, priv->max_x);
++
+ 	/* I will map coordinates myself */
+ 	InitValuatorAxisStruct(dev, 0,
+ 			       axis_labels[0],
+-			       priv->min_x, priv->max_x,
++			       x0, x1,
+ 			       9500,
+ 			       0     /* min_res */,
+ 			       9500  /* max_res */,
+ 			       Absolute);
+ 	InitValuatorAxisStruct(dev, 1,
+ 			       axis_labels[1],
+-			       priv->min_y, priv->max_y,
++			       y0, y1,
+ 			       10500,
+ 			       0     /* min_res */,
+ 			       10500 /* max_res */,
+-- 
+cgit v0.10.2
+
diff --git a/recipes/xorg-driver/xf86-input-elographics_1.4.1.oe b/recipes/xorg-driver/xf86-input-elographics_1.4.1.oe
new file mode 100644
index 0000000..645ddd9
--- /dev/null
+++ b/recipes/xorg-driver/xf86-input-elographics_1.4.1.oe
@@ -0,0 +1,5 @@ 
+require xorg-driver-input.inc
+
+SUMMARY = "X.Org X server -- Elo Graphics input driver"
+
+SRC_URI += "file://axis-inversion.patch"
diff --git a/recipes/xorg-driver/xf86-input-elographics_1.4.1.oe.sig b/recipes/xorg-driver/xf86-input-elographics_1.4.1.oe.sig
new file mode 100644
index 0000000..d99a6d3
--- /dev/null
+++ b/recipes/xorg-driver/xf86-input-elographics_1.4.1.oe.sig
@@ -0,0 +1 @@ 
+78455583a34ccd209edc1aba5538926df4faf47f  xf86-input-elographics-1.4.1.tar.bz2