diff options
author | Robert Piasek <dagger@gentoo.org> | 2009-03-12 21:41:38 +0000 |
---|---|---|
committer | Robert Piasek <dagger@gentoo.org> | 2009-03-12 21:41:38 +0000 |
commit | 81ecde9b25256e4536d66c44c11c38aadcf1ed57 (patch) | |
tree | fddf59970a97ac60a37c1e46b89c8bb983a6f8e8 | |
parent | Update Manifest. (diff) | |
download | embedded-cross-81ecde9b25256e4536d66c44c11c38aadcf1ed57.tar.gz embedded-cross-81ecde9b25256e4536d66c44c11c38aadcf1ed57.tar.bz2 embedded-cross-81ecde9b25256e4536d66c44c11c38aadcf1ed57.zip |
Added some patches from Debian.
9 files changed, 447 insertions, 4 deletions
diff --git a/x11-drivers/xf86-input-tslib/Manifest b/x11-drivers/xf86-input-tslib/Manifest index ce68194..7360d9b 100644 --- a/x11-drivers/xf86-input-tslib/Manifest +++ b/x11-drivers/xf86-input-tslib/Manifest @@ -1,2 +1,9 @@ +AUX 01_fix-wrong-value-range-for-the-axises.diff 1657 RMD160 a2f426e5309d7fb63a0de582db5ff91045606970 SHA1 91c14cdd14b659d20282fdd9a3ee997b3da33e2a SHA256 303677531fd0968fdb9a849d73812fce690d5d76a2d0f74a663b8c96edc82b3e +AUX 10_use-hal-for-device.diff 1420 RMD160 7abcd239cdb949c9e23b0ef5b343ba7d37ab840d SHA1 d527e1e9755930192d93969414248317551d2f07 SHA256 6b7528f0a3ad4eaeba687679dc84fbf6de3409439635398acc51281e33e0d368 +AUX 20_dynamic-xy.diff 861 RMD160 ce4a08bc96c8f43f22eb69e52dfc1c39f8259a3f SHA1 0a647a6a763fe4efbcdf04331a46586b9be0a466 SHA256 502d4b8b12e8e83269e007295584df26114f63f7533bc5c238e81232c634010e +AUX 30_fix-button-release-events.diff 2429 RMD160 ef2c9e82b07eb592ad7520da6f4844fa68310089 SHA1 28956b1d0713faed397b1850ac4aad358a0c1de2 SHA256 dd8a8910ea65f1db5bebcd4dac4ece3e43dea91189455e749ba53de9268d5ed6 +AUX 40_emulate-right-button.diff 5043 RMD160 e845f44c412bb5c654430c5aba4f02b77f30fa92 SHA1 7f096999d593f9b31e199a9f374ba40b65ecf724 SHA256 f01ac6f30731e5575b5fbe16bafabd9169a07d5860dee77861e829573c8c1ee1 +AUX 50_emulate-right-button-manpage.diff 448 RMD160 696e9c88e473c13e049c96341b263a2284889ac0 SHA1 71a50374bd5fe8eb2a981a4ad194247b130cbe0a SHA256 205d25c2f76982ddfb6968a1ea75b01c3cc95985db439d372500450f24d91ca6 +AUX 60_detect_xinput-abi.diff 469 RMD160 798be12bc790efc96736e8f5e60909f942d7a111 SHA1 763f5e5c9cc88afea72ec5f4cc96494670591b02 SHA256 adffa1c6918d2e7df746d624f5b44cd4323aa9aac7cf7d7699e00181debd8d6e DIST xf86-input-tslib-0.0.5.tar.bz2 226648 RMD160 a7a2d64afbbd816c0107ca285bed148f84c5be10 SHA1 fa87a543e2a3d7a4aec56d1f85d731e0fcf8daab SHA256 d70c64f3f4fe931e12d5af7f91ff04cd0d16dd7459061c50b3149f9e35de8091 -EBUILD xf86-input-tslib-0.0.5.ebuild 1590 RMD160 e8e6c5e7c90aa2f599f6c90f96b2fb2557e5f188 SHA1 e131ea0544fb9e3d7857c1d143da537f7249f505 SHA256 7520fa05c24c24e6ae2a0393e7b8e582b2b25cec414d3b00425785e27250be3c +EBUILD xf86-input-tslib-0.0.5.ebuild 1841 RMD160 a966352f767fb490f255419f6a5b943565d9f8bf SHA1 3a329dcf35bcc088604dd16b3bcdc75300d06c74 SHA256 e8e6f78d2101d8689b2c7dca587937c0a7662dc233147322ad7d3815bbb363a0 diff --git a/x11-drivers/xf86-input-tslib/files/01_fix-wrong-value-range-for-the-axises.diff b/x11-drivers/xf86-input-tslib/files/01_fix-wrong-value-range-for-the-axises.diff new file mode 100644 index 0000000..4c80c7c --- /dev/null +++ b/x11-drivers/xf86-input-tslib/files/01_fix-wrong-value-range-for-the-axises.diff @@ -0,0 +1,53 @@ +1. Provided originally by upstream author, Sascha Hauer <s.hauer@pengutronix.de> + http://bugs.debian.org/493942#31 +2. Updated with the rotatory fix provided by Timo Juhani Lindfors + <timo.lindfors@iki.fi>, http://bugs.debian.org/493942#78 +3. Refreshed for version 0.0.5 + +--- xf86-input-tslib-0.0.5.orig/src/tslib.c ++++ xf86-input-tslib-0.0.5/src/tslib.c +@@ -183,7 +185,7 @@ + { + InputInfoPtr pInfo; + unsigned char map[MAXBUTTONS + 1]; +- int i; ++ int i, axiswidth, axisheight; + struct ts_priv *priv; + + ErrorF("%s\n", __FUNCTION__); +@@ -212,17 +226,29 @@ + return !Success; + } + ++ switch(priv->rotate) { ++ case TSLIB_ROTATE_CW: ++ case TSLIB_ROTATE_CCW: ++ axiswidth = priv->height; ++ axisheight = priv->width; ++ break; ++ default: ++ axiswidth = priv->width; ++ axisheight = priv->height; ++ break; ++ } ++ + InitValuatorAxisStruct(device, 0, 0, /* min val */ +- priv->width - 1, /* max val */ +- priv->width, /* resolution */ ++ axiswidth - 1, /* max val */ ++ axiswidth, /* resolution */ + 0, /* min_res */ +- priv->width); /* max_res */ ++ axiswidth); /* max_res */ + + InitValuatorAxisStruct(device, 1, 0, /* min val */ +- priv->height - 1,/* max val */ +- priv->height, /* resolution */ ++ axisheight - 1, /* max val */ ++ axisheight, /* resolution */ + 0, /* min_res */ +- priv->height); /* max_res */ ++ axisheight); /* max_res */ + + if (InitProximityClassDeviceStruct (device) == FALSE) { + ErrorF ("Unable to allocate EVTouch touchscreen ProximityClassDeviceStruct\n"); diff --git a/x11-drivers/xf86-input-tslib/files/10_use-hal-for-device.diff b/x11-drivers/xf86-input-tslib/files/10_use-hal-for-device.diff new file mode 100644 index 0000000..9f2cfa2 --- /dev/null +++ b/x11-drivers/xf86-input-tslib/files/10_use-hal-for-device.diff @@ -0,0 +1,45 @@ +From: Markku Vire markku.vire@movial.fi <mvire@movial.fi> +Date: Tue, 9 Oct 2007 07:29:08 +0000 (+0300) +Subject: Changed tslib device path to use the data provided by +X-Git-Url: http://linux.onarm.com/gitweb/?p=generic%2Fsource%2Fxf86-input-tslib.git;a=commitdiff_plain;h=9ead96bb85857c0122b7a1a4653a5863f187d511 + +Changed tslib device path to use the data provided by +automatic device detection. +--- + +--- /tmp/tslib.c 2008-11-11 13:05:57.000000000 +0100 ++++ xf86-input-tslib-0.0.5/src/tslib.c 2008-11-11 13:10:55.000000000 +0100 +@@ -72,11 +72,6 @@ + int width; + }; + +-static const char *DEFAULTS[] = { +- "TslibDevice", "/dev/event0", +- NULL +-}; +- + static void + BellProc(int percent, DeviceIntPtr pDev, pointer ctrl, int unused) + { +@@ -308,7 +303,7 @@ + pInfo->private = priv; + + /* Collect the options, and process the common options. */ +- xf86CollectInputOptions(pInfo, DEFAULTS, NULL); ++ xf86CollectInputOptions(pInfo, NULL, NULL); + xf86ProcessCommonOptions(pInfo, pInfo->options); + + priv->screen_num = xf86SetIntOption(pInfo->options, "ScreenNumber", 0 ); +@@ -334,8 +329,10 @@ + priv->rotate = TSLIB_ROTATE_NONE; + } + +- s = xf86SetStrOption(pInfo->options, "TslibDevice", NULL); +- ++ s = xf86CheckStrOption(dev->commonOptions, "path", NULL); ++ if (!s) ++ s = xf86CheckStrOption(dev->commonOptions, "Device", NULL); ++ + priv->ts = ts_open(s, 0); + if (!priv->ts) { + ErrorF("ts_open failed (device=%s)\n",s); diff --git a/x11-drivers/xf86-input-tslib/files/20_dynamic-xy.diff b/x11-drivers/xf86-input-tslib/files/20_dynamic-xy.diff new file mode 100644 index 0000000..1c42b85 --- /dev/null +++ b/x11-drivers/xf86-input-tslib/files/20_dynamic-xy.diff @@ -0,0 +1,19 @@ +1. Provided by Graeme Gregory <dp at xora.org.uk> + +Index: xf86-input-tslib-0.0.5/src/tslib.c +=================================================================== +--- xf86-input-tslib-0.0.5.orig/src/tslib.c 2008-11-11 13:48:12.000000000 +0000 ++++ xf86-input-tslib-0.0.5/src/tslib.c 2008-11-11 13:51:51.000000000 +0000 +@@ -321,10 +321,10 @@ + priv->screen_num = xf86SetIntOption(pInfo->options, "ScreenNumber", 0 ); + + priv->width = xf86SetIntOption(pInfo->options, "Width", 0); +- if (priv->width <= 0) priv->width = DEFAULT_WIDTH; ++ if (priv->width <= 0) priv->width = screenInfo.screens[0]->width; + + priv->height = xf86SetIntOption(pInfo->options, "Height", 0); +- if (priv->height <= 0) priv->height = DEFAULT_HEIGHT; ++ if (priv->height <= 0) priv->height = screenInfo.screens[0]->height; + + s = xf86SetStrOption(pInfo->options, "Rotate", 0); + if (s > 0) { diff --git a/x11-drivers/xf86-input-tslib/files/30_fix-button-release-events.diff b/x11-drivers/xf86-input-tslib/files/30_fix-button-release-events.diff new file mode 100644 index 0000000..7da9c9f --- /dev/null +++ b/x11-drivers/xf86-input-tslib/files/30_fix-button-release-events.diff @@ -0,0 +1,105 @@ +1. Provided by Mikko Rasa <tdb@tdb.fi> + http://bugs.debian.org/501139#10 +2. Refreshed for 10_use-hal-for-device.diff + +--- xf86-input-tslib-0.0.5.orig/src/tslib.c ++++ xf86-input-tslib-0.0.5/src/tslib.c +@@ -123,52 +123,50 @@ + int ret; + int x,y; + +- ret = ts_read(priv->ts, &samp, 1); ++ while((ret = ts_read(priv->ts, &samp, 1)) == 1) { ++ if(samp.pressure) { ++ int tmp_x = samp.x; ++ ++ switch(priv->rotate) { ++ case TSLIB_ROTATE_CW: samp.x = samp.y; ++ samp.y = priv->width - tmp_x; ++ break; ++ case TSLIB_ROTATE_UD: samp.x = priv->width - samp.x; ++ samp.y = priv->height - samp.y; ++ break; ++ case TSLIB_ROTATE_CCW: samp.x = priv->height - samp.y; ++ samp.y = tmp_x; ++ break; ++ default: break; ++ } ++ ++ priv->lastx = samp.x; ++ priv->lasty = samp.y; ++ x = samp.x; ++ y = samp.y; ++ ++ xf86XInputSetScreen(local, priv->screen_num, ++ samp.x, ++ samp.y); + +- if (ret < 0) { +- ErrorF("ts_read failed\n"); +- return; +- } +- +-// ErrorF("%ld.%06ld: %6d %6d %6d\n", samp.tv.tv_sec, samp.tv.tv_usec, samp.x, samp.y, samp.pressure); +- +- if(samp.pressure) { +- int tmp_x = samp.x; ++ xf86PostMotionEvent (local->dev, TRUE, 0, 2, ++ x, y); + +- switch(priv->rotate) { +- case TSLIB_ROTATE_CW: samp.x = samp.y; +- samp.y = priv->width - tmp_x; +- break; +- case TSLIB_ROTATE_UD: samp.x = priv->width - samp.x; +- samp.y = priv->height - samp.y; +- break; +- case TSLIB_ROTATE_CCW: samp.x = priv->height - samp.y; +- samp.y = tmp_x; +- break; +- default: break; + } + +- priv->lastx = samp.x; +- priv->lasty = samp.y; +- x = samp.x; +- y = samp.y; +- +- xf86XInputSetScreen(local, priv->screen_num, +- samp.x, +- samp.y); +- +- xf86PostMotionEvent (local->dev, TRUE, 0, 2, +- x, y); ++ if(!!priv->lastp != !!samp.pressure) { ++ priv->lastp = samp.pressure; + ++ xf86PostButtonEvent(local->dev, TRUE, ++ 1, !!samp.pressure, 0, 2, ++ priv->lastx, ++ priv->lasty); ++ } + } + +- if(priv->lastp != samp.pressure) { +- priv->lastp = samp.pressure; +- +- xf86PostButtonEvent(local->dev, TRUE, +- 1, !!samp.pressure, 0, 2, +- priv->lastx, +- priv->lasty); ++ if (ret < 0) { ++ ErrorF("ts_read failed\n"); ++ return; + } + + } +@@ -345,7 +343,7 @@ + if (!s) + s = xf86CheckStrOption(dev->commonOptions, "Device", NULL); + +- priv->ts = ts_open(s, 0); ++ priv->ts = ts_open(s, 1); + if (!priv->ts) { + ErrorF("ts_open failed (device=%s)\n",s); + return NULL; diff --git a/x11-drivers/xf86-input-tslib/files/40_emulate-right-button.diff b/x11-drivers/xf86-input-tslib/files/40_emulate-right-button.diff new file mode 100644 index 0000000..a023593 --- /dev/null +++ b/x11-drivers/xf86-input-tslib/files/40_emulate-right-button.diff @@ -0,0 +1,177 @@ +1. Provided by Sebastian Ohl <sebastian@ohl.name> + http://bugs.debian.org/495487#62 + +--- xf86-input-tslib-0.0.5/src/tslib.c 2009-02-22 10:47:56.000000000 +0100 ++++ xf86-input-tslib-0.0.5.my/src/tslib.c 2009-02-22 10:46:18.000000000 +0100 +@@ -50,18 +50,24 @@ + #include <mipointer.h> + + #include <tslib.h> ++#include <sys/time.h> ++#include <time.h> + + #ifdef XFree86LOADER + #include <xf86Module.h> + #endif + +-#define MAXBUTTONS 1 ++#define MAXBUTTONS 3 ++#define TIME23RDBUTTON 0.5 ++#define MOVEMENT23RDBUTTON 4 + + #define DEFAULT_HEIGHT 240 + #define DEFAULT_WIDTH 320 + + enum { TSLIB_ROTATE_NONE=0, TSLIB_ROTATE_CW=270, TSLIB_ROTATE_UD=180, TSLIB_ROTATE_CCW=90 }; + ++enum button_state { BUTTON_NOT_PRESSED = 0, BUTTON_1_PRESSED = 1, BUTTON_3_CLICK = 3, BUTTON_3_CLICKED=4, BUTTON_EMULATION_OFF=-1 }; ++ + struct ts_priv { + XISBuffer *buffer; + struct tsdev *ts; +@@ -70,6 +76,9 @@ + int rotate; + int height; + int width; ++ enum button_state state; ++ struct timeval button_down_start; ++ int button_down_x,button_down_y; + }; + + static void +@@ -111,14 +120,30 @@ + return TRUE; + } + ++struct timeval TimevalDiff(struct timeval a, struct timeval b) ++{ ++ struct timeval t; ++ t.tv_sec = a.tv_sec-b.tv_sec; ++ t.tv_usec = a.tv_usec - b.tv_usec; ++ if (t.tv_usec < 0) { ++ t.tv_sec--; ++ t.tv_usec += 1000000; ++ } ++ return t; ++} ++ + static void ReadInput (LocalDevicePtr local) + { + struct ts_priv *priv = (struct ts_priv *) (local->private); + struct ts_sample samp; + int ret; + int x,y; ++ struct timeval now; + + while((ret = ts_read(priv->ts, &samp, 1)) == 1) { ++ gettimeofday(&now, NULL); ++ struct timeval pressureTime = TimevalDiff(now,priv->button_down_start); ++ + if(samp.pressure) { + int tmp_x = samp.x; + +@@ -149,13 +174,85 @@ + + } + +- if(!!priv->lastp != !!samp.pressure) { +- priv->lastp = samp.pressure; +- +- xf86PostButtonEvent(local->dev, TRUE, +- 1, !!samp.pressure, 0, 2, +- priv->lastx, +- priv->lasty); ++ ++ /* button pressed state machine ++ * if pressed than press button 1, start timer and remember the tab position ++ * if pressed longer than TIME23RDBUTTON and it is not moved more than MOVEMENT23RDBUTTON release button 1 and click button 3 ++ * if still pressed do nothing until the pressure is released ++ */ ++ switch (priv->state) { ++ case BUTTON_EMULATION_OFF : ++ if(priv->lastp != samp.pressure) { ++ priv->lastp = samp.pressure; ++ ++ xf86PostButtonEvent(local->dev, TRUE, ++ 1, !!samp.pressure, 0, 2, ++ priv->lastx, ++ priv->lasty); ++ } ++ break; ++ case BUTTON_NOT_PRESSED : ++ if (samp.pressure) { ++ priv->button_down_start = now; ++ priv->button_down_y = samp.y; ++ priv->button_down_x = samp.x; ++ priv->state = BUTTON_1_PRESSED; ++ //ErrorF("b1 down"); ++ xf86PostButtonEvent(local->dev, TRUE, ++ priv->state, TRUE, 0, 2, ++ priv->lastx, ++ priv->lasty); ++ } ++ break; ++ case BUTTON_1_PRESSED : ++ if (samp.pressure) { ++ //ErrorF("%d %d ",pressureTime.tv_sec,pressureTime.tv_usec); ++ if ((((double)pressureTime.tv_sec)+(((double)pressureTime.tv_usec)*1e-6) > TIME23RDBUTTON) && ++ (abs(priv->lastx-priv->button_down_x) < MOVEMENT23RDBUTTON && ++ abs(priv->lasty-priv->button_down_y) < MOVEMENT23RDBUTTON)) ++ { ++ //ErrorF("b1 up"); ++ xf86PostButtonEvent(local->dev, TRUE, ++ priv->state, FALSE, 0, 2, ++ priv->lastx, ++ priv->lasty); ++ priv->state = BUTTON_3_CLICK; ++ //ErrorF("b3 down"); ++ xf86PostButtonEvent(local->dev, TRUE, ++ priv->state, TRUE, 0, 2, ++ priv->lastx, ++ priv->lasty); ++ } ++ if (abs(priv->lastx-priv->button_down_x) > MOVEMENT23RDBUTTON || ++ abs(priv->lasty-priv->button_down_y) > MOVEMENT23RDBUTTON) { ++ priv->button_down_start = now; ++ priv->button_down_y = samp.y; ++ priv->button_down_x = samp.x; ++ //ErrorF("b1 state reset"); ++ } ++ } else { ++ //ErrorF("b1 up"); ++ xf86PostButtonEvent(local->dev, TRUE, ++ priv->state, FALSE, 0, 2, ++ priv->lastx, ++ priv->lasty); ++ priv->state = BUTTON_NOT_PRESSED; ++ } ++ break; ++ case BUTTON_3_CLICK : ++ //ErrorF("b3 up"); ++ xf86PostButtonEvent(local->dev, TRUE, ++ priv->state, FALSE, 0, 2, ++ priv->lastx, ++ priv->lasty); ++ priv->state = BUTTON_3_CLICKED; ++ break; ++ case BUTTON_3_CLICKED : ++ if (!samp.pressure) { ++ //ErrorF("b3 free"); ++ priv->state = BUTTON_NOT_PRESSED; ++ } ++ break; + } + } + +@@ -358,6 +455,11 @@ + + pInfo->fd = ts_fd(priv->ts); + ++ priv->state = BUTTON_NOT_PRESSED; ++ if (xf86SetIntOption(pInfo->options, "EmulateRightButton", 0) == 0) { ++ priv->state = BUTTON_EMULATION_OFF; ++ } ++ + /* Mark the device configured */ + pInfo->flags |= XI86_CONFIGURED; + diff --git a/x11-drivers/xf86-input-tslib/files/50_emulate-right-button-manpage.diff b/x11-drivers/xf86-input-tslib/files/50_emulate-right-button-manpage.diff new file mode 100644 index 0000000..7e3fe74 --- /dev/null +++ b/x11-drivers/xf86-input-tslib/files/50_emulate-right-button-manpage.diff @@ -0,0 +1,13 @@ +1. Provided by Wen-Yen Chuang <caleb@calno.com> +2. Written for 40_emulate-right-button.diff + +--- xf86-input-tslib-0.0.5.orig/man/tslib.man ++++ xf86-input-tslib-0.0.5/man/tslib.man +@@ -30,6 +30,7 @@ + .BI " Option \*qHeight\*q \*q" "0" \*q + .BI " Option \*qRotate\*q \*q" "NONE" \*q + .BI " Option \*qTslibDevice\*q \*q" "/dev/event0" \*q ++.BI " Option \*qEmulateRightButton\*q \*q" "0" \*q + \ \ ... + .B EndSection + .SH "SEE ALSO" diff --git a/x11-drivers/xf86-input-tslib/files/60_detect_xinput-abi.diff b/x11-drivers/xf86-input-tslib/files/60_detect_xinput-abi.diff new file mode 100644 index 0000000..1072f45 --- /dev/null +++ b/x11-drivers/xf86-input-tslib/files/60_detect_xinput-abi.diff @@ -0,0 +1,16 @@ +1. Provided by Michael Frey <michael.frey@canonical.com> + (Ubuntu LP #322325) +2. Refreshed for latest changes + +--- xf86-input-tslib-0.0.5.orig/src/tslib.c ++++ xf86-input-tslib-0.0.5/src/tslib.c +@@ -296,7 +296,9 @@ + + if (InitValuatorClassDeviceStruct(device, + 2, ++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 3 + xf86GetMotionEvents, ++#endif + 0, Absolute) == FALSE) { + ErrorF("unable to allocate Valuator class device\n"); + return !Success; diff --git a/x11-drivers/xf86-input-tslib/xf86-input-tslib-0.0.5.ebuild b/x11-drivers/xf86-input-tslib/xf86-input-tslib-0.0.5.ebuild index 87acca7..b32e65d 100644 --- a/x11-drivers/xf86-input-tslib/xf86-input-tslib-0.0.5.ebuild +++ b/x11-drivers/xf86-input-tslib/xf86-input-tslib-0.0.5.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2009 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/x11-drivers/xf86-input-tslib/xf86-input-tslib-0.0.5.ebuild,v 1.2 2009/02/24 18:02:46 armin76 Exp $ +# $Header: $ # Based on xf86-input-synaptics ebuild @@ -12,9 +12,9 @@ SRC_URI="http://www.pengutronix.de/software/${PN}/download/${P}.tar.bz2" KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~sh ~sparc ~x86" LICENSE="GPL-2" IUSE="" -RDEPEND="x11-libs/tslib - x11-base/xorg-server" +RDEPEND="x11-libs/tslib" DEPEND="${RDEPEND} + x11-base/xorg-server x11-proto/inputproto" evdev-input_check() { @@ -47,6 +47,14 @@ pkg_setup() { src_unpack() { x-modular_unpack_source + + epatch "${FILESDIR}"/01_fix-wrong-value-range-for-the-axises.diff + epatch "${FILESDIR}"/10_use-hal-for-device.diff + epatch "${FILESDIR}"/20_dynamic-xy.diff + epatch "${FILESDIR}"/30_fix-button-release-events.diff + epatch "${FILESDIR}"/40_emulate-right-button.diff + epatch "${FILESDIR}"/50_emulate-right-button-manpage.diff + epatch "${FILESDIR}"/60_detect_xinput-abi.diff } src_install() { |