| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| #include "config.h" |
| |
| #include <assert.h> |
| |
| #include "libinput-util.h" |
| |
| #include "litest.h" |
| #include "litest-int.h" |
| |
| static struct input_event down[] = { |
| { .type = EV_ABS, .code = ABS_X, .value = LITEST_AUTO_ASSIGN }, |
| { .type = EV_ABS, .code = ABS_Y, .value = LITEST_AUTO_ASSIGN }, |
| { .type = EV_ABS, .code = ABS_PRESSURE, .value = LITEST_AUTO_ASSIGN }, |
| { .type = EV_ABS, .code = ABS_MT_SLOT, .value = LITEST_AUTO_ASSIGN }, |
| { .type = EV_ABS, .code = ABS_MT_TRACKING_ID, .value = LITEST_AUTO_ASSIGN }, |
| { .type = EV_ABS, .code = ABS_MT_POSITION_X, .value = LITEST_AUTO_ASSIGN }, |
| { .type = EV_ABS, .code = ABS_MT_POSITION_Y, .value = LITEST_AUTO_ASSIGN }, |
| { .type = EV_SYN, .code = SYN_REPORT, .value = 0 }, |
| { .type = -1, .code = -1 }, |
| }; |
| |
| static struct input_event move[] = { |
| { .type = EV_ABS, .code = ABS_MT_SLOT, .value = LITEST_AUTO_ASSIGN }, |
| { .type = EV_ABS, .code = ABS_X, .value = LITEST_AUTO_ASSIGN }, |
| { .type = EV_ABS, .code = ABS_Y, .value = LITEST_AUTO_ASSIGN }, |
| { .type = EV_ABS, .code = ABS_PRESSURE, .value = LITEST_AUTO_ASSIGN }, |
| { .type = EV_ABS, .code = ABS_MT_POSITION_X, .value = LITEST_AUTO_ASSIGN }, |
| { .type = EV_ABS, .code = ABS_MT_POSITION_Y, .value = LITEST_AUTO_ASSIGN }, |
| { .type = EV_SYN, .code = SYN_REPORT, .value = 0 }, |
| { .type = -1, .code = -1 }, |
| }; |
| |
| static int |
| get_axis_default(struct litest_device *d, unsigned int evcode, int32_t *value) |
| { |
| switch (evcode) { |
| case ABS_PRESSURE: |
| case ABS_MT_PRESSURE: |
| *value = 30; |
| return 0; |
| } |
| return 1; |
| } |
| |
| static struct litest_device_interface interface = { |
| .touch_down_events = down, |
| .touch_move_events = move, |
| |
| .get_axis_default = get_axis_default, |
| }; |
| |
| static struct input_id input_id = { |
| .bustype = 0x11, |
| .vendor = 0x2, |
| .product = 0x8, |
| .version = 0x310, |
| }; |
| |
| static int events[] = { |
| EV_KEY, BTN_LEFT, |
| EV_KEY, BTN_RIGHT, |
| EV_KEY, BTN_MIDDLE, |
| EV_KEY, BTN_TOOL_FINGER, |
| EV_KEY, BTN_TOUCH, |
| EV_KEY, BTN_TOOL_DOUBLETAP, |
| EV_KEY, BTN_TOOL_TRIPLETAP, |
| EV_KEY, BTN_TOOL_QUADTAP, |
| INPUT_PROP_MAX, INPUT_PROP_POINTER, |
| INPUT_PROP_MAX, INPUT_PROP_SEMI_MT, |
| -1, -1, |
| }; |
| |
| static struct input_absinfo absinfo[] = { |
| { ABS_X, 0, 2000, 0, 0, 25 }, |
| { ABS_Y, 0, 1400, 0, 0, 32 }, |
| { ABS_PRESSURE, 0, 127, 0, 0, 0 }, |
| { ABS_MT_SLOT, 0, 1, 0, 0, 0 }, |
| { ABS_MT_POSITION_X, 0, 2000, 0, 0, 25 }, |
| { ABS_MT_POSITION_Y, 0, 1400, 0, 0, 32 }, |
| { ABS_MT_TRACKING_ID, 0, 65535, 0, 0, 0 }, |
| { .value = -1 } |
| }; |
| |
| static const char quirk_file[] = |
| "[litest ALPS Touchpad]\n" |
| "MatchName=litest AlpsPS/2 ALPS DualPoint TouchPad\n" |
| "ModelTouchpadVisibleMarker=1\n"; |
| |
| TEST_DEVICE("alps-dualpoint", |
| .type = LITEST_ALPS_DUALPOINT, |
| .features = LITEST_TOUCHPAD | LITEST_BUTTON | LITEST_SEMI_MT, |
| .interface = &interface, |
| |
| .name = "AlpsPS/2 ALPS DualPoint TouchPad", |
| .id = &input_id, |
| .events = events, |
| .absinfo = absinfo, |
| .quirk_file = quirk_file, |
| ) |