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

[Git][xorg-team/lib/libinput][debian-unstable] 14 commits: quirks: add a quirk for the Huawei Matebook 2020 touchpad



Title: GitLab

Timo Aaltonen pushed to branch debian-unstable at X Strike Force / lib / libinput

Commits:

13 changed files:

Changes:

  • debian/changelog
    1
    +libinput (1.18.1-1) experimental; urgency=medium
    
    2
    +
    
    3
    +  * New upstream release.
    
    4
    +
    
    5
    + -- Timo Aaltonen <tjaalton@debian.org>  Tue, 10 Aug 2021 14:23:36 +0300
    
    6
    +
    
    1 7
     libinput (1.18.0-1) experimental; urgency=medium
    
    2 8
     
    
    3 9
       * New upstream release.
    

  • doc/user/device-quirks.rst
    ... ... @@ -190,3 +190,6 @@ AttrInputPropEnable=INPUT_PROP_BUTTONPAD;INPUT_PROP_POINTER;
    190 190
     AttrPointingStickIntegration=internal|external
    
    191 191
         Indicates the integration of the pointing stick. This is a string enum.
    
    192 192
         Only needed for external pointing sticks. These are rare.
    
    193
    +AttrTabletSmoothing=1|0
    
    194
    +    Enables (1) or disables (0) input smoothing for tablet devices. Smoothing is enabled
    
    195
    +    by default, except on AES devices.

  • meson.build
    1 1
     project('libinput', 'c',
    
    2
    -	version : '1.18.0',
    
    2
    +	version : '1.18.1',
    
    3 3
     	license : 'MIT/Expat',
    
    4 4
     	default_options : [ 'c_std=gnu99', 'warning_level=2' ],
    
    5 5
     	meson_version : '>= 0.47.0')
    

  • quirks/50-framework.quirks
    1
    +[Framework Laptop Touchpad]
    
    2
    +MatchName=PIXA3854:00 093A:0274 Touchpad
    
    3
    +MatchUdevType=touchpad
    
    4
    +MatchDMIModalias=dmi:*svnFramework:pnLaptop:*
    
    5
    +AttrEventCodeDisable=BTN_RIGHT

  • quirks/50-system-chuwi.quirks
    1
    +[Chuwi Gemibook]
    
    2
    +MatchName=HTIX5288:00 093A:1336 Touchpad
    
    3
    +MatchUdevType=touchpad
    
    4
    +AttrEventCodeDisable=BTN_RIGHT
    
    5
    +
    
    6
    +[Chuwi AeroBook Plus]
    
    7
    +MatchName=SYNA3602:01 093A:1336 Touchpad
    
    8
    +MatchUdevType=touchpad
    
    9
    +AttrEventCodeDisable=BTN_RIGHT

  • quirks/50-system-dell.quirks
    ... ... @@ -82,6 +82,11 @@ MatchName=*DualPoint Stick
    82 82
     MatchDMIModalias=dmi:*svnDellInc.:pnLatitudeE7470*
    
    83 83
     AttrTrackpointMultiplier=0.125
    
    84 84
     
    
    85
    +[Latitude 7480 Touchpad]
    
    86
    +MatchName=DLL07A0*
    
    87
    +MatchDMIModalias=dmi:**bvnDellInc.:*:pnLatitude7480*
    
    88
    +AttrPressureRange=35:34
    
    89
    +
    
    85 90
     [Latitude 7490 Trackpoint]
    
    86 91
     MatchName=*Mouse
    
    87 92
     MatchUdevType=pointingstick
    

  • quirks/50-system-huawei.quirks
    1
    +# Clickpad that announces BTN_RIGHT
    
    2
    +# https://bugzilla.redhat.com/show_bug.cgi?id=1972370
    
    3
    +[Huawei MateBook 2020 Touchpad]
    
    4
    +MatchName=ELAN2604:00 04F3:3114 Touchpad
    
    5
    +MatchUdevType=touchpad
    
    6
    +MatchDMIModalias=dmi:*svnHUAWEI:*pvrM1010*
    
    7
    +AttrEventCodeDisable=BTN_RIGHT

  • quirks/50-system-lenovo.quirks
    ... ... @@ -144,6 +144,12 @@ MatchVendor=0x06CB
    144 144
     MatchProduct=0xCE37
    
    145 145
     AttrEventCodeDisable=ABS_MT_PRESSURE;ABS_PRESSURE;
    
    146 146
     
    
    147
    +[Lenovo Yoga C930 Tablet]
    
    148
    +MatchBus=i2c
    
    149
    +MatchVendor=0x056A
    
    150
    +MatchProduct=0x5196
    
    151
    +AttrTabletSmoothing=1
    
    152
    +
    
    147 153
     # Lenovo Carbon X1 6th gen (RMI4 only, PS/2 is broken on this device,
    
    148 154
     # sends bogus ABS_MT_TOOL_TYPE events for MT_TOOL_PALM
    
    149 155
     [Lenovo Carbon X1 6th gen]
    
    ... ... @@ -162,6 +168,11 @@ MatchName=AT Translated Set 2 keyboard
    162 168
     MatchDMIModalias=dmi:*svnLENOVO:*pvrThinkPadX60Tablet:*
    
    163 169
     ModelTabletModeNoSuspend=1
    
    164 170
     
    
    171
    +[Lenovo X61 Tablet]
    
    172
    +MatchName=AT Translated Set 2 keyboard
    
    173
    +MatchDMIModalias=dmi:*svnLENOVO:*pvrThinkPadX61Tablet:*
    
    174
    +ModelTabletModeNoSuspend=1
    
    175
    +
    
    165 176
     # Lenovo X220 Tablet special bezel buttons are associated to the
    
    166 177
     # keyboard and would therefore mistakenly be deactivated as well.
    
    167 178
     # See https://gitlab.freedesktop.org/libinput/libinput/issues/154
    
    ... ... @@ -237,4 +248,10 @@ MatchVendor=0x27C6
    237 248
     MatchProduct=0x01E8
    
    238 249
     AttrEventCodeDisable=ABS_MT_PRESSURE;ABS_PRESSURE;
    
    239 250
     
    
    251
    +# Duet 7i tablet switch activated by folding keyboard cover, or removing it.
    
    252
    +# We must not disable volume rocker 'keyboard'.
    
    253
    +[Lenovo Duet 7i]
    
    254
    +MatchName=AT Raw Set 2 keyboard
    
    255
    +MatchDMIModalias=dmi:*svnLENOVO:*pvrYogaDuet713IML05:*
    
    256
    +ModelTabletModeNoSuspend=1
    
    240 257
     

  • quirks/50-system-purism.quirks
    1
    +# Clickpad that announces BTN_RIGHT
    
    2
    +# https://gitlab.freedesktop.org/libinput/libinput/-/issues/629
    
    3
    +[Librem 14v1 Touchpad]
    
    4
    +MatchName=HTIX5288:00 0911:5288 Touchpad
    
    5
    +MatchUdevType=touchpad
    
    6
    +MatchDMIModalias=dmi:*svnPurism:*pnLibrem14*
    
    7
    +AttrEventCodeDisable=BTN_RIGHT

  • src/evdev-tablet.c
    ... ... @@ -2344,18 +2344,17 @@ tablet_init_left_handed(struct evdev_device *device)
    2344 2344
     				       tablet_change_to_left_handed);
    
    2345 2345
     }
    
    2346 2346
     
    
    2347
    -static void
    
    2348
    -tablet_init_smoothing(struct evdev_device *device,
    
    2349
    -		      struct tablet_dispatch *tablet)
    
    2347
    +static bool
    
    2348
    +tablet_is_aes(struct evdev_device *device,
    
    2349
    +	      struct tablet_dispatch *tablet)
    
    2350 2350
     {
    
    2351
    -	size_t history_size = ARRAY_LENGTH(tablet->history.samples);
    
    2351
    +	bool is_aes = false;
    
    2352 2352
     #if HAVE_LIBWACOM
    
    2353 2353
     	const char *devnode;
    
    2354 2354
     	WacomDeviceDatabase *db;
    
    2355 2355
     	WacomDevice *libwacom_device = NULL;
    
    2356 2356
     	const int *stylus_ids;
    
    2357 2357
     	int nstyli;
    
    2358
    -	bool is_aes = false;
    
    2359 2358
     	int vid = evdev_device_get_id_vendor(device);
    
    2360 2359
     
    
    2361 2360
     	/* Wacom-specific check for whether smoothing is required:
    
    ... ... @@ -2384,12 +2383,36 @@ tablet_init_smoothing(struct evdev_device *device,
    2384 2383
     		}
    
    2385 2384
     	}
    
    2386 2385
     
    
    2387
    -	if (is_aes)
    
    2388
    -		history_size = 1;
    
    2389
    -
    
    2390 2386
     	libwacom_destroy(libwacom_device);
    
    2387
    +
    
    2391 2388
     out:
    
    2392 2389
     #endif
    
    2390
    +	return is_aes;
    
    2391
    +}
    
    2392
    +
    
    2393
    +static void
    
    2394
    +tablet_init_smoothing(struct evdev_device *device,
    
    2395
    +		      struct tablet_dispatch *tablet)
    
    2396
    +{
    
    2397
    +	size_t history_size = ARRAY_LENGTH(tablet->history.samples);
    
    2398
    +	struct quirks_context *quirks = NULL;
    
    2399
    +	struct quirks *q = NULL;
    
    2400
    +	bool use_smoothing = true;
    
    2401
    +
    
    2402
    +	quirks = evdev_libinput_context(device)->quirks;
    
    2403
    +	q = quirks_fetch_for_device(quirks, device->udev_device);
    
    2404
    +
    
    2405
    +	/* By default, always enable smoothing except on AES devices.
    
    2406
    +	 * AttrTabletSmoothing can override this, if necessary.
    
    2407
    +	 */
    
    2408
    +	if (!q || !quirks_get_bool(q, QUIRK_ATTR_TABLET_SMOOTHING, &use_smoothing))
    
    2409
    +		use_smoothing = !tablet_is_aes(device, tablet);
    
    2410
    +
    
    2411
    +	/* Setting the history size to 1 means we never do any actual smoothing. */
    
    2412
    +	if (!use_smoothing)
    
    2413
    +		history_size = 1;
    
    2414
    +
    
    2415
    +	quirks_unref(q);
    
    2393 2416
     	tablet->history.size = history_size;
    
    2394 2417
     }
    
    2395 2418
     
    

  • src/quirks.c
    ... ... @@ -280,6 +280,7 @@ quirk_get_name(enum quirk q)
    280 280
     	case QUIRK_ATTR_TRACKPOINT_MULTIPLIER:		return "AttrTrackpointMultiplier";
    
    281 281
     	case QUIRK_ATTR_THUMB_PRESSURE_THRESHOLD:	return "AttrThumbPressureThreshold";
    
    282 282
     	case QUIRK_ATTR_USE_VELOCITY_AVERAGING:		return "AttrUseVelocityAveraging";
    
    283
    +	case QUIRK_ATTR_TABLET_SMOOTHING:               return "AttrTabletSmoothing";
    
    283 284
     	case QUIRK_ATTR_THUMB_SIZE_THRESHOLD:		return "AttrThumbSizeThreshold";
    
    284 285
     	case QUIRK_ATTR_MSC_TIMESTAMP:			return "AttrMscTimestamp";
    
    285 286
     	case QUIRK_ATTR_EVENT_CODE_DISABLE:		return "AttrEventCodeDisable";
    
    ... ... @@ -796,6 +797,17 @@ parse_attr(struct quirks_context *ctx,
    796 797
     		p->type = PT_BOOL;
    
    797 798
     		p->value.b = b;
    
    798 799
     		rc = true;
    
    800
    +	} else if (streq(key, quirk_get_name(QUIRK_ATTR_TABLET_SMOOTHING))) {
    
    801
    +		p->id = QUIRK_ATTR_TABLET_SMOOTHING;
    
    802
    +		if (streq(value, "1"))
    
    803
    +			b = true;
    
    804
    +		else if (streq(value, "0"))
    
    805
    +			b = false;
    
    806
    +		else
    
    807
    +			goto out;
    
    808
    +		p->type = PT_BOOL;
    
    809
    +		p->value.b = b;
    
    810
    +		rc = true;
    
    799 811
     	} else if (streq(key, quirk_get_name(QUIRK_ATTR_THUMB_PRESSURE_THRESHOLD))) {
    
    800 812
     		p->id = QUIRK_ATTR_THUMB_PRESSURE_THRESHOLD;
    
    801 813
     		if (!safe_atou(value, &v))
    

  • src/quirks.h
    ... ... @@ -103,6 +103,7 @@ enum quirk {
    103 103
     	QUIRK_ATTR_TRACKPOINT_MULTIPLIER,
    
    104 104
     	QUIRK_ATTR_THUMB_PRESSURE_THRESHOLD,
    
    105 105
     	QUIRK_ATTR_USE_VELOCITY_AVERAGING,
    
    106
    +	QUIRK_ATTR_TABLET_SMOOTHING,
    
    106 107
     	QUIRK_ATTR_THUMB_SIZE_THRESHOLD,
    
    107 108
     	QUIRK_ATTR_MSC_TIMESTAMP,
    
    108 109
     	QUIRK_ATTR_EVENT_CODE_DISABLE,
    

  • tools/shared.c
    ... ... @@ -732,6 +732,7 @@ tools_list_device_quirks(struct quirks_context *ctx,
    732 732
     				callback(userdata, buf);
    
    733 733
     				break;
    
    734 734
     			case QUIRK_ATTR_USE_VELOCITY_AVERAGING:
    
    735
    +			case QUIRK_ATTR_TABLET_SMOOTHING:
    
    735 736
     				snprintf(buf, sizeof(buf), "%s=1", name);
    
    736 737
     				callback(userdata, buf);
    
    737 738
     				break;
    


  • Reply to: