Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • libevdev/libevdev
  • mforney/libevdev
  • psreport/libevdev
  • mangix/libevdev
  • whot/libevdev
  • georgefst/libevdev
  • ChaojiangLuo/libevdev
  • zeising/libevdev
  • maksymvo/libevdev
  • ndesh26/libevdev
  • zenwheel/libevdev
  • wswmao/libevdev
  • manu/libevdev
  • renodr/libevdev
  • kaocher82/libevdev
  • mattst88/libevdev
  • simeonschaub/libevdev
  • sdlzx/libevdev
  • OnkelUlla/libevdev
  • JoseExposito/libevdev
  • skitt/libevdev
  • nniro/libevdev
  • illiliti/libevdev
  • qyliss/libevdev
  • bentiss/libevdev
  • eballetbo/libevdev
  • andeston/libevdev
27 results
Show changes
Commits on Source (23)
......@@ -4,22 +4,18 @@
# #
########################################
.templates_sha: &template_sha c1e465762df9d4208a03ed4df6cae15006579838 # see https://docs.gitlab.com/ee/ci/yaml/#includefile
.templates_sha: &template_sha e195d80f35b45cc73668be3767b923fd76c70ed5 # see https://docs.gitlab.com/ee/ci/yaml/#includefile
include:
- project: 'freedesktop/ci-templates'
ref: *template_sha
file:
# Alpine container builder template
- '/templates/alpine.yml'
# Arch container builder template
- '/templates/arch.yml'
# Debian container builder template
- '/templates/debian.yml'
# Fedora container builder template
- '/templates/fedora.yml'
# Ubuntu container builder template
- '/templates/ubuntu.yml'
- '/templates/ci-fairy.yml'
stages:
- prep # rebuild the container images if there is a change
......@@ -33,8 +29,10 @@ stages:
workflow:
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
- if: $CI_PIPELINE_SOURCE == 'push'
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
- if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
when: never
- if: $CI_COMMIT_BRANCH
variables:
# The upstrem repository we will check for images
......@@ -74,52 +72,46 @@ variables:
variables:
MESON_TEST_ARGS: '--no-suite=needs-uinput'
.fedora:36:
.fedora:40:
extends: .fdo.distribution-image@fedora
variables:
FDO_DISTRIBUTION_TAG: '2023-02-15.0'
FDO_DISTRIBUTION_VERSION: '36'
FDO_DISTRIBUTION_TAG: '2024-11-25.0'
FDO_DISTRIBUTION_VERSION: '40'
.fedora:37:
.fedora:41:
extends: .fdo.distribution-image@fedora
variables:
FDO_DISTRIBUTION_TAG: '2023-02-15.0'
FDO_DISTRIBUTION_VERSION: '37'
FDO_DISTRIBUTION_TAG: '2024-11-25.0'
FDO_DISTRIBUTION_VERSION: '41'
.ubuntu:22.04:
.ubuntu:24.10:
extends: .fdo.distribution-image@ubuntu
variables:
FDO_DISTRIBUTION_TAG: '2023-02-15.0'
FDO_DISTRIBUTION_VERSION: '22.04'
.ubuntu:22.10:
extends: .fdo.distribution-image@ubuntu
variables:
FDO_DISTRIBUTION_TAG: '2023-02-15.0'
FDO_DISTRIBUTION_VERSION: '22.10'
FDO_DISTRIBUTION_TAG: '2024-11-25.0'
FDO_DISTRIBUTION_VERSION: '24.10'
.debian:stable:
extends: .fdo.distribution-image@debian
variables:
FDO_DISTRIBUTION_TAG: '2023-02-15.0'
FDO_DISTRIBUTION_TAG: '2024-11-25.0'
FDO_DISTRIBUTION_VERSION: 'stable'
.debian:sid:
extends: .fdo.distribution-image@debian
variables:
FDO_DISTRIBUTION_TAG: '2023-02-15.0'
FDO_DISTRIBUTION_TAG: '2024-11-25.0'
FDO_DISTRIBUTION_VERSION: 'sid'
.arch:rolling:
extends: .fdo.distribution-image@arch
variables:
FDO_DISTRIBUTION_TAG: '2023-02-15.0'
FDO_DISTRIBUTION_TAG: '2024-11-25.0'
FDO_DISTRIBUTION_VERSION: 'rolling'
.alpine:latest:
extends: .fdo.distribution-image@alpine
variables:
FDO_DISTRIBUTION_TAG: '2023-02-15.0'
FDO_DISTRIBUTION_TAG: '2024-11-25.0'
FDO_DISTRIBUTION_VERSION: 'latest'
......@@ -135,14 +127,11 @@ variables:
# $SRCDIR/.gitlab-ci/generate-gitlab-ci.py
#
check-ci-script:
image: golang:alpine
extends:
- .fdo.ci-fairy
stage: prep
before_script:
- apk add python3 py-pip git
- pip3 install git+http://gitlab.freedesktop.org/freedesktop/ci-templates
script:
- ci-fairy generate-template
- git diff --exit-code && exit 0 || true
- ci-fairy generate-template --verify && exit 0 || true
- echo "Committed gitlab-ci.yml differs from generated gitlab-ci.yml. Please verify"
- exit 1
......@@ -151,13 +140,13 @@ check-ci-script:
#
check-commit:
image: golang:alpine
extends:
- .fdo.ci-fairy
stage: prep
before_script:
- apk add python3 py-pip git
- pip3 install git+http://gitlab.freedesktop.org/freedesktop/ci-templates
script:
- ci-fairy check-commits --signed-off-by --junit-xml=results.xml
- ci-fairy -vv check-commits --junit-xml=results.xml && exit 0 || true
- echo "Error checking the commit message format. Please verify"
- exit 1
except:
- master@libevdev/libevdev
variables:
......@@ -171,11 +160,9 @@ check-commit:
#
check-merge-request:
image: golang:alpine
extends:
- .fdo.ci-fairy
stage: merge-check
before_script:
- apk add python3 py-pip git
- pip3 install git+http://gitlab.freedesktop.org/freedesktop/ci-templates
script:
- ci-fairy check-merge-request --require-allow-collaboration --junit-xml=results.xml
artifacts:
......@@ -183,6 +170,8 @@ check-merge-request:
reports:
junit: results.xml
allow_failure: true
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
.fedora.packages:
......@@ -199,7 +188,7 @@ check-merge-request:
.arch.packages:
variables:
FDO_DISTRIBUTION_PACKAGES: 'git gcc meson automake autoconf libtool make pkgconfig python3 check valgrind binutils doxygen'
FDO_DISTRIBUTION_PACKAGES: 'git gc meson automake autoconf libtool make pkgconfig python3 check valgrind binutils doxygen'
.alpine.packages:
variables:
......@@ -208,84 +197,37 @@ check-merge-request:
# Pulls in the container from upstream or rebuilds it if missing
fedora:36@container-prep:
fedora:40@container-prep:
extends:
- .fedora:36
- .fedora:40
- .fedora.packages
- .fdo.container-build@fedora
stage: prep
variables:
GIT_STRATEGY: none
# Always rebuilds the container
fedora:36@container-forced-rebuild:
extends:
- fedora:36@container-prep
only:
- schedules
variables:
FDO_FORCE_REBUILD: 1
# Pulls in the container from upstream or rebuilds it if missing
fedora:37@container-prep:
fedora:41@container-prep:
extends:
- .fedora:37
- .fedora:41
- .fedora.packages
- .fdo.container-build@fedora
stage: prep
variables:
GIT_STRATEGY: none
# Always rebuilds the container
fedora:37@container-forced-rebuild:
extends:
- fedora:37@container-prep
only:
- schedules
variables:
FDO_FORCE_REBUILD: 1
# Pulls in the container from upstream or rebuilds it if missing
ubuntu:22.04@container-prep:
extends:
- .ubuntu:22.04
- .ubuntu.packages
- .fdo.container-build@ubuntu
stage: prep
variables:
GIT_STRATEGY: none
# Always rebuilds the container
ubuntu:22.04@container-forced-rebuild:
extends:
- ubuntu:22.04@container-prep
only:
- schedules
variables:
FDO_FORCE_REBUILD: 1
# Pulls in the container from upstream or rebuilds it if missing
ubuntu:22.10@container-prep:
ubuntu:24.10@container-prep:
extends:
- .ubuntu:22.10
- .ubuntu:24.10
- .ubuntu.packages
- .fdo.container-build@ubuntu
stage: prep
variables:
GIT_STRATEGY: none
# Always rebuilds the container
ubuntu:22.10@container-forced-rebuild:
extends:
- ubuntu:22.10@container-prep
only:
- schedules
variables:
FDO_FORCE_REBUILD: 1
# Pulls in the container from upstream or rebuilds it if missing
debian:stable@container-prep:
......@@ -297,15 +239,6 @@ debian:stable@container-prep:
variables:
GIT_STRATEGY: none
# Always rebuilds the container
debian:stable@container-forced-rebuild:
extends:
- debian:stable@container-prep
only:
- schedules
variables:
FDO_FORCE_REBUILD: 1
# Pulls in the container from upstream or rebuilds it if missing
debian:sid@container-prep:
......@@ -317,15 +250,6 @@ debian:sid@container-prep:
variables:
GIT_STRATEGY: none
# Always rebuilds the container
debian:sid@container-forced-rebuild:
extends:
- debian:sid@container-prep
only:
- schedules
variables:
FDO_FORCE_REBUILD: 1
# Pulls in the container from upstream or rebuilds it if missing
arch:rolling@container-prep:
......@@ -337,15 +261,6 @@ arch:rolling@container-prep:
variables:
GIT_STRATEGY: none
# Always rebuilds the container
arch:rolling@container-forced-rebuild:
extends:
- arch:rolling@container-prep
only:
- schedules
variables:
FDO_FORCE_REBUILD: 1
# Pulls in the container from upstream or rebuilds it if missing
alpine:latest@container-prep:
......@@ -357,15 +272,6 @@ alpine:latest@container-prep:
variables:
GIT_STRATEGY: none
# Always rebuilds the container
alpine:latest@container-forced-rebuild:
extends:
- alpine:latest@container-prep
only:
- schedules
variables:
FDO_FORCE_REBUILD: 1
#################################################################
# #
......@@ -379,11 +285,9 @@ alpine:latest@container-forced-rebuild:
# the registry and will remove any that are not tagged with the provided
# $container_image:$tag
.container-clean:
extends:
- .fdo.ci-fairy
stage: container_clean
image: golang:alpine
before_script:
- apk add python3 py-pip git
- pip3 install git+http://gitlab.freedesktop.org/freedesktop/ci-templates
script:
# Go to your Profile, Settings, Access Tokens
# Create a personal token with 'api' scope, copy the value.
......@@ -398,33 +302,26 @@ alpine:latest@container-forced-rebuild:
only:
- schedules
### fedora 36
fedora:36@container-clean:
extends:
- .fedora:36
- .container-clean
needs: ["fedora:36@container-prep"]
### fedora 37
fedora:37@container-clean:
### fedora 40
fedora:40@container-clean:
extends:
- .fedora:37
- .fedora:40
- .container-clean
needs: ["fedora:37@container-prep"]
needs: ["fedora:40@container-prep"]
### ubuntu 22.04
ubuntu:22.04@container-clean:
### fedora 41
fedora:41@container-clean:
extends:
- .ubuntu:22.04
- .fedora:41
- .container-clean
needs: ["ubuntu:22.04@container-prep"]
needs: ["fedora:41@container-prep"]
### ubuntu 22.10
ubuntu:22.10@container-clean:
### ubuntu 24.10
ubuntu:24.10@container-clean:
extends:
- .ubuntu:22.10
- .ubuntu:24.10
- .container-clean
needs: ["ubuntu:22.10@container-prep"]
needs: ["ubuntu:24.10@container-prep"]
### debian stable
debian:stable@container-clean:
......@@ -476,64 +373,49 @@ alpine:latest@container-clean:
dependencies: []
fedora:36@autotools-build:
extends:
- .fedora:36
- .autotools-build@template
stage: autotools
needs: ['fedora:36@container-prep']
fedora:36@meson-build:
extends:
- .fedora:36
- .meson-build@template
stage: meson
needs: ['fedora:36@container-prep']
fedora:37@autotools-build:
fedora:40@autotools-build:
extends:
- .fedora:37
- .fedora:40
- .autotools-build@template
stage: autotools
needs: ['fedora:37@container-prep']
needs: ['fedora:40@container-prep']
fedora:37@meson-build:
fedora:40@meson-build:
extends:
- .fedora:37
- .fedora:40
- .meson-build@template
stage: meson
needs: ['fedora:37@container-prep']
needs: ['fedora:40@container-prep']
ubuntu:22.04@autotools-build:
fedora:41@autotools-build:
extends:
- .ubuntu:22.04
- .fedora:41
- .autotools-build@template
stage: autotools
needs: ['ubuntu:22.04@container-prep']
needs: ['fedora:41@container-prep']
ubuntu:22.04@meson-build:
fedora:41@meson-build:
extends:
- .ubuntu:22.04
- .fedora:41
- .meson-build@template
stage: meson
needs: ['ubuntu:22.04@container-prep']
needs: ['fedora:41@container-prep']
ubuntu:22.10@autotools-build:
ubuntu:24.10@autotools-build:
extends:
- .ubuntu:22.10
- .ubuntu:24.10
- .autotools-build@template
stage: autotools
needs: ['ubuntu:22.10@container-prep']
needs: ['ubuntu:24.10@container-prep']
ubuntu:22.10@meson-build:
ubuntu:24.10@meson-build:
extends:
- .ubuntu:22.10
- .ubuntu:24.10
- .meson-build@template
stage: meson
needs: ['ubuntu:22.10@container-prep']
needs: ['ubuntu:24.10@container-prep']
debian:stable@autotools-build:
......@@ -602,10 +484,10 @@ alpine:latest@meson-build:
# because they're supposed to fail equally on all
.fedora-custom-build@autotools-template:
extends:
- .fedora:36
- .fedora:40
- .autotools-build@template
stage: build
needs: ['fedora:36@container-prep']
needs: ['fedora:40@container-prep']
no-valgrind:autotools:
extends: .fedora-custom-build@autotools-template
......@@ -644,10 +526,10 @@ enable-gcov:autotools:
.fedora-custom-build@meson-template:
extends:
- .fedora:36
- .fedora:40
- .meson-build@template
stage: build
needs: ['fedora:36@container-prep']
needs: ['fedora:40@container-prep']
no-valgrind:meson:
extends: .fedora-custom-build@meson-template
......@@ -698,7 +580,7 @@ static-build:meson:
soname:
extends:
- .fedora:36
- .fedora:40
stage: build
script:
- ./autogen.sh --prefix=$PWD/prefix-autotools/
......@@ -707,7 +589,7 @@ soname:
- meson "$MESON_BUILDDIR" --prefix=$PWD/prefix-meson/
- ninja -C "$MESON_BUILDDIR" install
- ls -l $PWD/prefix-meson/lib64/libevdev.so.2.3.0
needs: ['fedora:36@container-prep']
needs: ['fedora:40@container-prep']
#################################################################
# #
......@@ -732,8 +614,7 @@ soname:
- kvm
variables:
MESON_BUILDDIR: build_dir
B2C_KERNEL: https://gitlab.freedesktop.org/api/v4/projects/libevdev%2Fhid-tools/packages/generic/kernel-x86_64/v6.1/bzImage
B2C_VERSION: v0.9.9
B2C_KERNEL: https://gitlab.freedesktop.org/api/v4/projects/libevdev%2Fhid-tools/packages/generic/kernel-x86_64/v6.5/bzImage
B2C_IMAGE: $FDO_DISTRIBUTION_IMAGE
B2C_COMMAND: .gitlab-ci/start-in-systemd.sh
script:
......@@ -741,7 +622,7 @@ soname:
- .gitlab-ci/meson-build.sh --skip-test
# pull b2c
- curl -L -o /app/boot2container https://gitlab.freedesktop.org/mupuf/boot2container/-/raw/v0.9.9/vm2c.py
- curl -L -o /app/boot2container https://gitlab.freedesktop.org/gfx-ci/boot2container/-/raw/2ff65156ba67fa8a0c309a4fc16c5df1a88a3844/vm2c.py
- chmod +x /app/boot2container
# runs the test suite only
......@@ -751,10 +632,10 @@ qemu:meson:
stage: VM
extends:
- .fdo.distribution-image@fedora
- .fedora:37
- .fedora:41
- .build-in-b2c@template
needs:
- "fedora:37@container-prep"
- "fedora:41@container-prep"
qemu:meson:valgrind:
extends:
......@@ -765,7 +646,7 @@ qemu:meson:valgrind:
meson-from-tarball:
extends:
- .fedora:37
- .fedora:41
stage: tarballs
script:
- export INSTALLDIR="$PWD/_inst"
......@@ -783,11 +664,11 @@ meson-from-tarball:
- ninja -C "$MESON_BUILDDIR" install
- popd > /dev/null
- ls -lR $INSTALLDIR
needs: ['fedora:37@container-prep']
needs: ['fedora:41@container-prep']
autotools-from-tarball:
extends:
- .fedora:37
- .fedora:41
stage: tarballs
script:
- export INSTALLDIR="$PWD/_inst"
......@@ -808,4 +689,4 @@ autotools-from-tarball:
variables:
LIBEVDEV_SKIP_ROOT_TESTS: 1
needs: ['fedora:37@container-prep']
needs: ['fedora:41@container-prep']
......@@ -6,16 +6,16 @@
# #
########################################
.templates_sha: &template_sha c1e465762df9d4208a03ed4df6cae15006579838 # see https://docs.gitlab.com/ee/ci/yaml/#includefile
.templates_sha: &template_sha e195d80f35b45cc73668be3767b923fd76c70ed5 # see https://docs.gitlab.com/ee/ci/yaml/#includefile
include:
- project: 'freedesktop/ci-templates'
ref: *template_sha
file:
{% for distribution in distributions|map(attribute='name')|unique()|sort() %}
# {{ distribution.capitalize() }} container builder template
- '/templates/{{distribution}}.yml'
{% endfor %}
- '/templates/ci-fairy.yml'
stages:
- prep # rebuild the container images if there is a change
......@@ -29,8 +29,10 @@ stages:
workflow:
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
- if: $CI_PIPELINE_SOURCE == 'push'
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
- if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
when: never
- if: $CI_COMMIT_BRANCH
variables:
# The upstrem repository we will check for images
......@@ -96,14 +98,11 @@ variables:
# $SRCDIR/.gitlab-ci/generate-gitlab-ci.py
#
check-ci-script:
image: golang:alpine
extends:
- .fdo.ci-fairy
stage: prep
before_script:
- apk add python3 py-pip git
- pip3 install git+http://gitlab.freedesktop.org/freedesktop/ci-templates
script:
- ci-fairy generate-template
- git diff --exit-code && exit 0 || true
- ci-fairy generate-template --verify && exit 0 || true
- echo "Committed gitlab-ci.yml differs from generated gitlab-ci.yml. Please verify"
- exit 1
......@@ -112,13 +111,13 @@ check-ci-script:
#
check-commit:
image: golang:alpine
extends:
- .fdo.ci-fairy
stage: prep
before_script:
- apk add python3 py-pip git
- pip3 install git+http://gitlab.freedesktop.org/freedesktop/ci-templates
script:
- ci-fairy check-commits --signed-off-by --junit-xml=results.xml
- ci-fairy -vv check-commits --junit-xml=results.xml && exit 0 || true
- echo "Error checking the commit message format. Please verify"
- exit 1
except:
- master@libevdev/libevdev
variables:
......@@ -132,11 +131,9 @@ check-commit:
#
check-merge-request:
image: golang:alpine
extends:
- .fdo.ci-fairy
stage: merge-check
before_script:
- apk add python3 py-pip git
- pip3 install git+http://gitlab.freedesktop.org/freedesktop/ci-templates
script:
- ci-fairy check-merge-request --require-allow-collaboration --junit-xml=results.xml
artifacts:
......@@ -144,6 +141,8 @@ check-merge-request:
reports:
junit: results.xml
allow_failure: true
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
{% for distro in distributions %}
......@@ -166,15 +165,6 @@ check-merge-request:
variables:
GIT_STRATEGY: none
# Always rebuilds the container
{{ distro.name }}:{{ version }}@container-forced-rebuild:
extends:
- {{ distro.name }}:{{ version }}@container-prep
only:
- schedules
variables:
FDO_FORCE_REBUILD: 1
{% endfor %}
{% endfor %}
......@@ -190,11 +180,9 @@ check-merge-request:
# the registry and will remove any that are not tagged with the provided
# $container_image:$tag
.container-clean:
extends:
- .fdo.ci-fairy
stage: container_clean
image: golang:alpine
before_script:
- apk add python3 py-pip git
- pip3 install git+http://gitlab.freedesktop.org/freedesktop/ci-templates
script:
# Go to your Profile, Settings, Access Tokens
# Create a personal token with 'api' scope, copy the value.
......@@ -415,7 +403,6 @@ soname:
variables:
MESON_BUILDDIR: build_dir
B2C_KERNEL: {{ b2c.kernel }}
B2C_VERSION: {{ b2c.version }}
B2C_IMAGE: $FDO_DISTRIBUTION_IMAGE
B2C_COMMAND: .gitlab-ci/start-in-systemd.sh
script:
......@@ -423,7 +410,7 @@ soname:
- .gitlab-ci/meson-build.sh --skip-test
# pull b2c
- curl -L -o /app/boot2container https://gitlab.freedesktop.org/mupuf/boot2container/-/raw/{{b2c.version}}/vm2c.py
- curl -L -o /app/boot2container https://gitlab.freedesktop.org/gfx-ci/boot2container/-/raw/{{b2c.version}}/vm2c.py
- chmod +x /app/boot2container
# runs the test suite only
......
......@@ -3,7 +3,7 @@
#
# We're happy to rebuild all containers when one changes.
.default_tag: &default_tag '2023-02-15.0'
.default_tag: &default_tag '2024-11-25.0'
distributions:
- name: fedora
......@@ -12,8 +12,8 @@ distributions:
# only one distro for qemu tests
use_for_qemu_tests: true
versions:
- '36'
- '37'
- '40'
- '41'
packages:
- git
- gcc
......@@ -42,8 +42,7 @@ distributions:
- name: ubuntu
tag: *default_tag
versions:
- '22.04'
- '22.10'
- '24.10'
packages:
- git
- gcc
......@@ -87,7 +86,7 @@ distributions:
- 'rolling'
packages:
- git
- gcc
- gc
- meson
- automake
- autoconf
......@@ -122,5 +121,5 @@ distributions:
- linux-headers
b2c:
version: v0.9.9
kernel: https://gitlab.freedesktop.org/api/v4/projects/libevdev%2Fhid-tools/packages/generic/kernel-x86_64/v6.1/bzImage
version: 2ff65156ba67fa8a0c309a4fc16c5df1a88a3844
kernel: https://gitlab.freedesktop.org/api/v4/projects/libevdev%2Fhid-tools/packages/generic/kernel-x86_64/v6.5/bzImage
#!/usr/bin/env bash
#
# This script is sourced from here:
# https://gitlab.freedesktop.org/whot/meson-helper
#
# SPDX-License-Identifier: MIT
set -x
......
......@@ -7,7 +7,7 @@ AC_PREREQ([2.62])
# change meson version too
AC_INIT([libevdev],
[1.13.1],
[1.13.3],
[https://gitlab.freedesktop.org/libevdev/libevdev/issues/],
[libevdev],
[http://freedesktop.org/wiki/Software/libevdev/])
......
......@@ -602,6 +602,7 @@
#define KEY_ALS_TOGGLE 0x230 /* Ambient light sensor */
#define KEY_ROTATE_LOCK_TOGGLE 0x231 /* Display rotation lock */
#define KEY_REFRESH_RATE_TOGGLE 0x232 /* Display refresh rate toggle */
#define KEY_BUTTONCONFIG 0x240 /* AL Button Configuration */
#define KEY_TASKMANAGER 0x241 /* AL Task/Project Manager */
......@@ -617,6 +618,8 @@
#define KEY_CAMERA_ACCESS_ENABLE 0x24b /* Enables programmatic access to camera devices. (HUTRR72) */
#define KEY_CAMERA_ACCESS_DISABLE 0x24c /* Disables programmatic access to camera devices. (HUTRR72) */
#define KEY_CAMERA_ACCESS_TOGGLE 0x24d /* Toggles the current state of the camera access control. (HUTRR72) */
#define KEY_ACCESSIBILITY 0x24e /* Toggles the system bound accessibility UI/command (HUTRR116) */
#define KEY_DO_NOT_DISTURB 0x24f /* Toggles the system-wide "Do Not Disturb" control (HUTRR94)*/
#define KEY_BRIGHTNESS_MIN 0x250 /* Set Brightness to Minimum */
#define KEY_BRIGHTNESS_MAX 0x251 /* Set Brightness to Maximum */
......
......@@ -602,6 +602,7 @@
#define KEY_ALS_TOGGLE 0x230 /* Ambient light sensor */
#define KEY_ROTATE_LOCK_TOGGLE 0x231 /* Display rotation lock */
#define KEY_REFRESH_RATE_TOGGLE 0x232 /* Display refresh rate toggle */
#define KEY_BUTTONCONFIG 0x240 /* AL Button Configuration */
#define KEY_TASKMANAGER 0x241 /* AL Task/Project Manager */
......@@ -617,6 +618,8 @@
#define KEY_CAMERA_ACCESS_ENABLE 0x24b /* Enables programmatic access to camera devices. (HUTRR72) */
#define KEY_CAMERA_ACCESS_DISABLE 0x24c /* Disables programmatic access to camera devices. (HUTRR72) */
#define KEY_CAMERA_ACCESS_TOGGLE 0x24d /* Toggles the current state of the camera access control. (HUTRR72) */
#define KEY_ACCESSIBILITY 0x24e /* Toggles the system bound accessibility UI/command (HUTRR116) */
#define KEY_DO_NOT_DISTURB 0x24f /* Toggles the system-wide "Do Not Disturb" control (HUTRR94)*/
#define KEY_BRIGHTNESS_MIN 0x250 /* Set Brightness to Minimum */
#define KEY_BRIGHTNESS_MAX 0x251 /* Set Brightness to Maximum */
......
......@@ -805,23 +805,34 @@ push_mt_sync_events(struct libevdev *dev,
int rc;
for (int slot = 0; slot < dev->num_slots; slot++) {
/* stopped touches were already terminated in
* terminate_slots */
if (changes[slot].state == TOUCH_STOPPED ||
!bit_is_set(changes[slot].axes, ABS_MT_SLOT))
continue;
bool have_slot_event = false;
queue_push_event(dev, EV_ABS, ABS_MT_SLOT, slot);
last_reported_slot = slot;
if (!bit_is_set(changes[slot].axes, ABS_MT_SLOT))
continue;
for (int axis = ABS_MT_MIN; axis <= ABS_MT_MAX; axis++) {
if (axis == ABS_MT_SLOT ||
!libevdev_has_event_code(dev, EV_ABS, axis))
continue;
if (bit_is_set(changes[slot].axes, axis))
if (bit_is_set(changes[slot].axes, axis)) {
/* We already sent the tracking id -1 in
* terminate_slots so don't do that again. There
* may be other axes like ABS_MT_TOOL_TYPE that
* need to be synced despite no touch being active */
if (axis == ABS_MT_TRACKING_ID &&
*slot_value(dev, slot, axis) == -1)
continue;
if (!have_slot_event) {
queue_push_event(dev, EV_ABS, ABS_MT_SLOT, slot);
last_reported_slot = slot;
have_slot_event = true;
}
queue_push_event(dev, EV_ABS, axis,
*slot_value(dev, slot, axis));
}
}
}
......
project('libevdev', 'c',
version: '1.13.1', # change autotools version too
version: '1.13.3', # change autotools version too
license: 'MIT/Expat',
default_options: [ 'c_std=gnu99', 'warning_level=2' ],
meson_version: '>= 0.56.0')
......@@ -55,8 +55,7 @@ event_names_h = configure_file(input: 'libevdev/libevdev.h',
install_headers('libevdev/libevdev.h',
'libevdev/libevdev-uinput.h',
subdir: 'libevdev-1.0/libevdev')
src_libevdev = [
event_names_h,
src_libevdev = [event_names_h] + files(
'libevdev/libevdev.h',
'libevdev/libevdev-int.h',
'libevdev/libevdev-util.h',
......@@ -67,7 +66,7 @@ src_libevdev = [
'libevdev/libevdev-names.c',
'include/linux/input.h',
'include/linux/uinput.h',
]
)
mapfile = dir_src / 'libevdev.sym'
version_flag = '-Wl,--version-script,@0@'.format(mapfile)
......@@ -81,7 +80,9 @@ lib_libevdev = library('evdev',
install: true
)
dep_libevdev = declare_dependency(link_with: lib_libevdev)
inc_libevdev = include_directories('.')
dep_libevdev = declare_dependency(link_with: lib_libevdev,
include_directories: [inc_libevdev])
pkgconfig.generate(
filebase: 'libevdev',
......@@ -101,34 +102,36 @@ install_man(manpage)
# tools
executable('libevdev-events',
sources: ['tools/libevdev-events.c'],
include_directories: [includes_include],
dependencies: dep_libevdev,
install: false)
executable('libevdev-list-codes',
sources: ['tools/libevdev-list-codes.c'],
include_directories: [includes_include],
dependencies: dep_libevdev,
install: false)
executable('touchpad-edge-detector',
sources: ['tools/touchpad-edge-detector.c'],
include_directories: [includes_include],
dependencies: [dep_libevdev, dep_lm],
install: true)
executable('mouse-dpi-tool',
sources: ['tools/mouse-dpi-tool.c'],
include_directories: [includes_include],
dependencies: dep_libevdev,
install: true)
executable('libevdev-tweak-device',
sources: ['tools/libevdev-tweak-device.c'],
include_directories: [includes_include],
dependencies: dep_libevdev,
install: true)
install_man('tools/libevdev-tweak-device.1',
'tools/touchpad-edge-detector.1',
'tools/mouse-dpi-tool.1')
if not get_option('tools').disabled()
executable('libevdev-events',
sources: ['tools/libevdev-events.c'],
include_directories: [includes_include],
dependencies: dep_libevdev,
install: false)
executable('libevdev-list-codes',
sources: ['tools/libevdev-list-codes.c'],
include_directories: [includes_include],
dependencies: dep_libevdev,
install: false)
executable('touchpad-edge-detector',
sources: ['tools/touchpad-edge-detector.c'],
include_directories: [includes_include],
dependencies: [dep_libevdev, dep_lm],
install: true)
executable('mouse-dpi-tool',
sources: ['tools/mouse-dpi-tool.c'],
include_directories: [includes_include],
dependencies: dep_libevdev,
install: true)
executable('libevdev-tweak-device',
sources: ['tools/libevdev-tweak-device.c'],
include_directories: [includes_include],
dependencies: dep_libevdev,
install: true)
install_man('tools/libevdev-tweak-device.1',
'tools/touchpad-edge-detector.1',
'tools/mouse-dpi-tool.1')
endif
# tests
dep_check = dependency('check', version: '>= 0.9.9',
......@@ -230,8 +233,6 @@ endif
doxygen = find_program('doxygen', required: get_option('documentation'))
if doxygen.found()
doxygen = find_program('doxygen')
src_doxygen = files(
# source files
dir_src / 'libevdev.h',
......
......@@ -2,6 +2,10 @@ option('tests',
type: 'feature',
value: 'enabled',
description: 'Build the tests')
option('tools',
type: 'feature',
value: 'enabled',
description: 'Build the tools')
option('documentation',
type: 'feature',
value: 'enabled',
......
......@@ -1008,6 +1008,206 @@ START_TEST(test_syn_delta_tracking_ids_btntool)
}
END_TEST
START_TEST(test_syn_delta_mt_tool_type)
{
struct uinput_device* uidev;
struct libevdev *dev;
int rc;
struct input_event ev;
int i;
const int num_slots = 15;
int slot = -1;
unsigned long terminated[NLONGS(num_slots)];
struct input_absinfo abs[7] = {
{ .value = ABS_X, .maximum = 1000 },
{ .value = ABS_Y, .maximum = 1000 },
{ .value = ABS_MT_POSITION_X, .maximum = 1000 },
{ .value = ABS_MT_POSITION_Y, .maximum = 1000 },
{ .value = ABS_MT_TOOL_TYPE, .maximum = MT_TOOL_PALM },
{ .value = ABS_MT_SLOT, .maximum = num_slots },
{ .value = ABS_MT_TRACKING_ID, .minimum = -1, .maximum = 0xff },
};
test_create_abs_device(&uidev, &dev,
ARRAY_LENGTH(abs), abs,
EV_SYN, SYN_REPORT,
-1);
for (i = num_slots; i >= 0; i--) {
int tool_type = MT_TOOL_FINGER;
switch (i) {
case 0:
case 1:
case 2:
case 3:
tool_type = MT_TOOL_FINGER;
break;
case 4:
case 5:
case 6:
case 7:
tool_type = MT_TOOL_PALM;
break;
}
uinput_device_event_multiple(uidev,
EV_ABS, ABS_MT_SLOT, i,
EV_ABS, ABS_MT_TRACKING_ID, i,
EV_ABS, ABS_X, 100 + i,
EV_ABS, ABS_Y, 500 + i,
EV_ABS, ABS_MT_POSITION_X, 100 + i,
EV_ABS, ABS_MT_POSITION_Y, 500 + i,
EV_ABS, ABS_MT_TOOL_TYPE, tool_type,
EV_SYN, SYN_REPORT, 0,
-1, -1);
do {
rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev);
ck_assert_int_ne(rc, LIBEVDEV_READ_STATUS_SYNC);
} while (rc >= 0);
}
/* we have a bunch of touches now, and libevdev knows it. Change all
* touches */
for (i = num_slots; i >= 0; i--) {
uinput_device_event(uidev, EV_ABS, ABS_MT_SLOT, i);
switch (i) {
/* Slot 0 is a finger and stays a finger */
case 0:
/* Slot 4 is a palm and stays a palm */
case 4:
uinput_device_event_multiple(uidev,
EV_ABS, ABS_X, 200 + i,
EV_ABS, ABS_Y, 700 + i,
EV_ABS, ABS_MT_POSITION_X, 200 + i,
EV_ABS, ABS_MT_POSITION_Y, 700 + i,
-1, -1);
break;
/* Slot 1 is a finger and changes active touch to palm */
case 1:
uinput_device_event(uidev, EV_ABS, ABS_MT_TOOL_TYPE, MT_TOOL_PALM);
break;
/* Slot 2 is a finger and terminates */
case 2:
/* Slot 6 is a palm and terminates */
case 6:
uinput_device_event(uidev, EV_ABS, ABS_MT_TRACKING_ID, -1);
break;
/* Slot 3 is a finger and restarts as finger */
case 3:
/* Slot 5 is a palm and restarts as finger */
case 5:
uinput_device_event_multiple(uidev,
EV_ABS, ABS_MT_TRACKING_ID, num_slots + i,
EV_ABS, ABS_X, 200 + i,
EV_ABS, ABS_Y, 700 + i,
EV_ABS, ABS_MT_POSITION_X, 200 + i,
EV_ABS, ABS_MT_POSITION_Y, 700 + i,
EV_ABS, ABS_MT_TOOL_TYPE, MT_TOOL_FINGER,
-1, -1);
break;
/* Slot 7 is a palm and restarts and terminates again as finger */
case 7:
uinput_device_event(uidev, EV_ABS, ABS_MT_TRACKING_ID, -1);
uinput_device_event(uidev, EV_SYN, SYN_REPORT, 0);
uinput_device_event_multiple(uidev,
EV_ABS, ABS_MT_TRACKING_ID, num_slots + i,
EV_ABS, ABS_X, 200 + i,
EV_ABS, ABS_Y, 700 + i,
EV_ABS, ABS_MT_POSITION_X, 200 + i,
EV_ABS, ABS_MT_POSITION_Y, 700 + i,
EV_ABS, ABS_MT_TOOL_TYPE, MT_TOOL_FINGER,
-1, -1);
uinput_device_event(uidev, EV_ABS, ABS_MT_TRACKING_ID, -1);
uinput_device_event(uidev, EV_SYN, SYN_REPORT, 0);
break;
}
uinput_device_event(uidev, EV_SYN, SYN_REPORT, 0);
}
/* Force sync */
rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_FORCE_SYNC, &ev);
ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC);
/* now check for the right tracking IDs */
memset(terminated, 0, sizeof(terminated));
slot = -1;
while ((rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev)) != -EAGAIN) {
if (libevdev_event_is_code(&ev, EV_SYN, SYN_REPORT))
continue;
if (libevdev_event_is_code(&ev, EV_ABS, ABS_MT_SLOT)) {
slot = ev.value;
continue;
}
if (libevdev_event_is_code(&ev, EV_ABS, ABS_X) ||
libevdev_event_is_code(&ev, EV_ABS, ABS_Y))
continue;
ck_assert_int_ne(slot, -1);
if (libevdev_event_is_code(&ev, EV_ABS, ABS_MT_TRACKING_ID)) {
switch (slot) {
case 0:
case 1:
case 4:
ck_abort_msg("No ABS_MT_TRACKING_ID expected for this slot");
break;
case 2:
case 6:
case 7:
ck_assert_int_eq(ev.value, -1);
break;
case 3:
case 5:
if (!bit_is_set(terminated, slot)) {
ck_assert_int_eq(ev.value, -1);
set_bit(terminated, slot);
} else {
ck_assert_int_eq(ev.value, num_slots + slot);
}
break;
}
continue;
}
if (libevdev_event_is_code(&ev, EV_ABS, ABS_MT_TOOL_TYPE)) {
switch (slot) {
case 0:
case 2:
case 3:
case 4:
case 6:
ck_abort_msg("No ABS_MT_TOOL_TYPE expected for this slot");
break;
case 1:
ck_assert_int_eq(ev.value, MT_TOOL_PALM);
break;
case 5:
case 7:
ck_assert_int_eq(ev.value, MT_TOOL_FINGER);
break;
}
continue;
}
switch(ev.code) {
case ABS_MT_POSITION_X:
ck_assert_int_eq(ev.value, 200 + slot);
break;
case ABS_MT_POSITION_Y:
ck_assert_int_eq(ev.value, 700 + slot);
break;
default:
ck_abort();
}
}
uinput_device_free(uidev);
libevdev_free(dev);
}
END_TEST
START_TEST(test_syn_delta_late_sync)
{
struct uinput_device* uidev;
......@@ -2060,6 +2260,7 @@ TEST_SUITE_ROOT_PRIVILEGES(libevdev_events)
add_test(s, test_syn_delta_late_sync);
add_test(s, test_syn_delta_tracking_ids);
add_test(s, test_syn_delta_tracking_ids_btntool);
add_test(s, test_syn_delta_mt_tool_type);
add_test(s, test_skipped_sync);
add_test(s, test_incomplete_sync);
......
......@@ -2,10 +2,36 @@
set -e
builddir=_doc_build
tag="$1"
case $tag in
-h|--help)
echo "Usage: $0 <tag>"
echo "Builds the libevdev documentation and rsyncs it to the freedesktop.org server."
echo ""
echo "Options:"
echo " tag ... the tag to build (default: master)"
exit 0
;;
1*)
# Helper so we can run it with the numerical tag only, tags
# are all prefixed with libevdev
tag="libevdev-$tag"
;;
**)
;;
esac
tag=${tag:-master}
dir=$(mktemp -d --tmpdir='' libevdev-doc.XXX)
git clone --depth 1 --branch "$tag" https://gitlab.freedesktop.org/libevdev/libevdev.git "$dir"
pushd $dir
builddir=_doc_build
rm -rf "$builddir"
meson setup "$builddir"
ninja -C "$builddir"
rsync --delete -avz "$builddir/html/" freedesktop.org:/srv/www.freedesktop.org/www/software/libevdev/doc/latest
rm -rf "$builddir"
# Strip libevdev- prefix from the tag and replace master with latest, whichever applies
htmldir=${tag/#libevdev-/}
htmldir=${htmldir/master/latest}
rsync --delete -avz "$builddir/html/" freedesktop.org:/srv/www.freedesktop.org/www/software/libevdev/doc/${htmldir}
popd