diff --git a/0001-Add-a-DPIScaleFactor-option-as-temporary-solution-to.patch b/0001-Add-a-DPIScaleFactor-option-as-temporary-solution-to.patch new file mode 100644 index 0000000..dddd9da --- /dev/null +++ b/0001-Add-a-DPIScaleFactor-option-as-temporary-solution-to.patch @@ -0,0 +1,98 @@ +From 41d20d35c1587f3de35acf47f926c97a30680978 Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Thu, 18 May 2017 14:45:18 +1000 +Subject: [PATCH xf86-input-libinput] Add a DPIScaleFactor option as temporary + solution to the hidpi issue + +https://bugzilla.redhat.com/show_bug.cgi?id=1413306 +--- + man/libinput.man | 21 +++++++++++++++++++++ + src/xf86libinput.c | 26 ++++++++++++++++++++++++++ + 2 files changed, 47 insertions(+) + +diff --git a/man/libinput.man b/man/libinput.man +index ec0f439..bdbdb37 100644 +--- a/man/libinput.man ++++ b/man/libinput.man +@@ -386,6 +386,27 @@ This driver does not work with \fBOption \*qDevice\*q\fR set to an event + node in \fI/dev/input/by-id\fR and \fI/dev/input/by-path\fR. This can be + usually be worked by using \fBSection \*qInputClass\*q\fR with an + appropriate \fBMatch*\fR statement in the __xconfigfile__(__filemansuffix__). ++.PP ++This driver does not know about the display pixel density and submits motion ++events assuming an approximate display density of 96dpi. On high-dpi ++screens this results in a slower physical motion of the cursor (a one-pixel ++movement is a smaller physical movement on the screen). This can make ++interaction with the desktop difficult. ++.PP ++.TP 7 ++.BI "Option \*qDPIScaleFactor\*q float ++This is a ++.B temporary ++solution. The factor should be set to the approximate ratio of the host display ++compared to the default 96dpi. For example, a display with 200dpi should set ++a factor of 2.0. ++.PP ++If set, x/y motion will be unconditionally multiplied by this factor, ++resulting in faster movement of the cursor. Note that this may make some ++pixels unadressable and should be used with caution. ++.PP ++.B This option is a temporary solution. ++It may be removed in any future update of this driver. + + .SH AUTHORS + Peter Hutterer +diff --git a/src/xf86libinput.c b/src/xf86libinput.c +index 83ab75d..c1a1ce2 100644 +--- a/src/xf86libinput.c ++++ b/src/xf86libinput.c +@@ -194,6 +194,8 @@ struct xf86libinput { + struct scale_factor { + double x, y; + } area_scale_factor; ++ ++ double dpi_scale_factor; /* Fedora hack */ + }; + + enum event_handling { +@@ -1463,6 +1465,11 @@ xf86libinput_handle_motion(InputInfoPtr pInfo, struct libinput_event_pointer *ev + x = libinput_event_pointer_get_dx(event); + y = libinput_event_pointer_get_dy(event); + ++ if (driver_data->dpi_scale_factor > 0.0) { ++ x *= driver_data->dpi_scale_factor; ++ y *= driver_data->dpi_scale_factor; ++ } ++ + valuator_mask_zero(mask); + + #if HAVE_VMASK_UNACCEL +@@ -3421,6 +3428,25 @@ xf86libinput_pre_init(InputDriverPtr drv, + + xf86libinput_parse_options(pInfo, driver_data, device); + ++ /* XXX: ++ Fedora hack for bug https://bugzilla.redhat.com/show_bug.cgi?id=1413306 ++ This is temporary only, but at least makes it work for now. ++ */ ++ ++ if (xf86CheckRealOption(pInfo->options, "DPIScaleFactor", 0.0) != 0.0) { ++ xf86IDrvMsg(pInfo, X_WARNING, ++ "\n" ++ "******************** WARNING ********************\n" ++ "* DPIScaleFactor option is a temporary solution *\n" ++ "* and may cease to work without warning! *\n" ++ "******************** WARNING ********************\n"); ++ driver_data->dpi_scale_factor = xf86SetRealOption(pInfo->options, "DPIScaleFactor", 0.0); ++ if (driver_data->dpi_scale_factor < 0.0) { ++ xf86IDrvMsg(pInfo, X_ERROR, "Invalid DPIScaleFactor, ignoring value\n"); ++ driver_data->dpi_scale_factor = 0.0; ++ } ++ } ++ + /* Device is both keyboard and pointer. Drop the keyboard cap from + * this device, create a separate device instead */ + if (!is_subdevice && +-- +2.14.3 + diff --git a/xf86-input-libinput-0.28.0.tar.bz2 b/xf86-input-libinput-0.28.0.tar.bz2 deleted file mode 100644 index e8fd146..0000000 Binary files a/xf86-input-libinput-0.28.0.tar.bz2 and /dev/null differ diff --git a/xf86-input-libinput-0.30.0.tar.bz2 b/xf86-input-libinput-0.30.0.tar.bz2 new file mode 100644 index 0000000..e7a5b73 Binary files /dev/null and b/xf86-input-libinput-0.30.0.tar.bz2 differ diff --git a/xorg-x11-drv-libinput.spec b/xorg-x11-drv-libinput.spec index a3cbc12..6e84d63 100644 --- a/xorg-x11-drv-libinput.spec +++ b/xorg-x11-drv-libinput.spec @@ -2,16 +2,20 @@ %global driverdir %{moduledir}/input Name: xorg-x11-drv-libinput -Version: 0.28.0 -Release: 5 +Version: 0.30.0 +Release: 1 Summary: Xorg X11 libinput input driver License: MIT URL: https://www.x.org Source0: https://www.x.org/archive/individual/driver/xf86-input-libinput-%{version}.tar.bz2 Source1: 71-libinput-overrides-wacom.conf -BuildRequires: autoconf automake libtool xorg-x11-server-devel xorg-x11-util-macros -BuildRequires: libudev-devel libevdev-devel libinput-devel +Patch0001: 0001-Add-a-DPIScaleFactor-option-as-temporary-solution-to.patch + +BuildRequires: autoconf automake libtool xorg-x11-util-macros +BuildRequires: libudev-devel libevdev-devel +BuildRequires: libinput-devel >= 0.6.0-3 +BuildRequires: xorg-x11-server-devel >= 1.14.0 Requires: Xorg %(xserver-sdk-abi-requires ansic) xkeyboard-config libinput >= 0.21.0 Requires: Xorg %(xserver-sdk-abi-requires xinput) @@ -37,7 +41,7 @@ Xorg X11 libinput input driver development files. %build autoreconf --force -v --install || exit 1 -%configure --disable-silent-rules +%configure --disable-static --disable-silent-rules %make_build %check @@ -68,6 +72,9 @@ cp %{SOURCE1} $RPM_BUILD_ROOT%{_datadir}/X11/xorg.conf.d/ %{_mandir}/man4/libinput.4* %changelog +* Mon Jul 20 2020 chengguipeng - 0.30.0-1 +- Upgrade to 0.30.0-1 + * Wed Feb 12 2020 openEuler Buildteam - 0.28.0-5 - Type:bugfix - ID:NA