[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[Git][xorg-team/driver/xserver-xorg-input-libinput][debian-unstable] 10 commits: Implement support for scroll button locks



Title: GitLab

Timo Aaltonen pushed to branch debian-unstable at X Strike Force / driver / xserver-xorg-input-libinput

Commits:

9 changed files:

Changes:

  • .gitlab-ci.yml
    1 1
     # vim: set expandtab shiftwidth=2 tabstop=8 textwidth=0:
    
    2 2
     
    
    3 3
     include:
    
    4
    -  - project: 'wayland/ci-templates'
    
    5
    -    ref: 955e61e67cf29327cf907432f668df9eec4ca6a2 # see https://docs.gitlab.com/ee/ci/yaml/#includefile
    
    4
    +  - project: 'freedesktop/ci-templates'
    
    5
    +    ref: 59de540b620c45739871d1a073d76d5521989d11 # see https://docs.gitlab.com/ee/ci/yaml/#includefile
    
    6 6
         file: '/templates/fedora.yml'
    
    7 7
     
    
    8 8
     
    
    9 9
     variables:
    
    10
    -  FEDORA_RPMS: 'git autoconf automake libtool make xorg-x11-server-devel libudev-devel libevdev-devel libinput-devel xorg-x11-util-macros'
    
    11
    -  FEDORA_TAG: '2019-08-12.0'
    
    12
    -  UPSTREAM_REPO: xorg/drivers/xf86-input-libinput
    
    13
    -  BUILDAH_IMAGE: $CI_REGISTRY/wayland/ci-templates/buildah:latest
    
    14
    -  FEDORA_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/fedora/$FEDORA_VERSION:$FEDORA_TAG
    
    10
    +  FDO_UPSTREAM_REPO: xorg/drivers/xf86-input-libinput
    
    15 11
     
    
    16 12
     
    
    17 13
     stages:
    
    18
    -  - containers-build
    
    14
    +  - containers
    
    19 15
       - build
    
    20 16
     
    
    21 17
     
    
    22
    -container_build:
    
    23
    -  extends: .fedora@container-ifnot-exists
    
    24
    -  stage: containers-build
    
    18
    +.fedora:
    
    25 19
       variables:
    
    26
    -    GIT_STRATEGY: none
    
    27
    -    FEDORA_VERSION: 30
    
    20
    +    FDO_DISTRIBUTION_VERSION: 32
    
    21
    +    FDO_DISTRIBUTION_PACKAGES: 'git autoconf automake libtool make xorg-x11-server-devel libudev-devel libevdev-devel libinput-devel xorg-x11-util-macros'
    
    22
    +    FDO_DISTRIBUTION_TAG: '2020-05-19.0'
    
    28 23
     
    
    29 24
     
    
    30
    -.default_artifacts: &default_artifacts
    
    31
    -  artifacts:
    
    32
    -    name: "automake-logs-$CI_JOB_NAME"
    
    33
    -    when: always
    
    34
    -    expire_in: 1 week
    
    35
    -    paths:
    
    36
    -      - _builddir/config.log
    
    25
    +fedora@container_build:
    
    26
    +  extends:
    
    27
    +    - .fedora
    
    28
    +    - .fdo.container-build@fedora
    
    29
    +  stage: containers
    
    30
    +  variables:
    
    31
    +    GIT_STRATEGY: none
    
    37 32
     
    
    38 33
     
    
    39
    -.default_build: &default_build
    
    34
    +.default_build:
    
    35
    +  stage: build
    
    40 36
       script:
    
    41 37
         - mkdir _builddir _inst
    
    42 38
         - pushd _builddir > /dev/null
    
    ... ... @@ -44,21 +40,16 @@ container_build:
    44 40
         - make && make check
    
    45 41
         - make install
    
    46 42
         - popd > /dev/null
    
    43
    +  artifacts:
    
    44
    +    name: "automake-logs-$CI_JOB_NAME"
    
    45
    +    when: always
    
    46
    +    expire_in: 1 week
    
    47
    +    paths:
    
    48
    +      - _builddir/config.log
    
    47 49
     
    
    48 50
     
    
    49
    -.build@template:
    
    50
    -  stage: build
    
    51
    -  <<: *default_artifacts
    
    52
    -  <<: *default_build
    
    53
    -  dependencies: []
    
    54
    -
    
    55
    -
    
    56
    -.fedora-build@template:
    
    57
    -  extends: .build@template
    
    58
    -  image: $FEDORA_CONTAINER_IMAGE
    
    59
    -
    
    60
    -
    
    61
    -fedora:30@default-build:
    
    62
    -  extends: .fedora-build@template
    
    63
    -  variables:
    
    64
    -    FEDORA_VERSION: 30
    51
    +fedora:32@default-build:
    
    52
    +  extends:
    
    53
    +    - .fedora
    
    54
    +    - .fdo.distribution-image@fedora
    
    55
    +    - .default_build

  • configure.ac
    ... ... @@ -23,7 +23,7 @@
    23 23
     # Initialize Autoconf
    
    24 24
     AC_PREREQ([2.60])
    
    25 25
     AC_INIT([xf86-input-libinput],
    
    26
    -        [0.29.0],
    
    26
    +        [0.30.0],
    
    27 27
             [https://gitlab.freedesktop.org/xorg/driver/xf86-input-libinput/issues],
    
    28 28
             [xf86-input-libinput])
    
    29 29
     AC_CONFIG_SRCDIR([Makefile.am])
    
    ... ... @@ -61,6 +61,17 @@ AC_LINK_IFELSE(
    61 61
                     [libinput_have_touch_count=yes]],
    
    62 62
                    [AC_MSG_RESULT([no])
    
    63 63
                     [libinput_have_touch_count=no]])
    
    64
    +
    
    65
    +AC_MSG_CHECKING([if libinput_device_config_scroll_get_button_lock is available])
    
    66
    +AC_LINK_IFELSE(
    
    67
    +               [AC_LANG_PROGRAM([[#include <libinput.h>]],
    
    68
    +                                [[libinput_device_config_scroll_get_button_lock(NULL)]])],
    
    69
    +               [AC_MSG_RESULT([yes])
    
    70
    +                AC_DEFINE(HAVE_LIBINPUT_SCROLL_BUTTON_LOCK, [1],
    
    71
    +                          [libinput_device_config_scroll_get_button_lock() is available])
    
    72
    +                [libinput_have_scroll_button_lock=yes]],
    
    73
    +               [AC_MSG_RESULT([no])
    
    74
    +                [libinput_have_scroll_button_lock=no]])
    
    64 75
     LIBS=$OLD_LIBS
    
    65 76
     CFLAGS=$OLD_CFLAGS
    
    66 77
     
    

  • debian/changelog
    1
    +xserver-xorg-input-libinput (0.30.0-1) unstable; urgency=medium
    
    2
    +
    
    3
    +  * New upstream release.
    
    4
    +  * rules: Use dh_missing.
    
    5
    +  * control: Migrate to debhelper-compat, bump to 12.
    
    6
    +  * control: Bump policy to 4.5.0.
    
    7
    +
    
    8
    + -- Timo Aaltonen <tjaalton@debian.org>  Mon, 17 Aug 2020 13:45:44 +0300
    
    9
    +
    
    1 10
     xserver-xorg-input-libinput (0.29.0-1) unstable; urgency=medium
    
    2 11
     
    
    3 12
       * New upstream release.
    

  • debian/compat deleted
    1
    -10

  • debian/control
    ... ... @@ -4,7 +4,7 @@ Priority: optional
    4 4
     Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
    
    5 5
     Uploaders: Timo Aaltonen <tjaalton@debian.org>,
    
    6 6
     Build-Depends:
    
    7
    - debhelper (>= 10),
    
    7
    + debhelper-compat (= 12),
    
    8 8
      libinput-dev (>= 1.4.901),
    
    9 9
      libudev-dev,
    
    10 10
      pkg-config,
    
    ... ... @@ -13,7 +13,7 @@ Build-Depends:
    13 13
      x11proto-input-dev (>= 2.2),
    
    14 14
      xserver-xorg-dev (>= 2:1.15.99),
    
    15 15
      xutils-dev,
    
    16
    -Standards-Version: 4.3.0
    
    16
    +Standards-Version: 4.5.0
    
    17 17
     Homepage: https://www.x.org
    
    18 18
     Vcs-Git: https://salsa.debian.org/xorg-team/driver/xserver-xorg-input-libinput.git
    
    19 19
     Vcs-Browser: https://salsa.debian.org/xorg-team/driver/xserver-xorg-input-libinput
    

  • debian/rules
    ... ... @@ -7,7 +7,10 @@ override_dh_auto_configure:
    7 7
     # Kill *.la files, and forget no-one:
    
    8 8
     override_dh_install:
    
    9 9
     	find debian/tmp -name '*.la' -delete
    
    10
    -	dh_install --fail-missing
    
    10
    +	dh_install
    
    11
    +
    
    12
    +override_dh_missing:
    
    13
    +	dh_missing --fail-missing
    
    11 14
     
    
    12 15
     # That's a plugin, use appropriate warning level:
    
    13 16
     override_dh_shlibdeps:
    

  • include/libinput-properties.h
    ... ... @@ -115,6 +115,12 @@
    115 115
     /* Scroll button for button scrolling: 32-bit int, 1 value, read-only */
    
    116 116
     #define LIBINPUT_PROP_SCROLL_BUTTON_DEFAULT "libinput Button Scrolling Button Default"
    
    117 117
     
    
    118
    +/* Scroll button lock: BOOL, 1 value, TRUE for enabled, FALSE otherwise */
    
    119
    +#define LIBINPUT_PROP_SCROLL_BUTTON_LOCK "libinput Button Scrolling Button Lock Enabled"
    
    120
    +
    
    121
    +/* Scroll button lock: BOOL, 1 value, TRUE for enabled, FALSE otherwise, read-only*/
    
    122
    +#define LIBINPUT_PROP_SCROLL_BUTTON_LOCK_DEFAULT "libinput Button Scrolling Button Lock Enabled Default"
    
    123
    +
    
    118 124
     /* Click method: BOOL read-only, 2 values in order buttonareas, clickfinger
    
    119 125
        shows available click methods */
    
    120 126
     #define LIBINPUT_PROP_CLICK_METHODS_AVAILABLE "libinput Click Methods Available"
    

  • man/libinput.man
    ... ... @@ -139,9 +139,18 @@ Designates a button as scroll button. If the
    139 139
     .BI ScrollMethod
    
    140 140
     is
    
    141 141
     .BI button
    
    142
    -and the button is logically held down, x/y axis movement is converted into
    
    142
    +and the button is logically down, x/y axis movement is converted into
    
    143 143
     scroll events.
    
    144 144
     .TP 7
    
    145
    +.BI "Option \*qScrollButtonLock\*q \*q" bool \*q
    
    146
    +Enables or disables the scroll button lock. If enabled, the 
    
    147
    +.BI ScrollButton
    
    148
    +is considered logically down after the first click and remains down until
    
    149
    +the second click of that button. If disabled (the default), the 
    
    150
    +.BI ScrollButton
    
    151
    +button is considered logically down while held down and up once physically
    
    152
    +released.
    
    153
    +.TP 7
    
    145 154
     .BI "Option \*qScrollMethod\*q \*q" string \*q
    
    146 155
     Enables a scroll method. Permitted values are
    
    147 156
     .BI none,
    
    ... ... @@ -219,6 +228,12 @@ Indicates which acceleration profile is currently enabled on this device.
    219 228
     setting is independent of the scroll method, to enable button scrolling the
    
    220 229
     method must be set to button-scrolling and a valid button must be set.
    
    221 230
     .TP 7
    
    231
    +.BI "libinput Button Scrolling Button Lock Enabled"
    
    232
    +1 boolean value. If true, the scroll button lock is enabled.  This
    
    233
    +setting is independent of the scroll method or the scroll button, to enable
    
    234
    +button scrolling the method must be set to button-scrolling and a valid
    
    235
    +button must be set.
    
    236
    +.TP 7
    
    222 237
     .BI "libinput Calibration Matrix"
    
    223 238
     9 32-bit float values, representing a 3x3 calibration matrix, order is row
    
    224 239
     1, row 2, row 3
    

  • src/xf86libinput.c
    ... ... @@ -157,6 +157,7 @@ struct xf86libinput {
    157 157
     		BOOL disable_while_typing;
    
    158 158
     		CARD32 sendevents;
    
    159 159
     		CARD32 scroll_button; /* xorg button number */
    
    160
    +		BOOL scroll_buttonlock;
    
    160 161
     		float speed;
    
    161 162
     		float matrix[9];
    
    162 163
     		enum libinput_config_scroll_method scroll_method;
    
    ... ... @@ -672,12 +673,27 @@ LibinputApplyConfigScrollMethod(DeviceIntPtr dev,
    672 673
     
    
    673 674
     	if (libinput_device_config_scroll_get_methods(device) & LIBINPUT_CONFIG_SCROLL_ON_BUTTON_DOWN) {
    
    674 675
     		unsigned int scroll_button;
    
    676
    +#if HAVE_LIBINPUT_SCROLL_BUTTON_LOCK
    
    677
    +		enum libinput_config_scroll_button_lock_state buttonlock;
    
    678
    +
    
    679
    +		buttonlock = driver_data->options.scroll_buttonlock ?
    
    680
    +				LIBINPUT_CONFIG_SCROLL_BUTTON_LOCK_ENABLED :
    
    681
    +				LIBINPUT_CONFIG_SCROLL_BUTTON_LOCK_DISABLED;
    
    682
    +
    
    683
    +		if (libinput_device_config_scroll_set_button_lock(device, buttonlock)
    
    684
    +		    != LIBINPUT_CONFIG_STATUS_SUCCESS) {
    
    685
    +			xf86IDrvMsg(pInfo, X_ERROR,
    
    686
    +				    "Failed to %s ScrollButtonLock\n",
    
    687
    +				    buttonlock ? "enable" : "disable");
    
    688
    +		}
    
    689
    +#endif
    
    675 690
     
    
    676 691
     		scroll_button = btn_xorg2linux(driver_data->options.scroll_button);
    
    677 692
     		if (libinput_device_config_scroll_set_button(device, scroll_button) != LIBINPUT_CONFIG_STATUS_SUCCESS)
    
    678 693
     			xf86IDrvMsg(pInfo, X_ERROR,
    
    679 694
     				    "Failed to set ScrollButton to %u\n",
    
    680 695
     				    driver_data->options.scroll_button);
    
    696
    +
    
    681 697
     	}
    
    682 698
     }
    
    683 699
     
    
    ... ... @@ -2826,6 +2842,32 @@ xf86libinput_parse_scrollbutton_option(InputInfoPtr pInfo,
    2826 2842
     	return scroll_button;
    
    2827 2843
     }
    
    2828 2844
     
    
    2845
    +static inline BOOL
    
    2846
    +xf86libinput_parse_scrollbuttonlock_option(InputInfoPtr pInfo,
    
    2847
    +					   struct libinput_device *device)
    
    2848
    +{
    
    2849
    +	bool dflt;
    
    2850
    +	BOOL buttonlock = FALSE;
    
    2851
    +
    
    2852
    +	if ((libinput_device_config_scroll_get_methods(device) &
    
    2853
    +	    LIBINPUT_CONFIG_SCROLL_ON_BUTTON_DOWN) == 0)
    
    2854
    +		return 0;
    
    2855
    +
    
    2856
    +#if HAVE_LIBINPUT_SCROLL_BUTTON_LOCK
    
    2857
    +	dflt = libinput_device_config_scroll_get_default_button_lock(device);
    
    2858
    +	buttonlock = xf86SetBoolOption(pInfo->options, "ScrollButtonLock", dflt);
    
    2859
    +
    
    2860
    +	if (libinput_device_config_scroll_set_button_lock(device, buttonlock)
    
    2861
    +						     != LIBINPUT_CONFIG_STATUS_SUCCESS) {
    
    2862
    +		xf86IDrvMsg(pInfo, X_ERROR,
    
    2863
    +			    "Failed to %s ScrollButtonLock\n",
    
    2864
    +			    buttonlock ? "enable" : "disable");
    
    2865
    +		buttonlock = libinput_device_config_scroll_get_button_lock(device);
    
    2866
    +	}
    
    2867
    +#endif
    
    2868
    +	return buttonlock;
    
    2869
    +}
    
    2870
    +
    
    2829 2871
     static inline unsigned int
    
    2830 2872
     xf86libinput_parse_clickmethod_option(InputInfoPtr pInfo,
    
    2831 2873
     				      struct libinput_device *device)
    
    ... ... @@ -3106,6 +3148,7 @@ xf86libinput_parse_options(InputInfoPtr pInfo,
    3106 3148
     	options->left_handed = xf86libinput_parse_lefthanded_option(pInfo, device);
    
    3107 3149
     	options->scroll_method = xf86libinput_parse_scroll_option(pInfo, device);
    
    3108 3150
     	options->scroll_button = xf86libinput_parse_scrollbutton_option(pInfo, device);
    
    3151
    +	options->scroll_buttonlock = xf86libinput_parse_scrollbuttonlock_option(pInfo, device);
    
    3109 3152
     	options->click_method = xf86libinput_parse_clickmethod_option(pInfo, device);
    
    3110 3153
     	options->middle_emulation = xf86libinput_parse_middleemulation_option(pInfo, device);
    
    3111 3154
     	options->disable_while_typing = xf86libinput_parse_disablewhiletyping_option(pInfo, device);
    
    ... ... @@ -3570,6 +3613,8 @@ static Atom prop_scroll_method_enabled;
    3570 3613
     static Atom prop_scroll_method_default;
    
    3571 3614
     static Atom prop_scroll_button;
    
    3572 3615
     static Atom prop_scroll_button_default;
    
    3616
    +static Atom prop_scroll_buttonlock;
    
    3617
    +static Atom prop_scroll_buttonlock_default;
    
    3573 3618
     static Atom prop_click_methods_available;
    
    3574 3619
     static Atom prop_click_method_enabled;
    
    3575 3620
     static Atom prop_click_method_default;
    
    ... ... @@ -4147,6 +4192,33 @@ LibinputSetPropertyScrollButton(DeviceIntPtr dev,
    4147 4192
     	return Success;
    
    4148 4193
     }
    
    4149 4194
     
    
    4195
    +static inline int
    
    4196
    +LibinputSetPropertyScrollButtonLock(DeviceIntPtr dev,
    
    4197
    +				    Atom atom,
    
    4198
    +				    XIPropertyValuePtr val,
    
    4199
    +				    BOOL checkonly)
    
    4200
    +{
    
    4201
    +	InputInfoPtr pInfo = dev->public.devicePrivate;
    
    4202
    +	struct xf86libinput *driver_data = pInfo->private;
    
    4203
    +	BOOL enabled;
    
    4204
    +
    
    4205
    +	if (val->format != 8 || val->type != XA_INTEGER || val->size != 1)
    
    4206
    +		return BadMatch;
    
    4207
    +
    
    4208
    +	enabled = *(BOOL*)val->data;
    
    4209
    +	if (checkonly) {
    
    4210
    +		if (enabled != 0 && enabled != 1)
    
    4211
    +			return BadValue;
    
    4212
    +
    
    4213
    +		if (!xf86libinput_check_device (dev, atom))
    
    4214
    +			return BadMatch;
    
    4215
    +	} else {
    
    4216
    +		driver_data->options.scroll_buttonlock = enabled;
    
    4217
    +	}
    
    4218
    +
    
    4219
    +	return Success;
    
    4220
    +}
    
    4221
    +
    
    4150 4222
     static inline int
    
    4151 4223
     LibinputSetPropertyClickMethod(DeviceIntPtr dev,
    
    4152 4224
     			       Atom atom,
    
    ... ... @@ -4521,6 +4593,8 @@ LibinputSetProperty(DeviceIntPtr dev, Atom atom, XIPropertyValuePtr val,
    4521 4593
     		rc = LibinputSetPropertyScrollMethods(dev, atom, val, checkonly);
    
    4522 4594
     	else if (atom == prop_scroll_button)
    
    4523 4595
     		rc = LibinputSetPropertyScrollButton(dev, atom, val, checkonly);
    
    4596
    +	else if (atom == prop_scroll_buttonlock)
    
    4597
    +		rc = LibinputSetPropertyScrollButtonLock(dev, atom, val, checkonly);
    
    4524 4598
     	else if (atom == prop_click_method_enabled)
    
    4525 4599
     		rc = LibinputSetPropertyClickMethod(dev, atom, val, checkonly);
    
    4526 4600
     	else if (atom == prop_middle_emulation)
    
    ... ... @@ -4561,6 +4635,7 @@ LibinputSetProperty(DeviceIntPtr dev, Atom atom, XIPropertyValuePtr val,
    4561 4635
     		 atom == prop_scroll_method_default ||
    
    4562 4636
     		 atom == prop_scroll_methods_available ||
    
    4563 4637
     		 atom == prop_scroll_button_default ||
    
    4638
    +		 atom == prop_scroll_buttonlock_default ||
    
    4564 4639
     		 atom == prop_click_method_default ||
    
    4565 4640
     		 atom == prop_click_methods_available ||
    
    4566 4641
     		 atom == prop_middle_emulation_default ||
    
    ... ... @@ -5051,10 +5126,11 @@ LibinputInitScrollMethodsProperty(DeviceIntPtr dev,
    5051 5126
     							  XA_INTEGER, 8,
    
    5052 5127
     							  ARRAY_SIZE(methods),
    
    5053 5128
     							  methods);
    
    5054
    -	/* Scroll button */
    
    5129
    +	/* Scroll button and scroll button lock */
    
    5055 5130
     	if (libinput_device_config_scroll_get_methods(device) &
    
    5056 5131
     	    LIBINPUT_CONFIG_SCROLL_ON_BUTTON_DOWN) {
    
    5057 5132
     		CARD32 scroll_button = driver_data->options.scroll_button;
    
    5133
    +		BOOL lock_enabled = driver_data->options.scroll_buttonlock;
    
    5058 5134
     
    
    5059 5135
     		prop_scroll_button = LibinputMakeProperty(dev,
    
    5060 5136
     							  LIBINPUT_PROP_SCROLL_BUTTON,
    
    ... ... @@ -5063,12 +5139,26 @@ LibinputInitScrollMethodsProperty(DeviceIntPtr dev,
    5063 5139
     		if (!prop_scroll_button)
    
    5064 5140
     			return;
    
    5065 5141
     
    
    5142
    +#if HAVE_LIBINPUT_SCROLL_BUTTON_LOCK
    
    5066 5143
     		scroll_button = libinput_device_config_scroll_get_default_button(device);
    
    5067 5144
     		scroll_button = btn_linux2xorg(scroll_button);
    
    5068 5145
     		prop_scroll_button_default = LibinputMakeProperty(dev,
    
    5069 5146
     								  LIBINPUT_PROP_SCROLL_BUTTON_DEFAULT,
    
    5070 5147
     								  XA_CARDINAL, 32,
    
    5071 5148
     								  1, &scroll_button);
    
    5149
    +		prop_scroll_buttonlock = LibinputMakeProperty(dev,
    
    5150
    +							      LIBINPUT_PROP_SCROLL_BUTTON_LOCK,
    
    5151
    +							      XA_INTEGER, 8,
    
    5152
    +							      1, &lock_enabled);
    
    5153
    +		if (!prop_scroll_buttonlock)
    
    5154
    +			return;
    
    5155
    +
    
    5156
    +		lock_enabled = libinput_device_config_scroll_get_default_button_lock(device);
    
    5157
    +		prop_scroll_buttonlock_default = LibinputMakeProperty(dev,
    
    5158
    +								      LIBINPUT_PROP_SCROLL_BUTTON_LOCK_DEFAULT,
    
    5159
    +								      XA_INTEGER, 8,
    
    5160
    +								      1, &lock_enabled);
    
    5161
    +#endif
    
    5072 5162
     	}
    
    5073 5163
     }
    
    5074 5164
     
    


  • Reply to: