mirror of
https://github.com/X11Libre/xf86-input-evdev.git
synced 2026-04-14 11:44:16 +00:00
Compare commits
20 Commits
xf86-input
...
xlibre-xf8
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0b5b97bc6b | ||
|
|
96a4dc7565 | ||
|
|
abcafeede7 | ||
|
|
d893fc74d2 | ||
|
|
b9327e6b28 | ||
|
|
917c2ea204 | ||
|
|
b48c2b7028 | ||
|
|
aac329fd2a | ||
|
|
fbfb16edfe | ||
|
|
409e8205e8 | ||
|
|
7fc0d51f70 | ||
|
|
7c48b6225b | ||
|
|
8edcb2b9e8 | ||
|
|
84b2740814 | ||
|
|
469a30f158 | ||
|
|
23909c35a4 | ||
|
|
abf0fa611e | ||
|
|
6609d352f3 | ||
|
|
71036116be | ||
|
|
b6b36166bd |
106
.gitlab-ci.yml
Normal file
106
.gitlab-ci.yml
Normal file
@@ -0,0 +1,106 @@
|
||||
# vim: set expandtab shiftwidth=2 tabstop=8 textwidth=0 filetype=yaml:
|
||||
#
|
||||
# This CI uses the freedesktop.org ci-templates.
|
||||
# Please see the ci-templates documentation for details:
|
||||
# https://freedesktop.pages.freedesktop.org/ci-templates/
|
||||
|
||||
.templates_sha: &template_sha 25e8e9f020880aa35fffe3d6b259b933f0f9449f # see https://docs.gitlab.com/ee/ci/yaml/#includefile
|
||||
|
||||
|
||||
include:
|
||||
# Arch container builder template
|
||||
- project: 'freedesktop/ci-templates'
|
||||
ref: *template_sha
|
||||
file: '/templates/arch.yml'
|
||||
- project: 'freedesktop/ci-templates'
|
||||
ref: *template_sha
|
||||
file: '/templates/ci-fairy.yml'
|
||||
- template: Security/SAST.gitlab-ci.yml
|
||||
|
||||
|
||||
workflow:
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
||||
- if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
|
||||
when: never
|
||||
- if: $CI_COMMIT_BRANCH
|
||||
|
||||
|
||||
stages:
|
||||
- prep # prep work like rebuilding the container images if there is a change
|
||||
- build # for actually building and testing things in a container
|
||||
- test
|
||||
- deploy
|
||||
|
||||
|
||||
variables:
|
||||
FDO_UPSTREAM_REPO: 'xorg/driver/xf86-input-evdev'
|
||||
# The tag should be updated each time the list of packages is updated.
|
||||
# Changing a tag forces the associated image to be rebuilt.
|
||||
# Note: the tag has no meaning, we use a date format purely for readability
|
||||
FDO_DISTRIBUTION_TAG: '2023-10-01.0'
|
||||
FDO_DISTRIBUTION_PACKAGES: 'git gcc pkgconf autoconf automake libtool make xorg-util-macros xorgproto xorg-server-devel pixman systemd-libs libevdev mtdev'
|
||||
|
||||
|
||||
#
|
||||
# Verify that commit messages are as expected
|
||||
#
|
||||
check-commits:
|
||||
extends:
|
||||
- .fdo.ci-fairy
|
||||
stage: prep
|
||||
script:
|
||||
- ci-fairy check-commits --junit-xml=results.xml
|
||||
except:
|
||||
- master@xorg/driver/xf86-input-evdev
|
||||
variables:
|
||||
GIT_DEPTH: 100
|
||||
artifacts:
|
||||
reports:
|
||||
junit: results.xml
|
||||
|
||||
#
|
||||
# Verify that the merge request has the allow-collaboration checkbox ticked
|
||||
#
|
||||
check-merge-request:
|
||||
extends:
|
||||
- .fdo.ci-fairy
|
||||
stage: deploy
|
||||
script:
|
||||
- ci-fairy check-merge-request --require-allow-collaboration --junit-xml=results.xml
|
||||
artifacts:
|
||||
when: on_failure
|
||||
reports:
|
||||
junit: results.xml
|
||||
allow_failure: true
|
||||
|
||||
|
||||
#
|
||||
# Build a container with the given tag and the packages pre-installed.
|
||||
# This only happens if the tag changes, otherwise the existing image is
|
||||
# re-used.
|
||||
#
|
||||
container-prep:
|
||||
extends:
|
||||
- .fdo.container-build@arch
|
||||
stage: prep
|
||||
variables:
|
||||
GIT_STRATEGY: none
|
||||
|
||||
|
||||
#
|
||||
# The default build, runs on the image built above.
|
||||
#
|
||||
build:
|
||||
stage: build
|
||||
extends:
|
||||
- .fdo.distribution-image@arch
|
||||
script:
|
||||
- autoreconf -ivf
|
||||
- mkdir _builddir
|
||||
- pushd _builddir > /dev/null
|
||||
- ../configure --disable-silent-rules
|
||||
- make
|
||||
- make check
|
||||
- make distcheck
|
||||
- popd > /dev/null
|
||||
@@ -39,3 +39,5 @@ ChangeLog:
|
||||
$(CHANGELOG_CMD)
|
||||
|
||||
dist-hook: ChangeLog INSTALL
|
||||
|
||||
EXTRA_DIST = README.md
|
||||
|
||||
20
README
20
README
@@ -1,20 +0,0 @@
|
||||
xf86-input-evdev - Generic Linux input driver for the Xorg X server
|
||||
|
||||
Please submit bugs & patches to the Xorg bugzilla:
|
||||
|
||||
https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
|
||||
|
||||
All questions regarding this software should be directed at the
|
||||
Xorg mailing list:
|
||||
|
||||
http://lists.freedesktop.org/mailman/listinfo/xorg
|
||||
|
||||
The master development code repository can be found at:
|
||||
|
||||
git://anongit.freedesktop.org/git/xorg/driver/xf86-input-evdev
|
||||
|
||||
http://cgit.freedesktop.org/xorg/driver/xf86-input-evdev
|
||||
|
||||
For more information on the git code manager, see:
|
||||
|
||||
http://wiki.x.org/wiki/GitPage
|
||||
18
README.md
Normal file
18
README.md
Normal file
@@ -0,0 +1,18 @@
|
||||
xf86-input-evdev - Generic Linux input driver for the Xorg X server
|
||||
-------------------------------------------------------------------
|
||||
|
||||
All questions regarding this software should be directed at the
|
||||
Xorg mailing list:
|
||||
|
||||
https://lists.x.org/mailman/listinfo/xorg
|
||||
|
||||
The primary development code repository can be found at:
|
||||
|
||||
https://gitlab.freedesktop.org/xorg/driver/xf86-input-evdev
|
||||
|
||||
Please submit bug reports and requests to merge patches there.
|
||||
|
||||
For patch submission instructions, see:
|
||||
|
||||
https://www.x.org/wiki/Development/Documentation/SubmittingPatches
|
||||
|
||||
10
configure.ac
10
configure.ac
@@ -23,15 +23,15 @@
|
||||
# Initialize Autoconf
|
||||
AC_PREREQ([2.60])
|
||||
AC_INIT([xf86-input-evdev],
|
||||
[2.10.6],
|
||||
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
|
||||
[2.11.0],
|
||||
[https://gitlab.freedesktop.org/xorg/driver/xf86-input-evdev/issues],
|
||||
[xf86-input-evdev])
|
||||
AC_CONFIG_SRCDIR([Makefile.am])
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
AC_CONFIG_AUX_DIR(.)
|
||||
|
||||
# Initialize Automake
|
||||
AM_INIT_AUTOMAKE([foreign dist-bzip2])
|
||||
AM_INIT_AUTOMAKE([foreign dist-xz])
|
||||
|
||||
# Initialize libtool
|
||||
AC_DISABLE_STATIC
|
||||
@@ -44,8 +44,8 @@ XORG_MACROS_VERSION(1.8)
|
||||
XORG_DEFAULT_OPTIONS
|
||||
|
||||
# Obtain compiler/linker options from server and required extensions
|
||||
PKG_CHECK_MODULES(XORG, [xorg-server >= 1.12] xproto [inputproto >= 2.1.99.3])
|
||||
PKG_CHECK_MODULES(UDEV, libudev)
|
||||
PKG_CHECK_MODULES(XORG, [xorg-server >= 1.18] xproto [inputproto >= 2.1.99.3])
|
||||
PKG_CHECK_MODULES(UDEV, libudev, [AC_DEFINE(HAVE_LIBUDEV, 1,[libudev support])])
|
||||
|
||||
PKG_CHECK_MODULES(LIBEVDEV, [libevdev >= 0.4])
|
||||
PKG_CHECK_MODULES(MTDEV, mtdev)
|
||||
|
||||
322
man/evdev.man
322
man/evdev.man
@@ -1,8 +1,8 @@
|
||||
.\" shorthand for double quote that works everywhere.
|
||||
.ds q \N'34'
|
||||
.TH EVDEV __drivermansuffix__ __vendorversion__
|
||||
.TH EVDEV __drivermansuffix__ 2016-11-17 __vendorversion__
|
||||
.SH NAME
|
||||
evdev \- Generic Linux input driver
|
||||
evdev \- Generic Linux input driver for Xorg
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
.B "Section \*qInputDevice\*q"
|
||||
@@ -16,103 +16,118 @@ evdev \- Generic Linux input driver
|
||||
.B EndSection
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
.B evdev
|
||||
is an __xservername__ input driver for Linux\'s generic event devices. It
|
||||
therefore supports all input devices that the kernel knows about, including
|
||||
most mice, keyboards, tablets and touchscreens.
|
||||
.B evdev
|
||||
is an Xorg input driver for Linux\'s generic event devices.
|
||||
It therefore supports all input devices that the kernel knows about,
|
||||
including most mice, keyboards, tablets, and touchscreens.
|
||||
.B evdev
|
||||
is the default driver on the major Linux distributions.
|
||||
.PP
|
||||
The
|
||||
The
|
||||
.B evdev
|
||||
driver can serve as both a pointer and a keyboard input device. Multiple
|
||||
input devices are supported by multiple instances of this driver, with one
|
||||
InputDevice section of your __xconfigfile__ for each input device that will
|
||||
use this driver.
|
||||
driver can serve as both a pointer and a keyboard input device.
|
||||
Multiple input devices are supported by multiple instances of this driver,
|
||||
with one InputDevice section of your xorg.conf for each input device
|
||||
that will use this driver.
|
||||
.PP
|
||||
It is recommended that
|
||||
.B evdev
|
||||
devices are configured through the
|
||||
.B InputClass
|
||||
directive (refer to __xconfigfile__(__filemansuffix__)) instead of manual
|
||||
per-device configuration. Devices configured in the
|
||||
__xconfigfile__(__filemansuffix__) are not hot-plug capable.
|
||||
.PP
|
||||
directive (refer to
|
||||
.BR xorg.conf (__filemansuffix__))
|
||||
instead of manual per-device configuration.
|
||||
Devices configured in the
|
||||
.BR xorg.conf (__filemansuffix__)
|
||||
are not hot-plug capable.
|
||||
.SH SUPPORTED HARDWARE
|
||||
In general, any input device that the kernel has a driver for can be accessed
|
||||
through the
|
||||
through the
|
||||
.B evdev
|
||||
driver. See the Linux kernel documentation for a complete list.
|
||||
.PP
|
||||
driver.
|
||||
See the Linux kernel documentation for a complete list.
|
||||
.SH CONFIGURATION DETAILS
|
||||
Please refer to __xconfigfile__(__filemansuffix__) for general configuration
|
||||
details and for options that can be used with all input drivers. This
|
||||
section only covers configuration details specific to this driver.
|
||||
Please refer to
|
||||
.BR xorg.conf (__filemansuffix__)
|
||||
for general configuration details and
|
||||
for options that can be used with all input drivers.
|
||||
This section only covers configuration details specific to this driver.
|
||||
.PP
|
||||
The following driver
|
||||
The following driver
|
||||
.B Options
|
||||
are supported:
|
||||
.TP 7
|
||||
.BI "Option \*qButtonMapping\*q \*q" string \*q
|
||||
Sets the button mapping for this device. The mapping is a space-separated list
|
||||
of button mappings that correspond in order to the physical buttons on the
|
||||
device (i.e. the first number is the mapping for button 1, etc.). The default
|
||||
mapping is "1 2 3 ... 32". A mapping of 0 deactivates the button. Multiple
|
||||
buttons can have the same mapping.
|
||||
Sets the button mapping for this device.
|
||||
The mapping is a space-separated list of button mappings
|
||||
that correspond in order to the physical buttons on the device
|
||||
(i.e. the first number is the mapping for button 1, etc.).
|
||||
The default mapping is "1 2 3 ... 32".
|
||||
A mapping of 0 deactivates the button.
|
||||
Multiple buttons can have the same mapping.
|
||||
For example, a left-handed mouse with deactivated scroll-wheel would use a
|
||||
mapping of "3 2 1 0 0". Invalid mappings are ignored and the default mapping
|
||||
is used. Buttons not specified in the user's mapping use the default mapping.
|
||||
mapping of "3 2 1 0 0".
|
||||
Invalid mappings are ignored and the default mapping is used.
|
||||
Buttons not specified in the user's mapping use the default mapping.
|
||||
.TP 7
|
||||
.BI "Option \*qDevice\*q \*q" string \*q
|
||||
Specifies the device through which the device can be accessed. This will
|
||||
generally be of the form \*q/dev/input/eventX\*q, where X is some integer.
|
||||
The mapping from device node to hardware is system-dependent. Property:
|
||||
"Device Node" (read-only).
|
||||
Specifies the device through which the device can be accessed.
|
||||
This will generally be of the form \*q/dev/input/eventX\*q,
|
||||
where X is some integer.
|
||||
The mapping from device node to hardware is system-dependent.
|
||||
Property: "Device Node" (read-only).
|
||||
.TP 7
|
||||
.BI "Option \*qDragLockButtons\*q \*q" "L1 B2 L3 B4" \*q
|
||||
Sets \*qdrag lock buttons\*q that simulate holding a button down, so
|
||||
that low dexterity people do not have to hold a button down at the
|
||||
same time they move a mouse cursor. Button numbers occur in pairs,
|
||||
with the lock button number occurring first, followed by the button
|
||||
number that is the target of the lock button. Property: "Evdev
|
||||
same time they move a mouse cursor.
|
||||
Button numbers occur in pairs,
|
||||
with the lock button number occurring first,
|
||||
followed by the button number that is the target of the lock button.
|
||||
Property: "Evdev
|
||||
Drag Lock Buttons".
|
||||
.TP 7
|
||||
.BI "Option \*qDragLockButtons\*q \*q" "M1" \*q
|
||||
Sets a \*qmaster drag lock button\*q that acts as a \*qMeta Key\*q
|
||||
indicating that the next button pressed is to be
|
||||
\*qdrag locked\*q. Property: "Evdev Drag Lock Buttons".
|
||||
.TP 7
|
||||
indicating that the next button pressed is to be \*qdrag locked\*q.
|
||||
Property: "Evdev Drag Lock Buttons".
|
||||
.TP 7
|
||||
.BI "Option \*qEmulate3Buttons\*q \*q" boolean \*q
|
||||
Enable/disable the emulation of the third (middle) mouse button for mice
|
||||
which only have two physical buttons. The third button is emulated by
|
||||
pressing both buttons simultaneously. Default: off. Property: "Evdev Middle
|
||||
Button Emulation".
|
||||
which only have two physical buttons.
|
||||
The third button is emulated by pressing both buttons simultaneously.
|
||||
Default: off.
|
||||
Property: "Evdev Middle Button Emulation".
|
||||
.TP 7
|
||||
.BI "Option \*qEmulate3Timeout\*q \*q" integer \*q
|
||||
Sets the timeout (in milliseconds) that the driver waits before deciding
|
||||
if two buttons where pressed "simultaneously" when 3 button emulation is
|
||||
enabled. Default: 50. Property: "Evdev Middle Button Timeout".
|
||||
if two buttons were pressed "simultaneously" when 3 button emulation is enabled.
|
||||
Default: 50.
|
||||
Property: "Evdev Middle Button Timeout".
|
||||
.TP 7
|
||||
.BI "Option \*qEmulate3Button\*q \*q" integer \*q
|
||||
Specifies the physical button number to be emitted if middle button emulation
|
||||
is triggered.
|
||||
Default: 2. Property: "Evdev Middle Button Button".
|
||||
Default: 2.
|
||||
Property: "Evdev Middle Button Button".
|
||||
.TP 7
|
||||
.BI "Option \*qEmulateWheel\*q \*q" boolean \*q
|
||||
Enable/disable "wheel" emulation. Wheel emulation means emulating button
|
||||
press/release events when the mouse is moved while a specific real button
|
||||
is pressed. Wheel button events (typically buttons 4 and 5) are
|
||||
usually used for scrolling. Wheel emulation is useful for getting wheel-like
|
||||
behaviour with trackballs. It can also be useful for mice with 4 or
|
||||
more buttons but no wheel. See the description of the
|
||||
Enable/disable "wheel" emulation.
|
||||
Wheel emulation means emulating button press/release events
|
||||
when the mouse is moved while a specific real button is pressed.
|
||||
Wheel button events (typically buttons 4 and 5) are usually used for scrolling.
|
||||
Wheel emulation is useful for getting wheel-like behaviour with trackballs.
|
||||
It can also be useful for mice with 4 or more buttons but no wheel.
|
||||
See the description of the
|
||||
.BR EmulateWheelButton ,
|
||||
.BR EmulateWheelInertia ,
|
||||
.BR EmulateWheelTimeout ,
|
||||
.BR XAxisMapping ,
|
||||
and
|
||||
.B YAxisMapping
|
||||
options. Default: off. Property "Evdev Wheel Emulation".
|
||||
options.
|
||||
Default: off.
|
||||
Property: "Evdev Wheel Emulation".
|
||||
.TP 7
|
||||
.BI "Option \*qEmulateWheelButton\*q \*q" integer \*q
|
||||
Specifies which button must be held down to enable wheel emulation mode.
|
||||
@@ -121,97 +136,119 @@ press/release events as specified for the
|
||||
.B XAxisMapping
|
||||
and
|
||||
.B YAxisMapping
|
||||
settings. If the button is 0 and
|
||||
.BR EmulateWheel
|
||||
is on, any motion of the device is converted into wheel events. Default: 4.
|
||||
settings.
|
||||
If the button is 0 and
|
||||
.B EmulateWheel
|
||||
is on, any motion of the device is converted into wheel events.
|
||||
Default: 4.
|
||||
Property: "Evdev Wheel Emulation Button".
|
||||
.TP 7
|
||||
.BI "Option \*qEmulateWheelInertia\*q \*q" integer \*q
|
||||
Specifies how far (in pixels) the pointer must move to generate button
|
||||
press/release events in wheel emulation mode. Default: 10. Property: "Evdev
|
||||
Wheel Emulation Inertia".
|
||||
press/release events in wheel emulation mode.
|
||||
Default: 10.
|
||||
Property: "Evdev Wheel Emulation Inertia".
|
||||
.IP
|
||||
This value must be set for any device does not resemble a standard mouse.
|
||||
Specifically, on absolute devices such as tablets the value should be set to
|
||||
a reasonable fraction of the expected movement to avoid excess scroll events.
|
||||
.IP
|
||||
.B WARNING:
|
||||
the name \*qinertia\*q is a misnomer. This option defines the distance
|
||||
required to generate one scroll event similar to the
|
||||
the name \*qinertia\*q is a misnomer.
|
||||
This option defines the distance required to generate one scroll event
|
||||
similar to the
|
||||
.B VertScrollDelta
|
||||
and
|
||||
.B HorizScrollDelta
|
||||
options. It does not enable inertia in the
|
||||
physical sense, scrolling stops immediately once the movement has stopped.
|
||||
options.
|
||||
It does not enable inertia in the physical sense,
|
||||
scrolling stops immediately once the movement has stopped.
|
||||
.TP 7
|
||||
.BI "Option \*qEmulateWheelTimeout\*q \*q" integer \*q
|
||||
Specifies the time in milliseconds the
|
||||
.BR EmulateWheelButton
|
||||
must be pressed before wheel emulation is started. If the
|
||||
.BR EmulateWheelButton
|
||||
is released before this timeout, the original button press/release event
|
||||
is sent. Default: 200. Property: "Evdev Wheel Emulation Timeout".
|
||||
.B EmulateWheelButton
|
||||
must be pressed before wheel emulation is started.
|
||||
If the
|
||||
.B EmulateWheelButton
|
||||
is released before this timeout,
|
||||
the original button press/release event is sent.
|
||||
Default: 200.
|
||||
Property: "Evdev Wheel Emulation Timeout".
|
||||
.TP 7
|
||||
.BI "Option \*qEmulateThirdButton\*q \*q" boolean \*q
|
||||
Enable third button emulation. Third button emulation emits a right button
|
||||
event (by default) by pressing and holding the first button. The first
|
||||
button must be held down for the configured timeout and must not move more
|
||||
than the configured threshold for the emulation to activate. Otherwise, the
|
||||
first button event is posted as normal. Default: off. Property: "Evdev
|
||||
Third Button Emulation".
|
||||
Enable third button emulation.
|
||||
Third button emulation emits a right button event (by default)
|
||||
by pressing and holding the first button.
|
||||
The first button must be held down for the configured timeout and
|
||||
must not move more than the configured threshold for the emulation to activate.
|
||||
Otherwise, the first button event is posted as normal.
|
||||
Default: off.
|
||||
Property: "Evdev Third Button Emulation".
|
||||
.TP 7
|
||||
.BI "Option \*qEmulateThirdButtonTimeout\*q \*q" integer \*q
|
||||
Specifies the timeout in milliseconds between the initial button press and
|
||||
the generation of the emulated button event.
|
||||
Default: 1000. Property: "Evdev Third Button Emulation Timeout".
|
||||
Default: 1000.
|
||||
Property: "Evdev Third Button Emulation Timeout".
|
||||
.TP 7
|
||||
.BI "Option \*qEmulateThirdButtonButton\*q \*q" integer \*q
|
||||
Specifies the physical button number to be emitted if third button emulation
|
||||
is triggered.
|
||||
Default: 3. Property: "Evdev Third Button Button".
|
||||
Default: 3.
|
||||
Property: "Evdev Third Button Button".
|
||||
.TP 7
|
||||
.BI "Option \*qEmulateThirdButtonMoveThreshold\*q \*q" integer \*q
|
||||
Specifies the maximum move fuzz in device coordinates for third button
|
||||
emulation. If the device moves by more than this threshold before the third
|
||||
emulation.
|
||||
If the device moves by more than this threshold before the third
|
||||
button emulation is triggered, the emulation is cancelled and a first button
|
||||
event is generated as normal.
|
||||
Default: 20. Property: "Evdev Third Button Emulation Threshold".
|
||||
Default: 20.
|
||||
Property: "Evdev Third Button Emulation Threshold".
|
||||
.TP 7
|
||||
.BI "Option \*qGrabDevice\*q \*q" boolean \*q
|
||||
Force a grab on the event device. Doing so will ensure that no other driver
|
||||
Force a grab on the event device.
|
||||
Doing so will ensure that no other driver
|
||||
can initialise the same device and it will also stop the device from sending
|
||||
events to /dev/kbd or /dev/input/mice. Events from this device will not be
|
||||
sent to virtual devices (e.g. rfkill or the Macintosh mouse button emulation).
|
||||
events to /dev/kbd or /dev/input/mice.
|
||||
Events from this device will not be sent to virtual devices
|
||||
(e.g. rfkill or the Macintosh mouse button emulation).
|
||||
Default: disabled.
|
||||
.TP 7
|
||||
.BI "Option \*qInvertX\*q \*q" Bool \*q
|
||||
.TP 7
|
||||
.BI "Option \*qInvertY\*q \*q" Bool \*q
|
||||
Invert the given axis. Default: off. Property: "Evdev Axis Inversion".
|
||||
Invert the given axis.
|
||||
Default: off.
|
||||
Property: "Evdev Axis Inversion".
|
||||
.TP 7
|
||||
.BI "Option \*qIgnoreRelativeAxes\*q \*q" Bool \*q
|
||||
.TP 7
|
||||
.BI "Option \*qIgnoreAbsoluteAxes\*q \*q" Bool \*q
|
||||
Ignore the specified type of axis. Default: unset. The X server cannot deal
|
||||
with devices that have both relative and absolute axes. Evdev tries to guess
|
||||
wich axes to ignore given the device type and disables absolute axes for
|
||||
mice and relative axes for tablets, touchscreens and touchpad. These options
|
||||
allow to forcibly disable an axis type. Mouse wheel axes are exempt and will
|
||||
work even if relative axes are ignored. No property, this configuration must
|
||||
be set in the configuration.
|
||||
Ignore the specified type of axis.
|
||||
Default: unset.
|
||||
The X server cannot deal with devices that have both relative and absolute axes.
|
||||
Evdev tries to guess which axes to ignore given the device type and
|
||||
disables absolute axes for mice and relative axes for tablets, touchscreens,
|
||||
and touchpad.
|
||||
These options allow to forcibly disable an axis type.
|
||||
Mouse wheel axes are exempt and will work even if relative axes are ignored.
|
||||
No property, this configuration must be set in the configuration.
|
||||
.br
|
||||
If either option is set to False, the driver will not ignore the specified
|
||||
axes regardless of the presence of other axes. This may trigger buggy
|
||||
behavior and events from this axis are always forwarded. Users are
|
||||
discouraged from setting this option.
|
||||
axes regardless of the presence of other axes.
|
||||
This may trigger buggy behavior and events from this axis are always forwarded.
|
||||
Users are discouraged from setting this option.
|
||||
.TP 7
|
||||
.BI "Option \*qCalibration\*q \*q" "min-x max-x min-y max-y" \*q
|
||||
Calibrates the X and Y axes for devices that need to scale to a different
|
||||
coordinate system than reported to the X server. This feature is required
|
||||
for devices that need to scale to a different coordinate system than
|
||||
originally reported by the kernel (e.g. touchscreens). The scaling to the
|
||||
custom coordinate system is done in-driver and the X server is unaware of
|
||||
the transformation. Property: "Evdev Axis Calibration".
|
||||
coordinate system than reported to the X server.
|
||||
This feature is required for devices that need to scale to
|
||||
a different coordinate system than originally reported by the kernel
|
||||
(e.g. touchscreens).
|
||||
The scaling to the custom coordinate system is done in-driver and
|
||||
the X server is unaware of the transformation.
|
||||
Property: "Evdev Axis Calibration".
|
||||
.TP 7
|
||||
.B Option \*qMode\*q \*qRelative\*q\fP|\fP\*qAbsolute\*q
|
||||
Sets the mode of the device if device has absolute axes.
|
||||
@@ -219,97 +256,114 @@ The default value for touchpads is relative, for other absolute.
|
||||
This option has no effect on devices without absolute axes.
|
||||
.TP 7
|
||||
.BI "Option \*qSwapAxes\*q \*q" Bool \*q
|
||||
Swap x/y axes. Default: off. Property: "Evdev Axes Swap".
|
||||
Swap x/y axes.
|
||||
Default: off.
|
||||
Property: "Evdev Axes Swap".
|
||||
.TP 7
|
||||
.BI "Option \*qXAxisMapping\*q \*q" "N1 N2" \*q
|
||||
Specifies which buttons are mapped to motion in the X direction in wheel
|
||||
emulation mode. Button number
|
||||
emulation mode.
|
||||
Button number
|
||||
.I N1
|
||||
is mapped to the negative X axis motion and button number
|
||||
.I N2
|
||||
is mapped to the positive X axis motion. Default: no mapping. Property:
|
||||
"Evdev Wheel Emulation Axes".
|
||||
is mapped to the positive X axis motion.
|
||||
Default: no mapping.
|
||||
Property: "Evdev Wheel Emulation Axes".
|
||||
.TP 7
|
||||
.BI "Option \*qYAxisMapping\*q \*q" "N1 N2" \*q
|
||||
Specifies which buttons are mapped to motion in the Y direction in wheel
|
||||
emulation mode. Button number
|
||||
emulation mode.
|
||||
Button number
|
||||
.I N1
|
||||
is mapped to the negative Y axis motion and button number
|
||||
.I N2
|
||||
is mapped to the positive Y axis motion. Default: "4 5". Property:
|
||||
"Evdev Wheel Emulation Axes".
|
||||
is mapped to the positive Y axis motion.
|
||||
Default: "4 5".
|
||||
Property: "Evdev Wheel Emulation Axes".
|
||||
.TP 7
|
||||
.BI "Option \*qTypeName\*q \*q"type"\*q
|
||||
Specify the X Input 1.x type (see XListInputDevices(__libmansuffix__)).
|
||||
.BI "Option \*qTypeName\*q" \*q"type"\*q
|
||||
Specify the X Input 1.x type (see
|
||||
.BR XListInputDevices (__libmansuffix__)).
|
||||
There is rarely a need to use this option, evdev will guess the device type
|
||||
based on the device's capabilities. This option is provided for devices that
|
||||
need quirks.
|
||||
based on the device's capabilities.
|
||||
This option is provided for devices that need quirks.
|
||||
.TP 7
|
||||
.BI "Option \*qVertScrollDelta\*q \*q" integer \*q
|
||||
The amount of motion considered one unit of scrolling vertically.
|
||||
Default: "1". Property: "Evdev Scrolling Distance".
|
||||
Default: "1".
|
||||
Property: "Evdev Scrolling Distance".
|
||||
.TP 7
|
||||
.BI "Option \*qHorizScrollDelta\*q \*q" integer \*q
|
||||
The amount of motion considered one unit of scrolling horizontally.
|
||||
Default: "1". Property: "Evdev Scrolling Distance".
|
||||
Default: "1".
|
||||
Property: "Evdev Scrolling Distance".
|
||||
.TP 7
|
||||
.BI "Option \*qDialDelta\*q \*q" integer \*q
|
||||
The amount of motion considered one unit of turning the dial. Default: "1".
|
||||
The amount of motion considered one unit of turning the dial.
|
||||
Default: "1".
|
||||
Property: "Evdev Scrolling Distance".
|
||||
.TP 7
|
||||
.BI "Option \*qResolution\*q \*q" integer \*q
|
||||
Sets the resolution of the device in dots per inch. The resolution is used
|
||||
to scale relative motion events from mouse devices to 1000 DPI resolution. This
|
||||
can be used to make high resolution mice less sensitive without turning off
|
||||
acceleration. If set to 0 no scaling will be performed. Default: "0".
|
||||
|
||||
Sets the resolution of the device in dots per inch.
|
||||
The resolution is used to scale relative motion events from mouse devices to
|
||||
1000 DPI resolution.
|
||||
This can be used to make high resolution mice less sensitive without turning off
|
||||
acceleration.
|
||||
If set to 0 no scaling will be performed.
|
||||
Default: "0".
|
||||
.SH SUPPORTED PROPERTIES
|
||||
The following properties are provided by the
|
||||
.B evdev
|
||||
driver.
|
||||
.TP 7
|
||||
.BI "Evdev Axis Calibration"
|
||||
.B "Evdev Axis Calibration"
|
||||
4 32-bit values, order min-x, max-x, min-y, max-y or 0 values to disable
|
||||
in-driver axis calibration.
|
||||
.TP 7
|
||||
.BI "Evdev Axis Inversion"
|
||||
2 boolean values (8 bit, 0 or 1), order X, Y. 1 inverts the axis.
|
||||
.B "Evdev Axis Inversion"
|
||||
2 boolean values (8 bit, 0 or 1), order X, Y.
|
||||
1 inverts the axis.
|
||||
.TP 7
|
||||
.BI "Evdev Axes Swap"
|
||||
1 boolean value (8 bit, 0 or 1). 1 swaps x/y axes.
|
||||
.B "Evdev Axes Swap"
|
||||
1 boolean value (8 bit, 0 or 1).
|
||||
1 swaps x/y axes.
|
||||
.TP 7
|
||||
.BI "Evdev Drag Lock Buttons"
|
||||
8-bit. Either 1 value or pairs of values. Value range 0-32, 0 disables a
|
||||
value.
|
||||
.B "Evdev Drag Lock Buttons"
|
||||
8-bit. Either 1 value or pairs of values.
|
||||
Value range 0-32, 0 disables a value.
|
||||
.TP 7
|
||||
.BI "Evdev Middle Button Emulation"
|
||||
.B "Evdev Middle Button Emulation"
|
||||
1 boolean value (8 bit, 0 or 1).
|
||||
.TP 7
|
||||
.BI "Evdev Middle Button Timeout"
|
||||
.B "Evdev Middle Button Timeout"
|
||||
1 16-bit positive value.
|
||||
.TP 7
|
||||
.BI "Evdev Middle Button Button"
|
||||
.B "Evdev Middle Button Button"
|
||||
1 8-bit value, allowed range 0-32, 0 disables the button.
|
||||
.TP 7
|
||||
.BI "Evdev Wheel Emulation"
|
||||
.B "Evdev Wheel Emulation"
|
||||
1 boolean value (8 bit, 0 or 1).
|
||||
.TP 7
|
||||
.BI "Evdev Wheel Emulation Axes"
|
||||
4 8-bit values, order X up, X down, Y up, Y down. 0 disables a value.
|
||||
.B "Evdev Wheel Emulation Axes"
|
||||
4 8-bit values, order X up, X down, Y up, Y down.
|
||||
0 disables a value.
|
||||
.TP 7
|
||||
.BI "Evdev Wheel Emulation Button"
|
||||
.B "Evdev Wheel Emulation Button"
|
||||
1 8-bit value, allowed range 0-32, 0 disables the button.
|
||||
.TP 7
|
||||
.BI "Evdev Wheel Emulation Inertia"
|
||||
.B "Evdev Wheel Emulation Inertia"
|
||||
1 16-bit positive value.
|
||||
.TP 7
|
||||
.BI "Evdev Wheel Emulation Timeout"
|
||||
.B "Evdev Wheel Emulation Timeout"
|
||||
1 16-bit positive value.
|
||||
.TP 7
|
||||
.BI "Evdev Scrolling Distance"
|
||||
.B "Evdev Scrolling Distance"
|
||||
3 32-bit values: vertical, horizontal and dial.
|
||||
|
||||
.SH AUTHORS
|
||||
Kristian Høgsberg, Peter Hutterer
|
||||
.SH "SEE ALSO"
|
||||
__xservername__(__appmansuffix__), __xconfigfile__(__filemansuffix__), Xserver(__appmansuffix__), X(__miscmansuffix__)
|
||||
.BR Xorg (__appmansuffix__),
|
||||
.BR xorg.conf (__filemansuffix__),
|
||||
.BR Xserver (__appmansuffix__),
|
||||
.BR X (__miscmansuffix__)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
* Copyright 1994-2002 by The XFree86 Project, Inc.
|
||||
* Copyright 2002 by Paul Elliott
|
||||
* (Ported from xf86-input-mouse, above copyrights taken from there)
|
||||
* Copyright © 2008 University of South Australia
|
||||
* Copyright © 2008 University of South Australia
|
||||
* Copyright 2008 by Chris Salch
|
||||
* Copyright 2008 Red Hat, Inc.
|
||||
*
|
||||
|
||||
@@ -50,7 +50,7 @@ static Atom prop_wheel_inertia = 0;
|
||||
static Atom prop_wheel_timeout = 0;
|
||||
static Atom prop_wheel_button = 0;
|
||||
|
||||
/* Local Funciton Prototypes */
|
||||
/* Local Function Prototypes */
|
||||
static int EvdevWheelEmuInertia(InputInfoPtr pInfo, WheelAxisPtr axis, int value);
|
||||
|
||||
/* Filter mouse button events */
|
||||
|
||||
37
src/evdev.c
37
src/evdev.c
@@ -38,9 +38,10 @@
|
||||
#include <X11/keysym.h>
|
||||
#include <X11/extensions/XI.h>
|
||||
|
||||
#include <linux/version.h>
|
||||
#include <sys/stat.h>
|
||||
#ifdef HAVE_LIBUDEV
|
||||
#include <libudev.h>
|
||||
#endif
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
@@ -74,8 +75,8 @@
|
||||
#define CAPSFLAG 1
|
||||
#define NUMFLAG 2
|
||||
#define SCROLLFLAG 4
|
||||
#define MODEFLAG 8
|
||||
#define COMPOSEFLAG 16
|
||||
#define COMPOSEFLAG 8
|
||||
#define MODEFLAG 16
|
||||
|
||||
#ifndef ABS_MT_SLOT
|
||||
#define ABS_MT_SLOT 0x2f
|
||||
@@ -226,6 +227,7 @@ EvdevIsDuplicate(InputInfoPtr pInfo)
|
||||
static BOOL
|
||||
EvdevDeviceIsVirtual(const char* devicenode)
|
||||
{
|
||||
#ifdef HAVE_LIBUDEV
|
||||
struct udev *udev = NULL;
|
||||
struct udev_device *device = NULL;
|
||||
struct stat st;
|
||||
@@ -256,6 +258,9 @@ out:
|
||||
udev_device_unref(device);
|
||||
udev_unref(udev);
|
||||
return rc;
|
||||
#else
|
||||
return FALSE;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -277,7 +282,7 @@ EvdevNextInQueue(InputInfoPtr pInfo)
|
||||
void
|
||||
EvdevQueueKbdEvent(InputInfoPtr pInfo, struct input_event *ev, int value)
|
||||
{
|
||||
int code = ev->code + MIN_KEYCODE;
|
||||
int code = ev->code;
|
||||
EventQueuePtr pQueue;
|
||||
|
||||
/* Filter all repeated events from device.
|
||||
@@ -285,10 +290,18 @@ EvdevQueueKbdEvent(InputInfoPtr pInfo, struct input_event *ev, int value)
|
||||
if (value == 2)
|
||||
return;
|
||||
|
||||
/* keycodes > 256 that have a historical mapping in xkeyboard-config */
|
||||
switch (code) {
|
||||
case KEY_TOUCHPAD_TOGGLE: code = KEY_F21; break;
|
||||
case KEY_TOUCHPAD_ON: code = KEY_F22; break;
|
||||
case KEY_TOUCHPAD_OFF: code = KEY_F23; break;
|
||||
case KEY_MICMUTE: code = KEY_F20; break;
|
||||
}
|
||||
|
||||
if ((pQueue = EvdevNextInQueue(pInfo)))
|
||||
{
|
||||
pQueue->type = EV_QUEUE_KEY;
|
||||
pQueue->detail.key = code;
|
||||
pQueue->detail.key = code + MIN_KEYCODE;
|
||||
pQueue->val = value;
|
||||
}
|
||||
}
|
||||
@@ -1072,11 +1085,13 @@ EvdevReadInput(InputInfoPtr pInfo)
|
||||
do {
|
||||
rc = libevdev_next_event(pEvdev->dev, LIBEVDEV_READ_FLAG_NORMAL, &ev);
|
||||
if (rc < 0) {
|
||||
if (rc == -ENODEV) /* May happen after resume */
|
||||
if (rc != -EAGAIN && rc != -EINTR && rc != -EWOULDBLOCK) {
|
||||
/* May happen after resume or at device detach */
|
||||
xf86RemoveEnabledDevice(pInfo);
|
||||
else if (rc != -EAGAIN)
|
||||
EvdevCloseDevice(pInfo);
|
||||
LogMessageVerbSigSafe(X_ERROR, 0, "%s: Read error: %s\n", pInfo->name,
|
||||
strerror(-rc));
|
||||
}
|
||||
break;
|
||||
} else if (rc == LIBEVDEV_READ_STATUS_SUCCESS) {
|
||||
if (pEvdev->mtdev)
|
||||
@@ -1110,8 +1125,8 @@ EvdevKbdCtrl(DeviceIntPtr device, KeybdCtrl *ctrl)
|
||||
{ CAPSFLAG, LED_CAPSL },
|
||||
{ NUMFLAG, LED_NUML },
|
||||
{ SCROLLFLAG, LED_SCROLLL },
|
||||
{ MODEFLAG, LED_KANA },
|
||||
{ COMPOSEFLAG, LED_COMPOSE }
|
||||
{ COMPOSEFLAG, LED_COMPOSE },
|
||||
{ MODEFLAG, LED_KANA }
|
||||
};
|
||||
|
||||
InputInfoPtr pInfo;
|
||||
@@ -1486,10 +1501,8 @@ EvdevAddAbsValuatorClass(DeviceIntPtr device, int num_scroll_axes)
|
||||
continue;
|
||||
|
||||
abs = libevdev_get_abs_info(pEvdev->dev, axis);
|
||||
#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 30)
|
||||
/* Kernel provides units/mm, X wants units/m */
|
||||
resolution = abs->resolution * 1000;
|
||||
#endif
|
||||
|
||||
xf86InitValuatorAxisStruct(device, axnum,
|
||||
atoms[axnum],
|
||||
@@ -1933,7 +1946,7 @@ EvdevInit(DeviceIntPtr device)
|
||||
* So, unless you have a small screen, you won't be enjoying it much;
|
||||
* consequently, absolute axes are generally ignored.
|
||||
*
|
||||
* However, currenly only a device with absolute axes can be registered
|
||||
* However, currently only a device with absolute axes can be registered
|
||||
* as a touch{pad,screen}. Thus, given such a device, absolute axes are
|
||||
* used and relative axes are ignored.
|
||||
*/
|
||||
|
||||
@@ -36,7 +36,14 @@
|
||||
#define EVDEV_H
|
||||
|
||||
#include <linux/input.h>
|
||||
#include <linux/types.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
/* Tolerate prior #include <linux/input.h> */
|
||||
#undef BUS_NONE
|
||||
#undef BUS_PCI
|
||||
#undef BUS_SBUS
|
||||
#undef BUS_PLATFORM
|
||||
#undef BUS_USB
|
||||
|
||||
#include <xorg-server.h>
|
||||
#include <xf86Xinput.h>
|
||||
|
||||
Reference in New Issue
Block a user