Projects
home:Eustace:branches:Eulaceura:Factory
xorg-x11-drv-libinput
_service:obs_scm:0001-Add-a-DPIScaleFactor-opti...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:obs_scm:0001-Add-a-DPIScaleFactor-option-as-temporary-solution-to.patch of Package xorg-x11-drv-libinput
From be5220b31e77b1a3f723def32f69e6aee9f3c7e9 Mon Sep 17 00:00:00 2001 From: Peter Hutterer <peter.hutterer@who-t.net> 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 7c83ccb..76572f8 100644 --- a/man/libinput.man +++ b/man/libinput.man @@ -454,6 +454,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 xorg.conf(5). +.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 642f95f..cfee922 100644 --- a/src/xf86libinput.c +++ b/src/xf86libinput.c @@ -214,6 +214,8 @@ struct xf86libinput { struct scale_factor { double x, y; } area_scale_factor; + + double dpi_scale_factor; /* Fedora hack */ }; enum event_handling { @@ -1571,6 +1573,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); { @@ -3951,6 +3958,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.40.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2