mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2026-03-28 05:10:41 +01:00
Compare commits
11 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7f8113bb88 | ||
|
|
3a90c008e0 | ||
|
|
d1704a1f14 | ||
|
|
108f580dc1 | ||
|
|
62b10a79b8 | ||
|
|
d1571400d6 | ||
|
|
ae2ba96d60 | ||
|
|
ecc8cec3f7 | ||
|
|
cb0b88b60b | ||
|
|
da1bbce784 | ||
|
|
011c7d712e |
12 changed files with 99 additions and 9 deletions
|
|
@ -190,3 +190,6 @@ AttrInputPropEnable=INPUT_PROP_BUTTONPAD;INPUT_PROP_POINTER;
|
||||||
AttrPointingStickIntegration=internal|external
|
AttrPointingStickIntegration=internal|external
|
||||||
Indicates the integration of the pointing stick. This is a string enum.
|
Indicates the integration of the pointing stick. This is a string enum.
|
||||||
Only needed for external pointing sticks. These are rare.
|
Only needed for external pointing sticks. These are rare.
|
||||||
|
AttrTabletSmoothing=1|0
|
||||||
|
Enables (1) or disables (0) input smoothing for tablet devices. Smoothing is enabled
|
||||||
|
by default, except on AES devices.
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
project('libinput', 'c',
|
project('libinput', 'c',
|
||||||
version : '1.18.0',
|
version : '1.18.1',
|
||||||
license : 'MIT/Expat',
|
license : 'MIT/Expat',
|
||||||
default_options : [ 'c_std=gnu99', 'warning_level=2' ],
|
default_options : [ 'c_std=gnu99', 'warning_level=2' ],
|
||||||
meson_version : '>= 0.47.0')
|
meson_version : '>= 0.47.0')
|
||||||
|
|
|
||||||
5
quirks/50-framework.quirks
Normal file
5
quirks/50-framework.quirks
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
[Framework Laptop Touchpad]
|
||||||
|
MatchName=PIXA3854:00 093A:0274 Touchpad
|
||||||
|
MatchUdevType=touchpad
|
||||||
|
MatchDMIModalias=dmi:*svnFramework:pnLaptop:*
|
||||||
|
AttrEventCodeDisable=BTN_RIGHT
|
||||||
9
quirks/50-system-chuwi.quirks
Normal file
9
quirks/50-system-chuwi.quirks
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
[Chuwi Gemibook]
|
||||||
|
MatchName=HTIX5288:00 093A:1336 Touchpad
|
||||||
|
MatchUdevType=touchpad
|
||||||
|
AttrEventCodeDisable=BTN_RIGHT
|
||||||
|
|
||||||
|
[Chuwi AeroBook Plus]
|
||||||
|
MatchName=SYNA3602:01 093A:1336 Touchpad
|
||||||
|
MatchUdevType=touchpad
|
||||||
|
AttrEventCodeDisable=BTN_RIGHT
|
||||||
|
|
@ -82,6 +82,11 @@ MatchName=*DualPoint Stick
|
||||||
MatchDMIModalias=dmi:*svnDellInc.:pnLatitudeE7470*
|
MatchDMIModalias=dmi:*svnDellInc.:pnLatitudeE7470*
|
||||||
AttrTrackpointMultiplier=0.125
|
AttrTrackpointMultiplier=0.125
|
||||||
|
|
||||||
|
[Latitude 7480 Touchpad]
|
||||||
|
MatchName=DLL07A0*
|
||||||
|
MatchDMIModalias=dmi:**bvnDellInc.:*:pnLatitude7480*
|
||||||
|
AttrPressureRange=35:34
|
||||||
|
|
||||||
[Latitude 7490 Trackpoint]
|
[Latitude 7490 Trackpoint]
|
||||||
MatchName=*Mouse
|
MatchName=*Mouse
|
||||||
MatchUdevType=pointingstick
|
MatchUdevType=pointingstick
|
||||||
|
|
|
||||||
7
quirks/50-system-huawei.quirks
Normal file
7
quirks/50-system-huawei.quirks
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
# Clickpad that announces BTN_RIGHT
|
||||||
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1972370
|
||||||
|
[Huawei MateBook 2020 Touchpad]
|
||||||
|
MatchName=ELAN2604:00 04F3:3114 Touchpad
|
||||||
|
MatchUdevType=touchpad
|
||||||
|
MatchDMIModalias=dmi:*svnHUAWEI:*pvrM1010*
|
||||||
|
AttrEventCodeDisable=BTN_RIGHT
|
||||||
|
|
@ -144,6 +144,12 @@ MatchVendor=0x06CB
|
||||||
MatchProduct=0xCE37
|
MatchProduct=0xCE37
|
||||||
AttrEventCodeDisable=ABS_MT_PRESSURE;ABS_PRESSURE;
|
AttrEventCodeDisable=ABS_MT_PRESSURE;ABS_PRESSURE;
|
||||||
|
|
||||||
|
[Lenovo Yoga C930 Tablet]
|
||||||
|
MatchBus=i2c
|
||||||
|
MatchVendor=0x056A
|
||||||
|
MatchProduct=0x5196
|
||||||
|
AttrTabletSmoothing=1
|
||||||
|
|
||||||
# Lenovo Carbon X1 6th gen (RMI4 only, PS/2 is broken on this device,
|
# Lenovo Carbon X1 6th gen (RMI4 only, PS/2 is broken on this device,
|
||||||
# sends bogus ABS_MT_TOOL_TYPE events for MT_TOOL_PALM
|
# sends bogus ABS_MT_TOOL_TYPE events for MT_TOOL_PALM
|
||||||
[Lenovo Carbon X1 6th gen]
|
[Lenovo Carbon X1 6th gen]
|
||||||
|
|
@ -162,6 +168,11 @@ MatchName=AT Translated Set 2 keyboard
|
||||||
MatchDMIModalias=dmi:*svnLENOVO:*pvrThinkPadX60Tablet:*
|
MatchDMIModalias=dmi:*svnLENOVO:*pvrThinkPadX60Tablet:*
|
||||||
ModelTabletModeNoSuspend=1
|
ModelTabletModeNoSuspend=1
|
||||||
|
|
||||||
|
[Lenovo X61 Tablet]
|
||||||
|
MatchName=AT Translated Set 2 keyboard
|
||||||
|
MatchDMIModalias=dmi:*svnLENOVO:*pvrThinkPadX61Tablet:*
|
||||||
|
ModelTabletModeNoSuspend=1
|
||||||
|
|
||||||
# Lenovo X220 Tablet special bezel buttons are associated to the
|
# Lenovo X220 Tablet special bezel buttons are associated to the
|
||||||
# keyboard and would therefore mistakenly be deactivated as well.
|
# keyboard and would therefore mistakenly be deactivated as well.
|
||||||
# See https://gitlab.freedesktop.org/libinput/libinput/issues/154
|
# See https://gitlab.freedesktop.org/libinput/libinput/issues/154
|
||||||
|
|
@ -237,4 +248,10 @@ MatchVendor=0x27C6
|
||||||
MatchProduct=0x01E8
|
MatchProduct=0x01E8
|
||||||
AttrEventCodeDisable=ABS_MT_PRESSURE;ABS_PRESSURE;
|
AttrEventCodeDisable=ABS_MT_PRESSURE;ABS_PRESSURE;
|
||||||
|
|
||||||
|
# Duet 7i tablet switch activated by folding keyboard cover, or removing it.
|
||||||
|
# We must not disable volume rocker 'keyboard'.
|
||||||
|
[Lenovo Duet 7i]
|
||||||
|
MatchName=AT Raw Set 2 keyboard
|
||||||
|
MatchDMIModalias=dmi:*svnLENOVO:*pvrYogaDuet713IML05:*
|
||||||
|
ModelTabletModeNoSuspend=1
|
||||||
|
|
||||||
|
|
|
||||||
7
quirks/50-system-purism.quirks
Normal file
7
quirks/50-system-purism.quirks
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
# Clickpad that announces BTN_RIGHT
|
||||||
|
# https://gitlab.freedesktop.org/libinput/libinput/-/issues/629
|
||||||
|
[Librem 14v1 Touchpad]
|
||||||
|
MatchName=HTIX5288:00 0911:5288 Touchpad
|
||||||
|
MatchUdevType=touchpad
|
||||||
|
MatchDMIModalias=dmi:*svnPurism:*pnLibrem14*
|
||||||
|
AttrEventCodeDisable=BTN_RIGHT
|
||||||
|
|
@ -2344,18 +2344,17 @@ tablet_init_left_handed(struct evdev_device *device)
|
||||||
tablet_change_to_left_handed);
|
tablet_change_to_left_handed);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static bool
|
||||||
tablet_init_smoothing(struct evdev_device *device,
|
tablet_is_aes(struct evdev_device *device,
|
||||||
struct tablet_dispatch *tablet)
|
struct tablet_dispatch *tablet)
|
||||||
{
|
{
|
||||||
size_t history_size = ARRAY_LENGTH(tablet->history.samples);
|
bool is_aes = false;
|
||||||
#if HAVE_LIBWACOM
|
#if HAVE_LIBWACOM
|
||||||
const char *devnode;
|
const char *devnode;
|
||||||
WacomDeviceDatabase *db;
|
WacomDeviceDatabase *db;
|
||||||
WacomDevice *libwacom_device = NULL;
|
WacomDevice *libwacom_device = NULL;
|
||||||
const int *stylus_ids;
|
const int *stylus_ids;
|
||||||
int nstyli;
|
int nstyli;
|
||||||
bool is_aes = false;
|
|
||||||
int vid = evdev_device_get_id_vendor(device);
|
int vid = evdev_device_get_id_vendor(device);
|
||||||
|
|
||||||
/* Wacom-specific check for whether smoothing is required:
|
/* Wacom-specific check for whether smoothing is required:
|
||||||
|
|
@ -2384,12 +2383,36 @@ tablet_init_smoothing(struct evdev_device *device,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_aes)
|
|
||||||
history_size = 1;
|
|
||||||
|
|
||||||
libwacom_destroy(libwacom_device);
|
libwacom_destroy(libwacom_device);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
#endif
|
#endif
|
||||||
|
return is_aes;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
tablet_init_smoothing(struct evdev_device *device,
|
||||||
|
struct tablet_dispatch *tablet)
|
||||||
|
{
|
||||||
|
size_t history_size = ARRAY_LENGTH(tablet->history.samples);
|
||||||
|
struct quirks_context *quirks = NULL;
|
||||||
|
struct quirks *q = NULL;
|
||||||
|
bool use_smoothing = true;
|
||||||
|
|
||||||
|
quirks = evdev_libinput_context(device)->quirks;
|
||||||
|
q = quirks_fetch_for_device(quirks, device->udev_device);
|
||||||
|
|
||||||
|
/* By default, always enable smoothing except on AES devices.
|
||||||
|
* AttrTabletSmoothing can override this, if necessary.
|
||||||
|
*/
|
||||||
|
if (!q || !quirks_get_bool(q, QUIRK_ATTR_TABLET_SMOOTHING, &use_smoothing))
|
||||||
|
use_smoothing = !tablet_is_aes(device, tablet);
|
||||||
|
|
||||||
|
/* Setting the history size to 1 means we never do any actual smoothing. */
|
||||||
|
if (!use_smoothing)
|
||||||
|
history_size = 1;
|
||||||
|
|
||||||
|
quirks_unref(q);
|
||||||
tablet->history.size = history_size;
|
tablet->history.size = history_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
12
src/quirks.c
12
src/quirks.c
|
|
@ -280,6 +280,7 @@ quirk_get_name(enum quirk q)
|
||||||
case QUIRK_ATTR_TRACKPOINT_MULTIPLIER: return "AttrTrackpointMultiplier";
|
case QUIRK_ATTR_TRACKPOINT_MULTIPLIER: return "AttrTrackpointMultiplier";
|
||||||
case QUIRK_ATTR_THUMB_PRESSURE_THRESHOLD: return "AttrThumbPressureThreshold";
|
case QUIRK_ATTR_THUMB_PRESSURE_THRESHOLD: return "AttrThumbPressureThreshold";
|
||||||
case QUIRK_ATTR_USE_VELOCITY_AVERAGING: return "AttrUseVelocityAveraging";
|
case QUIRK_ATTR_USE_VELOCITY_AVERAGING: return "AttrUseVelocityAveraging";
|
||||||
|
case QUIRK_ATTR_TABLET_SMOOTHING: return "AttrTabletSmoothing";
|
||||||
case QUIRK_ATTR_THUMB_SIZE_THRESHOLD: return "AttrThumbSizeThreshold";
|
case QUIRK_ATTR_THUMB_SIZE_THRESHOLD: return "AttrThumbSizeThreshold";
|
||||||
case QUIRK_ATTR_MSC_TIMESTAMP: return "AttrMscTimestamp";
|
case QUIRK_ATTR_MSC_TIMESTAMP: return "AttrMscTimestamp";
|
||||||
case QUIRK_ATTR_EVENT_CODE_DISABLE: return "AttrEventCodeDisable";
|
case QUIRK_ATTR_EVENT_CODE_DISABLE: return "AttrEventCodeDisable";
|
||||||
|
|
@ -796,6 +797,17 @@ parse_attr(struct quirks_context *ctx,
|
||||||
p->type = PT_BOOL;
|
p->type = PT_BOOL;
|
||||||
p->value.b = b;
|
p->value.b = b;
|
||||||
rc = true;
|
rc = true;
|
||||||
|
} else if (streq(key, quirk_get_name(QUIRK_ATTR_TABLET_SMOOTHING))) {
|
||||||
|
p->id = QUIRK_ATTR_TABLET_SMOOTHING;
|
||||||
|
if (streq(value, "1"))
|
||||||
|
b = true;
|
||||||
|
else if (streq(value, "0"))
|
||||||
|
b = false;
|
||||||
|
else
|
||||||
|
goto out;
|
||||||
|
p->type = PT_BOOL;
|
||||||
|
p->value.b = b;
|
||||||
|
rc = true;
|
||||||
} else if (streq(key, quirk_get_name(QUIRK_ATTR_THUMB_PRESSURE_THRESHOLD))) {
|
} else if (streq(key, quirk_get_name(QUIRK_ATTR_THUMB_PRESSURE_THRESHOLD))) {
|
||||||
p->id = QUIRK_ATTR_THUMB_PRESSURE_THRESHOLD;
|
p->id = QUIRK_ATTR_THUMB_PRESSURE_THRESHOLD;
|
||||||
if (!safe_atou(value, &v))
|
if (!safe_atou(value, &v))
|
||||||
|
|
|
||||||
|
|
@ -103,6 +103,7 @@ enum quirk {
|
||||||
QUIRK_ATTR_TRACKPOINT_MULTIPLIER,
|
QUIRK_ATTR_TRACKPOINT_MULTIPLIER,
|
||||||
QUIRK_ATTR_THUMB_PRESSURE_THRESHOLD,
|
QUIRK_ATTR_THUMB_PRESSURE_THRESHOLD,
|
||||||
QUIRK_ATTR_USE_VELOCITY_AVERAGING,
|
QUIRK_ATTR_USE_VELOCITY_AVERAGING,
|
||||||
|
QUIRK_ATTR_TABLET_SMOOTHING,
|
||||||
QUIRK_ATTR_THUMB_SIZE_THRESHOLD,
|
QUIRK_ATTR_THUMB_SIZE_THRESHOLD,
|
||||||
QUIRK_ATTR_MSC_TIMESTAMP,
|
QUIRK_ATTR_MSC_TIMESTAMP,
|
||||||
QUIRK_ATTR_EVENT_CODE_DISABLE,
|
QUIRK_ATTR_EVENT_CODE_DISABLE,
|
||||||
|
|
|
||||||
|
|
@ -732,6 +732,7 @@ tools_list_device_quirks(struct quirks_context *ctx,
|
||||||
callback(userdata, buf);
|
callback(userdata, buf);
|
||||||
break;
|
break;
|
||||||
case QUIRK_ATTR_USE_VELOCITY_AVERAGING:
|
case QUIRK_ATTR_USE_VELOCITY_AVERAGING:
|
||||||
|
case QUIRK_ATTR_TABLET_SMOOTHING:
|
||||||
snprintf(buf, sizeof(buf), "%s=1", name);
|
snprintf(buf, sizeof(buf), "%s=1", name);
|
||||||
callback(userdata, buf);
|
callback(userdata, buf);
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue