mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2026-02-03 18:10:28 +01:00
touchpad: allow custom profiles on touchpads
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
d8bd650540
commit
f6d61dc314
2 changed files with 52 additions and 67 deletions
|
|
@ -2562,26 +2562,8 @@ tp_init_slots(struct tp_dispatch *tp,
|
|||
static uint32_t
|
||||
tp_accel_config_get_profiles(struct libinput_device *libinput_device)
|
||||
{
|
||||
return LIBINPUT_CONFIG_ACCEL_PROFILE_NONE;
|
||||
}
|
||||
|
||||
static enum libinput_config_status
|
||||
tp_accel_config_set_profile(struct libinput_device *libinput_device,
|
||||
enum libinput_config_accel_profile profile)
|
||||
{
|
||||
return LIBINPUT_CONFIG_STATUS_UNSUPPORTED;
|
||||
}
|
||||
|
||||
static enum libinput_config_accel_profile
|
||||
tp_accel_config_get_profile(struct libinput_device *libinput_device)
|
||||
{
|
||||
return LIBINPUT_CONFIG_ACCEL_PROFILE_NONE;
|
||||
}
|
||||
|
||||
static enum libinput_config_accel_profile
|
||||
tp_accel_config_get_default_profile(struct libinput_device *libinput_device)
|
||||
{
|
||||
return LIBINPUT_CONFIG_ACCEL_PROFILE_NONE;
|
||||
return LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE |
|
||||
LIBINPUT_CONFIG_ACCEL_PROFILE_DEVICE_SPEED_CURVE;
|
||||
}
|
||||
|
||||
static bool
|
||||
|
|
@ -2618,12 +2600,9 @@ tp_init_accel(struct tp_dispatch *tp)
|
|||
|
||||
evdev_device_init_pointer_acceleration(tp->device, filter);
|
||||
|
||||
/* we override the profile hooks for accel configuration with hooks
|
||||
* that don't allow selection of profiles */
|
||||
/* override the profile hooks for get_profile because we don't
|
||||
* have the flat profile on touchpads */
|
||||
device->pointer.config.get_profiles = tp_accel_config_get_profiles;
|
||||
device->pointer.config.set_profile = tp_accel_config_set_profile;
|
||||
device->pointer.config.get_profile = tp_accel_config_get_profile;
|
||||
device->pointer.config.get_default_profile = tp_accel_config_get_default_profile;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1365,7 +1365,49 @@ START_TEST(pointer_accel_direction_change)
|
|||
}
|
||||
END_TEST
|
||||
|
||||
static inline void
|
||||
verify_set_profile(struct libinput_device *device,
|
||||
enum libinput_config_accel_profile profile)
|
||||
{
|
||||
enum libinput_config_accel_profile p;
|
||||
enum libinput_config_status status;
|
||||
|
||||
status = libinput_device_config_accel_set_profile(device, profile);
|
||||
ck_assert_int_eq(status, LIBINPUT_CONFIG_STATUS_SUCCESS);
|
||||
p = libinput_device_config_accel_get_profile(device);
|
||||
ck_assert_int_eq(profile, p);
|
||||
}
|
||||
|
||||
START_TEST(pointer_accel_profile_defaults)
|
||||
{
|
||||
struct litest_device *dev = litest_current_device();
|
||||
struct libinput_device *device = dev->libinput_device;
|
||||
enum libinput_config_accel_profile profile;
|
||||
uint32_t profiles;
|
||||
|
||||
ck_assert(libinput_device_config_accel_is_available(device));
|
||||
|
||||
profile = libinput_device_config_accel_get_default_profile(device);
|
||||
ck_assert_int_eq(profile, LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE);
|
||||
|
||||
profile = libinput_device_config_accel_get_profile(device);
|
||||
ck_assert_int_eq(profile, LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE);
|
||||
|
||||
profiles = libinput_device_config_accel_get_profiles(device);
|
||||
ck_assert(profiles & LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE);
|
||||
ck_assert(profiles & LIBINPUT_CONFIG_ACCEL_PROFILE_FLAT);
|
||||
ck_assert(profiles & LIBINPUT_CONFIG_ACCEL_PROFILE_DEVICE_SPEED_CURVE);
|
||||
|
||||
verify_set_profile(device, LIBINPUT_CONFIG_ACCEL_PROFILE_FLAT);
|
||||
|
||||
profile = libinput_device_config_accel_get_default_profile(device);
|
||||
ck_assert_int_eq(profile, LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE);
|
||||
|
||||
verify_set_profile(device, LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE);
|
||||
}
|
||||
END_TEST
|
||||
|
||||
START_TEST(pointer_accel_profile_defaults_touchpad)
|
||||
{
|
||||
struct litest_device *dev = litest_current_device();
|
||||
struct libinput_device *device = dev->libinput_device;
|
||||
|
|
@ -1383,55 +1425,19 @@ START_TEST(pointer_accel_profile_defaults)
|
|||
|
||||
profiles = libinput_device_config_accel_get_profiles(device);
|
||||
ck_assert(profiles & LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE);
|
||||
ck_assert(profiles & LIBINPUT_CONFIG_ACCEL_PROFILE_FLAT);
|
||||
|
||||
status = libinput_device_config_accel_set_profile(device,
|
||||
LIBINPUT_CONFIG_ACCEL_PROFILE_FLAT);
|
||||
ck_assert_int_eq(status, LIBINPUT_CONFIG_STATUS_SUCCESS);
|
||||
profile = libinput_device_config_accel_get_profile(device);
|
||||
ck_assert_int_eq(profile, LIBINPUT_CONFIG_ACCEL_PROFILE_FLAT);
|
||||
ck_assert(profiles & LIBINPUT_CONFIG_ACCEL_PROFILE_DEVICE_SPEED_CURVE);
|
||||
|
||||
verify_set_profile(device, LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE);
|
||||
verify_set_profile(device, LIBINPUT_CONFIG_ACCEL_PROFILE_DEVICE_SPEED_CURVE);
|
||||
profile = libinput_device_config_accel_get_default_profile(device);
|
||||
ck_assert_int_eq(profile, LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE);
|
||||
|
||||
status = libinput_device_config_accel_set_profile(device,
|
||||
LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE);
|
||||
ck_assert_int_eq(status, LIBINPUT_CONFIG_STATUS_SUCCESS);
|
||||
profile = libinput_device_config_accel_get_profile(device);
|
||||
ck_assert_int_eq(profile, LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE);
|
||||
}
|
||||
END_TEST
|
||||
|
||||
START_TEST(pointer_accel_profile_defaults_noprofile)
|
||||
{
|
||||
struct litest_device *dev = litest_current_device();
|
||||
struct libinput_device *device = dev->libinput_device;
|
||||
enum libinput_config_status status;
|
||||
enum libinput_config_accel_profile profile;
|
||||
uint32_t profiles;
|
||||
|
||||
ck_assert(libinput_device_config_accel_is_available(device));
|
||||
|
||||
profile = libinput_device_config_accel_get_default_profile(device);
|
||||
ck_assert_int_eq(profile, LIBINPUT_CONFIG_ACCEL_PROFILE_NONE);
|
||||
|
||||
profile = libinput_device_config_accel_get_profile(device);
|
||||
ck_assert_int_eq(profile, LIBINPUT_CONFIG_ACCEL_PROFILE_NONE);
|
||||
|
||||
profiles = libinput_device_config_accel_get_profiles(device);
|
||||
ck_assert_int_eq(profiles, LIBINPUT_CONFIG_ACCEL_PROFILE_NONE);
|
||||
|
||||
verify_set_profile(device, LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE);
|
||||
status = libinput_device_config_accel_set_profile(device,
|
||||
LIBINPUT_CONFIG_ACCEL_PROFILE_FLAT);
|
||||
ck_assert_int_eq(status, LIBINPUT_CONFIG_STATUS_UNSUPPORTED);
|
||||
profile = libinput_device_config_accel_get_profile(device);
|
||||
ck_assert_int_eq(profile, LIBINPUT_CONFIG_ACCEL_PROFILE_NONE);
|
||||
|
||||
status = libinput_device_config_accel_set_profile(device,
|
||||
LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE);
|
||||
ck_assert_int_eq(status, LIBINPUT_CONFIG_STATUS_UNSUPPORTED);
|
||||
profile = libinput_device_config_accel_get_profile(device);
|
||||
ck_assert_int_eq(profile, LIBINPUT_CONFIG_ACCEL_PROFILE_NONE);
|
||||
ck_assert_int_eq(profile, LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE);
|
||||
}
|
||||
END_TEST
|
||||
|
||||
|
|
@ -2577,7 +2583,7 @@ TEST_COLLECTION(pointer)
|
|||
litest_add("pointer:accel", pointer_accel_defaults_absolute_relative, LITEST_ABSOLUTE|LITEST_RELATIVE, LITEST_ANY);
|
||||
litest_add("pointer:accel", pointer_accel_direction_change, LITEST_RELATIVE, LITEST_POINTINGSTICK);
|
||||
litest_add("pointer:accel", pointer_accel_profile_defaults, LITEST_RELATIVE, LITEST_TOUCHPAD);
|
||||
litest_add("pointer:accel", pointer_accel_profile_defaults_noprofile, LITEST_TOUCHPAD, LITEST_ANY);
|
||||
litest_add("pointer:accel", pointer_accel_profile_defaults_touchpad, LITEST_TOUCHPAD, LITEST_ANY);
|
||||
litest_add("pointer:accel", pointer_accel_profile_invalid, LITEST_RELATIVE, LITEST_ANY);
|
||||
litest_add("pointer:accel", pointer_accel_profile_noaccel, LITEST_ANY, LITEST_TOUCHPAD|LITEST_RELATIVE|LITEST_TABLET);
|
||||
litest_add("pointer:accel", pointer_accel_profile_flat_motion_relative, LITEST_RELATIVE, LITEST_TOUCHPAD);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue