mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2025-12-25 05:50:05 +01:00
Use an enum to enable/disable tapping configuration
More expressive in the caller and less ambiguous about return values (is it 1? is it non-zero? can it be negative?) Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
parent
cc36be302d
commit
d9cf649199
5 changed files with 83 additions and 36 deletions
|
|
@ -625,7 +625,8 @@ tp_tap_config_count(struct libinput_device *device)
|
|||
}
|
||||
|
||||
static enum libinput_config_status
|
||||
tp_tap_config_set_enabled(struct libinput_device *device, int enabled)
|
||||
tp_tap_config_set_enabled(struct libinput_device *device,
|
||||
enum libinput_config_tap_state enabled)
|
||||
{
|
||||
struct evdev_dispatch *dispatch;
|
||||
struct tp_dispatch *tp;
|
||||
|
|
@ -633,12 +634,12 @@ tp_tap_config_set_enabled(struct libinput_device *device, int enabled)
|
|||
dispatch = ((struct evdev_device *) device)->dispatch;
|
||||
tp = container_of(dispatch, tp, base);
|
||||
|
||||
tp->tap.enabled = enabled;
|
||||
tp->tap.enabled = (enabled == LIBINPUT_CONFIG_TAP_ENABLED);
|
||||
|
||||
return LIBINPUT_CONFIG_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static int
|
||||
static enum libinput_config_tap_state
|
||||
tp_tap_config_is_enabled(struct libinput_device *device)
|
||||
{
|
||||
struct evdev_dispatch *dispatch;
|
||||
|
|
@ -647,10 +648,11 @@ tp_tap_config_is_enabled(struct libinput_device *device)
|
|||
dispatch = ((struct evdev_device *) device)->dispatch;
|
||||
tp = container_of(dispatch, tp, base);
|
||||
|
||||
return tp->tap.enabled;
|
||||
return tp->tap.enabled ? LIBINPUT_CONFIG_TAP_ENABLED :
|
||||
LIBINPUT_CONFIG_TAP_DISABLED;
|
||||
}
|
||||
|
||||
static int
|
||||
static enum libinput_config_tap_state
|
||||
tp_tap_config_get_default(struct libinput_device *device)
|
||||
{
|
||||
/**
|
||||
|
|
@ -662,7 +664,7 @@ tp_tap_config_get_default(struct libinput_device *device)
|
|||
* usually know where to enable it, or at least you can search for
|
||||
* it.
|
||||
*/
|
||||
return false;
|
||||
return LIBINPUT_CONFIG_TAP_DISABLED;
|
||||
}
|
||||
|
||||
int
|
||||
|
|
|
|||
|
|
@ -84,9 +84,9 @@ struct libinput_seat {
|
|||
struct libinput_device_config_tap {
|
||||
int (*count)(struct libinput_device *device);
|
||||
enum libinput_config_status (*set_enabled)(struct libinput_device *device,
|
||||
int enable);
|
||||
int (*get_enabled)(struct libinput_device *device);
|
||||
int (*get_default)(struct libinput_device *device);
|
||||
enum libinput_config_tap_state enable);
|
||||
enum libinput_config_tap_state (*get_enabled)(struct libinput_device *device);
|
||||
enum libinput_config_tap_state (*get_default)(struct libinput_device *device);
|
||||
};
|
||||
|
||||
struct libinput_device_config {
|
||||
|
|
|
|||
|
|
@ -1284,8 +1284,12 @@ libinput_device_config_tap_get_finger_count(struct libinput_device *device)
|
|||
|
||||
LIBINPUT_EXPORT enum libinput_config_status
|
||||
libinput_device_config_tap_set_enabled(struct libinput_device *device,
|
||||
int enable)
|
||||
enum libinput_config_tap_state enable)
|
||||
{
|
||||
if (enable != LIBINPUT_CONFIG_TAP_ENABLED &&
|
||||
enable != LIBINPUT_CONFIG_TAP_DISABLED)
|
||||
return LIBINPUT_CONFIG_STATUS_INVALID;
|
||||
|
||||
if (enable &&
|
||||
libinput_device_config_tap_get_finger_count(device) == 0)
|
||||
return LIBINPUT_CONFIG_STATUS_UNSUPPORTED;
|
||||
|
|
@ -1293,20 +1297,20 @@ libinput_device_config_tap_set_enabled(struct libinput_device *device,
|
|||
return device->config.tap->set_enabled(device, enable);
|
||||
}
|
||||
|
||||
LIBINPUT_EXPORT int
|
||||
LIBINPUT_EXPORT enum libinput_config_tap_state
|
||||
libinput_device_config_tap_get_enabled(struct libinput_device *device)
|
||||
{
|
||||
if (libinput_device_config_tap_get_finger_count(device) == 0)
|
||||
return 0;
|
||||
return LIBINPUT_CONFIG_TAP_DISABLED;
|
||||
|
||||
return device->config.tap->get_enabled(device);
|
||||
}
|
||||
|
||||
LIBINPUT_EXPORT int
|
||||
LIBINPUT_EXPORT enum libinput_config_tap_state
|
||||
libinput_device_config_tap_get_default_enabled(struct libinput_device *device)
|
||||
{
|
||||
if (libinput_device_config_tap_get_finger_count(device) == 0)
|
||||
return 0;
|
||||
return LIBINPUT_CONFIG_TAP_DISABLED;
|
||||
|
||||
return device->config.tap->get_default(device);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1441,6 +1441,16 @@ enum libinput_config_status {
|
|||
const char *
|
||||
libinput_config_status_to_str(enum libinput_config_status status);
|
||||
|
||||
/**
|
||||
* @ingroup config
|
||||
*/
|
||||
enum libinput_config_tap_state {
|
||||
LIBINPUT_CONFIG_TAP_DISABLED, /**< Tapping is to be disabled, or is
|
||||
currently disabled */
|
||||
LIBINPUT_CONFIG_TAP_ENABLED, /**< Tapping is to be enabled, or is
|
||||
currently enabled */
|
||||
};
|
||||
|
||||
/**
|
||||
* @ingroup config
|
||||
*
|
||||
|
|
@ -1468,7 +1478,8 @@ libinput_device_config_tap_get_finger_count(struct libinput_device *device);
|
|||
* libinput_device_config_tap_get_finger_count().
|
||||
*
|
||||
* @param device The device to configure
|
||||
* @param enable Non-zero to enable, zero to disable
|
||||
* @param enable @ref LIBINPUT_CONFIG_TAP_ENABLED to enable tapping or @ref
|
||||
* LIBINPUT_CONFIG_TAP_DISABLED to disable tapping
|
||||
*
|
||||
* @return A config status code. Disabling tapping on a device that does not
|
||||
* support tapping always succeeds.
|
||||
|
|
@ -1479,7 +1490,7 @@ libinput_device_config_tap_get_finger_count(struct libinput_device *device);
|
|||
*/
|
||||
enum libinput_config_status
|
||||
libinput_device_config_tap_set_enabled(struct libinput_device *device,
|
||||
int enable);
|
||||
enum libinput_config_tap_state enable);
|
||||
|
||||
/**
|
||||
* @ingroup config
|
||||
|
|
@ -1489,13 +1500,14 @@ libinput_device_config_tap_set_enabled(struct libinput_device *device,
|
|||
*
|
||||
* @param device The device to configure
|
||||
*
|
||||
* @return 1 if enabled, 0 otherwise.
|
||||
* @return @ref LIBINPUT_CONFIG_TAP_ENABLED if tapping is currently enabled,
|
||||
* or @ref LIBINPUT_CONFIG_TAP_DISABLED is currently disabled
|
||||
*
|
||||
* @see libinput_device_config_tap_get_finger_count
|
||||
* @see libinput_device_config_tap_set_enabled
|
||||
* @see libinput_device_config_tap_get_default_enabled
|
||||
*/
|
||||
int
|
||||
enum libinput_config_tap_state
|
||||
libinput_device_config_tap_get_enabled(struct libinput_device *device);
|
||||
|
||||
/**
|
||||
|
|
@ -1504,13 +1516,14 @@ libinput_device_config_tap_get_enabled(struct libinput_device *device);
|
|||
* Return the default setting for whether tapping is enabled on this device.
|
||||
*
|
||||
* @param device The device to configure
|
||||
* @return 1 if tapping is enabled by default, or 0 otherwise
|
||||
* @return @ref LIBINPUT_CONFIG_TAP_ENABLED if tapping is enabled by default,
|
||||
* or @ref LIBINPUT_CONFIG_TAP_DISABLED is disabled by default
|
||||
*
|
||||
* @see libinput_device_config_tap_get_finger_count
|
||||
* @see libinput_device_config_tap_set_enabled
|
||||
* @see libinput_device_config_tap_get_enabled
|
||||
*/
|
||||
int
|
||||
enum libinput_config_tap_state
|
||||
libinput_device_config_tap_get_default_enabled(struct libinput_device *device);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
|||
|
|
@ -116,7 +116,8 @@ START_TEST(touchpad_1fg_tap)
|
|||
struct libinput *li = dev->libinput;
|
||||
struct libinput_event *event;
|
||||
|
||||
libinput_device_config_tap_set_enabled(dev->libinput_device, 1);
|
||||
libinput_device_config_tap_set_enabled(dev->libinput_device,
|
||||
LIBINPUT_CONFIG_TAP_ENABLED);
|
||||
|
||||
litest_drain_events(li);
|
||||
|
||||
|
|
@ -143,7 +144,8 @@ START_TEST(touchpad_1fg_tap_n_drag)
|
|||
struct libinput *li = dev->libinput;
|
||||
struct libinput_event *event;
|
||||
|
||||
libinput_device_config_tap_set_enabled(dev->libinput_device, 1);
|
||||
libinput_device_config_tap_set_enabled(dev->libinput_device,
|
||||
LIBINPUT_CONFIG_TAP_ENABLED);
|
||||
|
||||
litest_drain_events(li);
|
||||
|
||||
|
|
@ -195,7 +197,8 @@ START_TEST(touchpad_2fg_tap)
|
|||
struct litest_device *dev = litest_current_device();
|
||||
struct libinput *li = dev->libinput;
|
||||
|
||||
libinput_device_config_tap_set_enabled(dev->libinput_device, 1);
|
||||
libinput_device_config_tap_set_enabled(dev->libinput_device,
|
||||
LIBINPUT_CONFIG_TAP_ENABLED);
|
||||
|
||||
litest_drain_events(dev->libinput);
|
||||
|
||||
|
|
@ -221,7 +224,8 @@ START_TEST(touchpad_2fg_tap_inverted)
|
|||
struct litest_device *dev = litest_current_device();
|
||||
struct libinput *li = dev->libinput;
|
||||
|
||||
libinput_device_config_tap_set_enabled(dev->libinput_device, 1);
|
||||
libinput_device_config_tap_set_enabled(dev->libinput_device,
|
||||
LIBINPUT_CONFIG_TAP_ENABLED);
|
||||
|
||||
litest_drain_events(dev->libinput);
|
||||
|
||||
|
|
@ -247,7 +251,8 @@ START_TEST(touchpad_1fg_tap_click)
|
|||
struct litest_device *dev = litest_current_device();
|
||||
struct libinput *li = dev->libinput;
|
||||
|
||||
libinput_device_config_tap_set_enabled(dev->libinput_device, 1);
|
||||
libinput_device_config_tap_set_enabled(dev->libinput_device,
|
||||
LIBINPUT_CONFIG_TAP_ENABLED);
|
||||
|
||||
litest_drain_events(dev->libinput);
|
||||
|
||||
|
|
@ -276,7 +281,8 @@ START_TEST(touchpad_2fg_tap_click)
|
|||
struct litest_device *dev = litest_current_device();
|
||||
struct libinput *li = dev->libinput;
|
||||
|
||||
libinput_device_config_tap_set_enabled(dev->libinput_device, 1);
|
||||
libinput_device_config_tap_set_enabled(dev->libinput_device,
|
||||
LIBINPUT_CONFIG_TAP_ENABLED);
|
||||
|
||||
litest_drain_events(dev->libinput);
|
||||
|
||||
|
|
@ -307,7 +313,8 @@ START_TEST(touchpad_2fg_tap_click_apple)
|
|||
struct litest_device *dev = litest_current_device();
|
||||
struct libinput *li = dev->libinput;
|
||||
|
||||
libinput_device_config_tap_set_enabled(dev->libinput_device, 1);
|
||||
libinput_device_config_tap_set_enabled(dev->libinput_device,
|
||||
LIBINPUT_CONFIG_TAP_ENABLED);
|
||||
|
||||
litest_drain_events(dev->libinput);
|
||||
|
||||
|
|
@ -415,7 +422,8 @@ START_TEST(touchpad_1fg_double_tap_click)
|
|||
struct litest_device *dev = litest_current_device();
|
||||
struct libinput *li = dev->libinput;
|
||||
|
||||
libinput_device_config_tap_set_enabled(dev->libinput_device, 1);
|
||||
libinput_device_config_tap_set_enabled(dev->libinput_device,
|
||||
LIBINPUT_CONFIG_TAP_ENABLED);
|
||||
|
||||
litest_drain_events(dev->libinput);
|
||||
|
||||
|
|
@ -451,7 +459,8 @@ START_TEST(touchpad_1fg_tap_n_drag_click)
|
|||
struct libinput *li = dev->libinput;
|
||||
struct libinput_event *event;
|
||||
|
||||
libinput_device_config_tap_set_enabled(dev->libinput_device, 1);
|
||||
libinput_device_config_tap_set_enabled(dev->libinput_device,
|
||||
LIBINPUT_CONFIG_TAP_ENABLED);
|
||||
|
||||
litest_drain_events(dev->libinput);
|
||||
|
||||
|
|
@ -503,7 +512,8 @@ START_TEST(touchpad_3fg_tap)
|
|||
struct libinput_event *event;
|
||||
int i;
|
||||
|
||||
libinput_device_config_tap_set_enabled(dev->libinput_device, 1);
|
||||
libinput_device_config_tap_set_enabled(dev->libinput_device,
|
||||
LIBINPUT_CONFIG_TAP_ENABLED);
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
litest_drain_events(li);
|
||||
|
|
@ -798,7 +808,8 @@ START_TEST(clickpad_softbutton_left_tap_n_drag)
|
|||
struct litest_device *dev = litest_current_device();
|
||||
struct libinput *li = dev->libinput;
|
||||
|
||||
libinput_device_config_tap_set_enabled(dev->libinput_device, 1);
|
||||
libinput_device_config_tap_set_enabled(dev->libinput_device,
|
||||
LIBINPUT_CONFIG_TAP_ENABLED);
|
||||
|
||||
litest_drain_events(li);
|
||||
|
||||
|
|
@ -840,7 +851,8 @@ START_TEST(clickpad_softbutton_right_tap_n_drag)
|
|||
struct litest_device *dev = litest_current_device();
|
||||
struct libinput *li = dev->libinput;
|
||||
|
||||
libinput_device_config_tap_set_enabled(dev->libinput_device, 1);
|
||||
libinput_device_config_tap_set_enabled(dev->libinput_device,
|
||||
LIBINPUT_CONFIG_TAP_ENABLED);
|
||||
|
||||
litest_drain_events(li);
|
||||
|
||||
|
|
@ -1323,7 +1335,8 @@ START_TEST(touchpad_tap_is_available)
|
|||
struct litest_device *dev = litest_current_device();
|
||||
|
||||
ck_assert_int_ge(libinput_device_config_tap_get_finger_count(dev->libinput_device), 1);
|
||||
ck_assert_int_eq(libinput_device_config_tap_get_enabled(dev->libinput_device), 0);
|
||||
ck_assert_int_eq(libinput_device_config_tap_get_enabled(dev->libinput_device),
|
||||
LIBINPUT_CONFIG_TAP_DISABLED);
|
||||
}
|
||||
END_TEST
|
||||
|
||||
|
|
@ -1332,8 +1345,10 @@ START_TEST(touchpad_tap_is_not_available)
|
|||
struct litest_device *dev = litest_current_device();
|
||||
|
||||
ck_assert_int_eq(libinput_device_config_tap_get_finger_count(dev->libinput_device), 0);
|
||||
ck_assert_int_eq(libinput_device_config_tap_get_enabled(dev->libinput_device), 0);
|
||||
ck_assert_int_eq(libinput_device_config_tap_set_enabled(dev->libinput_device, 1),
|
||||
ck_assert_int_eq(libinput_device_config_tap_get_enabled(dev->libinput_device),
|
||||
LIBINPUT_CONFIG_TAP_DISABLED);
|
||||
ck_assert_int_eq(libinput_device_config_tap_set_enabled(dev->libinput_device,
|
||||
LIBINPUT_CONFIG_TAP_ENABLED),
|
||||
LIBINPUT_CONFIG_STATUS_UNSUPPORTED);
|
||||
}
|
||||
END_TEST
|
||||
|
|
@ -1342,7 +1357,19 @@ START_TEST(touchpad_tap_default)
|
|||
{
|
||||
struct litest_device *dev = litest_current_device();
|
||||
|
||||
ck_assert_int_eq(libinput_device_config_tap_get_default_enabled(dev->libinput_device), 0);
|
||||
ck_assert_int_eq(libinput_device_config_tap_get_default_enabled(dev->libinput_device),
|
||||
LIBINPUT_CONFIG_TAP_DISABLED);
|
||||
}
|
||||
END_TEST
|
||||
|
||||
START_TEST(touchpad_tap_invalid)
|
||||
{
|
||||
struct litest_device *dev = litest_current_device();
|
||||
|
||||
ck_assert_int_eq(libinput_device_config_tap_set_enabled(dev->libinput_device, 2),
|
||||
LIBINPUT_CONFIG_STATUS_INVALID);
|
||||
ck_assert_int_eq(libinput_device_config_tap_set_enabled(dev->libinput_device, -1),
|
||||
LIBINPUT_CONFIG_STATUS_INVALID);
|
||||
}
|
||||
END_TEST
|
||||
|
||||
|
|
@ -1544,6 +1571,7 @@ int main(int argc, char **argv) {
|
|||
litest_add("touchpad:tap", touchpad_1fg_tap_n_drag_click, LITEST_CLICKPAD, LITEST_ANY);
|
||||
|
||||
litest_add("touchpad:tap", touchpad_tap_default, LITEST_TOUCHPAD, LITEST_ANY);
|
||||
litest_add("touchpad:tap", touchpad_tap_invalid, LITEST_TOUCHPAD, LITEST_ANY);
|
||||
litest_add("touchpad:tap", touchpad_tap_is_available, LITEST_TOUCHPAD, LITEST_ANY);
|
||||
litest_add("touchpad:tap", touchpad_tap_is_not_available, LITEST_ANY, LITEST_TOUCHPAD);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue