summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2014-02-11 09:19:44 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2014-02-11 09:28:01 +1000
commitd5e4660ff66b2e8aca05aef4776ee622e0df18b9 (patch)
treed45f8ca934963647692eda792493808480886cae
parent614623088b61cd1c95532adcabd46d0e98d7e1ff (diff)
synaptics: add tests for the new TouchpadOff property valuewip/touchpad-off-property
https://bugs.freedesktop.org/show_bug.cgi?id=73158 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r--recordings/touchpads/SynPS2-Synaptics-TouchPad-Clickpad.one-finger-move.events416
-rw-r--r--recordings/touchpads/SynPS2-Synaptics-TouchPad-Clickpad.one-finger-tap.events141
-rw-r--r--tests/input/synaptics.cpp156
3 files changed, 713 insertions, 0 deletions
diff --git a/recordings/touchpads/SynPS2-Synaptics-TouchPad-Clickpad.one-finger-move.events b/recordings/touchpads/SynPS2-Synaptics-TouchPad-Clickpad.one-finger-move.events
new file mode 100644
index 0000000..d9a6788
--- /dev/null
+++ b/recordings/touchpads/SynPS2-Synaptics-TouchPad-Clickpad.one-finger-move.events
@@ -0,0 +1,416 @@
+# EVEMU 1.2
+# Input device name: "SynPS/2 Synaptics TouchPad"
+# Input device ID: bus 0x11 vendor 0x02 product 0x07 version 0x1b1
+# Supported events:
+# Event type 0 (EV_SYN)
+# Event code 0 (SYN_REPORT)
+# Event code 1 (SYN_CONFIG)
+# Event code 3 (SYN_DROPPED)
+# Event type 1 (EV_KEY)
+# Event code 272 (BTN_LEFT)
+# Event code 325 (BTN_TOOL_FINGER)
+# Event code 328 (BTN_TOOL_QUINTTAP)
+# Event code 330 (BTN_TOUCH)
+# Event code 333 (BTN_TOOL_DOUBLETAP)
+# Event code 334 (BTN_TOOL_TRIPLETAP)
+# Event code 335 (BTN_TOOL_QUADTAP)
+# Event type 3 (EV_ABS)
+# Event code 0 (ABS_X)
+# Value 5627
+# Min 1472
+# Max 5472
+# Fuzz 0
+# Flat 0
+# Resolution 75
+# Event code 1 (ABS_Y)
+# Value 2782
+# Min 1408
+# Max 4448
+# Fuzz 0
+# Flat 0
+# Resolution 129
+# Event code 24 (ABS_PRESSURE)
+# Value 0
+# Min 0
+# Max 255
+# Fuzz 0
+# Flat 0
+# Resolution 0
+# Event code 28 (ABS_TOOL_WIDTH)
+# Value 0
+# Min 0
+# Max 15
+# Fuzz 0
+# Flat 0
+# Resolution 0
+# Event code 47 (ABS_MT_SLOT)
+# Value 0
+# Min 0
+# Max 1
+# Fuzz 0
+# Flat 0
+# Resolution 0
+# Event code 53 (ABS_MT_POSITION_X)
+# Value 0
+# Min 1472
+# Max 5472
+# Fuzz 8
+# Flat 0
+# Resolution 75
+# Event code 54 (ABS_MT_POSITION_Y)
+# Value 0
+# Min 1408
+# Max 4448
+# Fuzz 8
+# Flat 0
+# Resolution 129
+# Event code 57 (ABS_MT_TRACKING_ID)
+# Value 0
+# Min 0
+# Max 65535
+# Fuzz 0
+# Flat 0
+# Resolution 0
+# Event code 58 (ABS_MT_PRESSURE)
+# Value 0
+# Min 0
+# Max 255
+# Fuzz 0
+# Flat 0
+# Resolution 0
+# Properties:
+# Property type 0 (INPUT_PROP_POINTER)
+# Property type 2 (INPUT_PROP_BUTTONPAD)
+N: SynPS/2 Synaptics TouchPad
+I: 0011 0002 0007 01b1
+P: 05 00 00 00 00 00 00 00
+B: 00 0b 00 00 00 00 00 00 00
+B: 01 00 00 00 00 00 00 00 00
+B: 01 00 00 00 00 00 00 00 00
+B: 01 00 00 00 00 00 00 00 00
+B: 01 00 00 00 00 00 00 00 00
+B: 01 00 00 01 00 00 00 00 00
+B: 01 20 e5 00 00 00 00 00 00
+B: 01 00 00 00 00 00 00 00 00
+B: 01 00 00 00 00 00 00 00 00
+B: 01 00 00 00 00 00 00 00 00
+B: 01 00 00 00 00 00 00 00 00
+B: 01 00 00 00 00 00 00 00 00
+B: 01 00 00 00 00 00 00 00 00
+B: 02 00 00 00 00 00 00 00 00
+B: 03 03 00 00 11 00 80 60 06
+B: 04 00 00 00 00 00 00 00 00
+B: 05 00 00 00 00 00 00 00 00
+B: 11 00 00 00 00 00 00 00 00
+B: 12 00 00 00 00 00 00 00 00
+B: 15 00 00 00 00 00 00 00 00
+B: 15 00 00 00 00 00 00 00 00
+A: 00 1472 5472 0 0 75
+A: 01 1408 4448 0 0 129
+A: 18 0 255 0 0 0
+A: 1c 0 15 0 0 0
+A: 2f 0 1 0 0 0
+A: 35 1472 5472 8 0 75
+A: 36 1408 4448 8 0 129
+A: 39 0 65535 0 0 0
+A: 3a 0 255 0 0 0
+################################
+# Waiting for events #
+################################
+E: 0.000000 0003 0039 1054 # EV_ABS / ABS_MT_TRACKING_ID 1054
+E: 0.000000 0003 0035 2265 # EV_ABS / ABS_MT_POSITION_X 2265
+E: 0.000000 0003 0036 2483 # EV_ABS / ABS_MT_POSITION_Y 2483
+E: 0.000000 0003 003a 0051 # EV_ABS / ABS_MT_PRESSURE 51
+E: 0.000000 0001 014a 0001 # EV_KEY / BTN_TOUCH 1
+E: 0.000000 0003 0000 2265 # EV_ABS / ABS_X 2265
+E: 0.000000 0003 0001 2483 # EV_ABS / ABS_Y 2483
+E: 0.000000 0003 0018 0051 # EV_ABS / ABS_PRESSURE 51
+E: 0.000000 0001 0145 0001 # EV_KEY / BTN_TOOL_FINGER 1
+E: 0.000000 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.011717 0003 0035 2251 # EV_ABS / ABS_MT_POSITION_X 2251
+E: 0.011717 0003 0036 2496 # EV_ABS / ABS_MT_POSITION_Y 2496
+E: 0.011717 0003 003a 0055 # EV_ABS / ABS_MT_PRESSURE 55
+E: 0.011717 0003 0000 2258 # EV_ABS / ABS_X 2258
+E: 0.011717 0003 0001 2489 # EV_ABS / ABS_Y 2489
+E: 0.011717 0003 0018 0055 # EV_ABS / ABS_PRESSURE 55
+E: 0.011717 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.024017 0003 0035 2273 # EV_ABS / ABS_MT_POSITION_X 2273
+E: 0.024017 0003 0036 2495 # EV_ABS / ABS_MT_POSITION_Y 2495
+E: 0.024017 0003 003a 0058 # EV_ABS / ABS_MT_PRESSURE 58
+E: 0.024017 0003 0000 2265 # EV_ABS / ABS_X 2265
+E: 0.024017 0003 0001 2490 # EV_ABS / ABS_Y 2490
+E: 0.024017 0003 0018 0058 # EV_ABS / ABS_PRESSURE 58
+E: 0.024017 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.036570 0003 0035 2259 # EV_ABS / ABS_MT_POSITION_X 2259
+E: 0.036570 0003 0036 2500 # EV_ABS / ABS_MT_POSITION_Y 2500
+E: 0.036570 0003 003a 0057 # EV_ABS / ABS_MT_PRESSURE 57
+E: 0.036570 0003 0000 2263 # EV_ABS / ABS_X 2263
+E: 0.036570 0003 0001 2495 # EV_ABS / ABS_Y 2495
+E: 0.036570 0003 0018 0057 # EV_ABS / ABS_PRESSURE 57
+E: 0.036570 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.049915 0003 0035 2271 # EV_ABS / ABS_MT_POSITION_X 2271
+E: 0.049915 0003 0036 2512 # EV_ABS / ABS_MT_POSITION_Y 2512
+E: 0.049915 0003 003a 0059 # EV_ABS / ABS_MT_PRESSURE 59
+E: 0.049915 0003 0000 2267 # EV_ABS / ABS_X 2267
+E: 0.049915 0003 0001 2512 # EV_ABS / ABS_Y 2512
+E: 0.049915 0003 0018 0059 # EV_ABS / ABS_PRESSURE 59
+E: 0.049915 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.061661 0003 0035 2290 # EV_ABS / ABS_MT_POSITION_X 2290
+E: 0.061661 0003 0036 2526 # EV_ABS / ABS_MT_POSITION_Y 2526
+E: 0.061661 0003 003a 0060 # EV_ABS / ABS_MT_PRESSURE 60
+E: 0.061661 0003 0000 2290 # EV_ABS / ABS_X 2290
+E: 0.061661 0003 0001 2519 # EV_ABS / ABS_Y 2519
+E: 0.061661 0003 0018 0060 # EV_ABS / ABS_PRESSURE 60
+E: 0.061661 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.074062 0003 0035 2349 # EV_ABS / ABS_MT_POSITION_X 2349
+E: 0.074062 0003 0036 2551 # EV_ABS / ABS_MT_POSITION_Y 2551
+E: 0.074062 0003 003a 0063 # EV_ABS / ABS_MT_PRESSURE 63
+E: 0.074062 0003 0000 2349 # EV_ABS / ABS_X 2349
+E: 0.074062 0003 0001 2551 # EV_ABS / ABS_Y 2551
+E: 0.074062 0003 0018 0063 # EV_ABS / ABS_PRESSURE 63
+E: 0.074062 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.086796 0003 0035 2354 # EV_ABS / ABS_MT_POSITION_X 2354
+E: 0.086796 0003 0036 2574 # EV_ABS / ABS_MT_POSITION_Y 2574
+E: 0.086796 0003 003a 0064 # EV_ABS / ABS_MT_PRESSURE 64
+E: 0.086796 0003 0000 2350 # EV_ABS / ABS_X 2350
+E: 0.086796 0003 0001 2574 # EV_ABS / ABS_Y 2574
+E: 0.086796 0003 0018 0064 # EV_ABS / ABS_PRESSURE 64
+E: 0.086796 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.098603 0003 0035 2401 # EV_ABS / ABS_MT_POSITION_X 2401
+E: 0.098603 0003 0036 2599 # EV_ABS / ABS_MT_POSITION_Y 2599
+E: 0.098603 0003 003a 0063 # EV_ABS / ABS_MT_PRESSURE 63
+E: 0.098603 0003 0000 2401 # EV_ABS / ABS_X 2401
+E: 0.098603 0003 0001 2599 # EV_ABS / ABS_Y 2599
+E: 0.098603 0003 0018 0063 # EV_ABS / ABS_PRESSURE 63
+E: 0.098603 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.111545 0003 0035 2445 # EV_ABS / ABS_MT_POSITION_X 2445
+E: 0.111545 0003 0036 2607 # EV_ABS / ABS_MT_POSITION_Y 2607
+E: 0.111545 0003 0000 2445 # EV_ABS / ABS_X 2445
+E: 0.111545 0003 0001 2603 # EV_ABS / ABS_Y 2603
+E: 0.111545 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.123717 0003 0035 2496 # EV_ABS / ABS_MT_POSITION_X 2496
+E: 0.123717 0003 0036 2633 # EV_ABS / ABS_MT_POSITION_Y 2633
+E: 0.123717 0003 003a 0062 # EV_ABS / ABS_MT_PRESSURE 62
+E: 0.123717 0003 0000 2496 # EV_ABS / ABS_X 2496
+E: 0.123717 0003 0001 2633 # EV_ABS / ABS_Y 2633
+E: 0.123717 0003 0018 0062 # EV_ABS / ABS_PRESSURE 62
+E: 0.123717 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.135792 0003 0035 2568 # EV_ABS / ABS_MT_POSITION_X 2568
+E: 0.135792 0003 003a 0061 # EV_ABS / ABS_MT_PRESSURE 61
+E: 0.135792 0003 0000 2568 # EV_ABS / ABS_X 2568
+E: 0.135792 0003 0018 0061 # EV_ABS / ABS_PRESSURE 61
+E: 0.135792 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.149196 0003 0035 2637 # EV_ABS / ABS_MT_POSITION_X 2637
+E: 0.149196 0003 0036 2679 # EV_ABS / ABS_MT_POSITION_Y 2679
+E: 0.149196 0003 003a 0062 # EV_ABS / ABS_MT_PRESSURE 62
+E: 0.149196 0003 0000 2637 # EV_ABS / ABS_X 2637
+E: 0.149196 0003 0001 2679 # EV_ABS / ABS_Y 2679
+E: 0.149196 0003 0018 0062 # EV_ABS / ABS_PRESSURE 62
+E: 0.149196 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.161378 0003 0035 2693 # EV_ABS / ABS_MT_POSITION_X 2693
+E: 0.161378 0003 0036 2695 # EV_ABS / ABS_MT_POSITION_Y 2695
+E: 0.161378 0003 0000 2693 # EV_ABS / ABS_X 2693
+E: 0.161378 0003 0001 2695 # EV_ABS / ABS_Y 2695
+E: 0.161378 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.174600 0003 0035 2748 # EV_ABS / ABS_MT_POSITION_X 2748
+E: 0.174600 0003 0036 2713 # EV_ABS / ABS_MT_POSITION_Y 2713
+E: 0.174600 0003 0000 2748 # EV_ABS / ABS_X 2748
+E: 0.174600 0003 0001 2713 # EV_ABS / ABS_Y 2713
+E: 0.174600 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.186051 0003 0035 2829 # EV_ABS / ABS_MT_POSITION_X 2829
+E: 0.186051 0003 0036 2751 # EV_ABS / ABS_MT_POSITION_Y 2751
+E: 0.186051 0003 0000 2829 # EV_ABS / ABS_X 2829
+E: 0.186051 0003 0001 2751 # EV_ABS / ABS_Y 2751
+E: 0.186051 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.198260 0003 0035 2874 # EV_ABS / ABS_MT_POSITION_X 2874
+E: 0.198260 0003 0036 2778 # EV_ABS / ABS_MT_POSITION_Y 2778
+E: 0.198260 0003 0000 2874 # EV_ABS / ABS_X 2874
+E: 0.198260 0003 0001 2778 # EV_ABS / ABS_Y 2778
+E: 0.198260 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.210356 0003 0035 2929 # EV_ABS / ABS_MT_POSITION_X 2929
+E: 0.210356 0003 0036 2783 # EV_ABS / ABS_MT_POSITION_Y 2783
+E: 0.210356 0003 0000 2929 # EV_ABS / ABS_X 2929
+E: 0.210356 0003 0001 2779 # EV_ABS / ABS_Y 2779
+E: 0.210356 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.222648 0003 0035 2967 # EV_ABS / ABS_MT_POSITION_X 2967
+E: 0.222648 0003 0036 2796 # EV_ABS / ABS_MT_POSITION_Y 2796
+E: 0.222648 0003 003a 0063 # EV_ABS / ABS_MT_PRESSURE 63
+E: 0.222648 0003 0000 2967 # EV_ABS / ABS_X 2967
+E: 0.222648 0003 0001 2796 # EV_ABS / ABS_Y 2796
+E: 0.222648 0003 0018 0063 # EV_ABS / ABS_PRESSURE 63
+E: 0.222648 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.236153 0003 0035 2984 # EV_ABS / ABS_MT_POSITION_X 2984
+E: 0.236153 0003 0036 2805 # EV_ABS / ABS_MT_POSITION_Y 2805
+E: 0.236153 0003 003a 0064 # EV_ABS / ABS_MT_PRESSURE 64
+E: 0.236153 0003 0000 2984 # EV_ABS / ABS_X 2984
+E: 0.236153 0003 0001 2800 # EV_ABS / ABS_Y 2800
+E: 0.236153 0003 0018 0064 # EV_ABS / ABS_PRESSURE 64
+E: 0.236153 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.247761 0003 0035 3027 # EV_ABS / ABS_MT_POSITION_X 3027
+E: 0.247761 0003 0036 2816 # EV_ABS / ABS_MT_POSITION_Y 2816
+E: 0.247761 0003 0000 3027 # EV_ABS / ABS_X 3027
+E: 0.247761 0003 0001 2816 # EV_ABS / ABS_Y 2816
+E: 0.247761 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.259872 0003 0035 3062 # EV_ABS / ABS_MT_POSITION_X 3062
+E: 0.259872 0003 0036 2834 # EV_ABS / ABS_MT_POSITION_Y 2834
+E: 0.259872 0003 0000 3062 # EV_ABS / ABS_X 3062
+E: 0.259872 0003 0001 2834 # EV_ABS / ABS_Y 2834
+E: 0.259872 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.272744 0003 0035 3121 # EV_ABS / ABS_MT_POSITION_X 3121
+E: 0.272744 0003 003a 0065 # EV_ABS / ABS_MT_PRESSURE 65
+E: 0.272744 0003 0000 3121 # EV_ABS / ABS_X 3121
+E: 0.272744 0003 0018 0065 # EV_ABS / ABS_PRESSURE 65
+E: 0.272744 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.284620 0003 0035 3159 # EV_ABS / ABS_MT_POSITION_X 3159
+E: 0.284620 0003 0036 2844 # EV_ABS / ABS_MT_POSITION_Y 2844
+E: 0.284620 0003 003a 0064 # EV_ABS / ABS_MT_PRESSURE 64
+E: 0.284620 0003 0000 3159 # EV_ABS / ABS_X 3159
+E: 0.284620 0003 0001 2839 # EV_ABS / ABS_Y 2839
+E: 0.284620 0003 0018 0064 # EV_ABS / ABS_PRESSURE 64
+E: 0.284620 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.297860 0003 0035 3202 # EV_ABS / ABS_MT_POSITION_X 3202
+E: 0.297860 0003 0036 2846 # EV_ABS / ABS_MT_POSITION_Y 2846
+E: 0.297860 0003 003a 0065 # EV_ABS / ABS_MT_PRESSURE 65
+E: 0.297860 0003 0000 3202 # EV_ABS / ABS_X 3202
+E: 0.297860 0003 0001 2840 # EV_ABS / ABS_Y 2840
+E: 0.297860 0003 0018 0065 # EV_ABS / ABS_PRESSURE 65
+E: 0.297860 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.309897 0003 0035 3236 # EV_ABS / ABS_MT_POSITION_X 3236
+E: 0.309897 0003 0036 2853 # EV_ABS / ABS_MT_POSITION_Y 2853
+E: 0.309897 0003 0000 3236 # EV_ABS / ABS_X 3236
+E: 0.309897 0003 0001 2846 # EV_ABS / ABS_Y 2846
+E: 0.309897 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.321818 0003 0035 3258 # EV_ABS / ABS_MT_POSITION_X 3258
+E: 0.321818 0003 0036 2854 # EV_ABS / ABS_MT_POSITION_Y 2854
+E: 0.321818 0003 0000 3258 # EV_ABS / ABS_X 3258
+E: 0.321818 0003 0001 2850 # EV_ABS / ABS_Y 2850
+E: 0.321818 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.334138 0003 0035 3270 # EV_ABS / ABS_MT_POSITION_X 3270
+E: 0.334138 0003 0036 2858 # EV_ABS / ABS_MT_POSITION_Y 2858
+E: 0.334138 0003 003a 0066 # EV_ABS / ABS_MT_PRESSURE 66
+E: 0.334138 0003 0000 3264 # EV_ABS / ABS_X 3264
+E: 0.334138 0003 0001 2854 # EV_ABS / ABS_Y 2854
+E: 0.334138 0003 0018 0066 # EV_ABS / ABS_PRESSURE 66
+E: 0.334138 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.347134 0003 0035 3270 # EV_ABS / ABS_MT_POSITION_X 3270
+E: 0.347134 0003 0036 2858 # EV_ABS / ABS_MT_POSITION_Y 2858
+E: 0.347134 0003 0000 3265 # EV_ABS / ABS_X 3265
+E: 0.347134 0003 0001 2855 # EV_ABS / ABS_Y 2855
+E: 0.347134 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.359312 0003 0035 3275 # EV_ABS / ABS_MT_POSITION_X 3275
+E: 0.359312 0003 0036 2860 # EV_ABS / ABS_MT_POSITION_Y 2860
+E: 0.359312 0003 0000 3270 # EV_ABS / ABS_X 3270
+E: 0.359312 0003 0001 2856 # EV_ABS / ABS_Y 2856
+E: 0.359312 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.371707 0003 0035 3277 # EV_ABS / ABS_MT_POSITION_X 3277
+E: 0.371707 0003 0000 3271 # EV_ABS / ABS_X 3271
+E: 0.371707 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.384232 0003 0035 3324 # EV_ABS / ABS_MT_POSITION_X 3324
+E: 0.384232 0003 0036 2869 # EV_ABS / ABS_MT_POSITION_Y 2869
+E: 0.384232 0003 003a 0068 # EV_ABS / ABS_MT_PRESSURE 68
+E: 0.384232 0003 0000 3324 # EV_ABS / ABS_X 3324
+E: 0.384232 0003 0001 2862 # EV_ABS / ABS_Y 2862
+E: 0.384232 0003 0018 0068 # EV_ABS / ABS_PRESSURE 68
+E: 0.384232 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.396285 0003 0035 3364 # EV_ABS / ABS_MT_POSITION_X 3364
+E: 0.396285 0003 0036 2869 # EV_ABS / ABS_MT_POSITION_Y 2869
+E: 0.396285 0003 003a 0066 # EV_ABS / ABS_MT_PRESSURE 66
+E: 0.396285 0003 0000 3364 # EV_ABS / ABS_X 3364
+E: 0.396285 0003 0001 2863 # EV_ABS / ABS_Y 2863
+E: 0.396285 0003 0018 0066 # EV_ABS / ABS_PRESSURE 66
+E: 0.396285 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.409547 0003 0035 3418 # EV_ABS / ABS_MT_POSITION_X 3418
+E: 0.409547 0003 0036 2870 # EV_ABS / ABS_MT_POSITION_Y 2870
+E: 0.409547 0003 003a 0065 # EV_ABS / ABS_MT_PRESSURE 65
+E: 0.409547 0003 0000 3418 # EV_ABS / ABS_X 3418
+E: 0.409547 0003 0001 2864 # EV_ABS / ABS_Y 2864
+E: 0.409547 0003 0018 0065 # EV_ABS / ABS_PRESSURE 65
+E: 0.409547 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.421667 0003 0035 3452 # EV_ABS / ABS_MT_POSITION_X 3452
+E: 0.421667 0003 0036 2873 # EV_ABS / ABS_MT_POSITION_Y 2873
+E: 0.421667 0003 003a 0066 # EV_ABS / ABS_MT_PRESSURE 66
+E: 0.421667 0003 0000 3452 # EV_ABS / ABS_X 3452
+E: 0.421667 0003 0001 2868 # EV_ABS / ABS_Y 2868
+E: 0.421667 0003 0018 0066 # EV_ABS / ABS_PRESSURE 66
+E: 0.421667 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.434342 0003 0035 3472 # EV_ABS / ABS_MT_POSITION_X 3472
+E: 0.434342 0003 0036 2877 # EV_ABS / ABS_MT_POSITION_Y 2877
+E: 0.434342 0003 0000 3472 # EV_ABS / ABS_X 3472
+E: 0.434342 0003 0001 2872 # EV_ABS / ABS_Y 2872
+E: 0.434342 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.446476 0003 0035 3503 # EV_ABS / ABS_MT_POSITION_X 3503
+E: 0.446476 0003 0036 2884 # EV_ABS / ABS_MT_POSITION_Y 2884
+E: 0.446476 0003 0000 3503 # EV_ABS / ABS_X 3503
+E: 0.446476 0003 0001 2878 # EV_ABS / ABS_Y 2878
+E: 0.446476 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.459050 0003 0035 3536 # EV_ABS / ABS_MT_POSITION_X 3536
+E: 0.459050 0003 0036 2885 # EV_ABS / ABS_MT_POSITION_Y 2885
+E: 0.459050 0003 003a 0065 # EV_ABS / ABS_MT_PRESSURE 65
+E: 0.459050 0003 0000 3536 # EV_ABS / ABS_X 3536
+E: 0.459050 0003 0001 2879 # EV_ABS / ABS_Y 2879
+E: 0.459050 0003 0018 0065 # EV_ABS / ABS_PRESSURE 65
+E: 0.459050 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.471529 0003 0035 3573 # EV_ABS / ABS_MT_POSITION_X 3573
+E: 0.471529 0003 0036 2887 # EV_ABS / ABS_MT_POSITION_Y 2887
+E: 0.471529 0003 0000 3573 # EV_ABS / ABS_X 3573
+E: 0.471529 0003 0001 2883 # EV_ABS / ABS_Y 2883
+E: 0.471529 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.483355 0003 0035 3617 # EV_ABS / ABS_MT_POSITION_X 3617
+E: 0.483355 0003 0036 2907 # EV_ABS / ABS_MT_POSITION_Y 2907
+E: 0.483355 0003 003a 0066 # EV_ABS / ABS_MT_PRESSURE 66
+E: 0.483355 0003 0000 3617 # EV_ABS / ABS_X 3617
+E: 0.483355 0003 0001 2907 # EV_ABS / ABS_Y 2907
+E: 0.483355 0003 0018 0066 # EV_ABS / ABS_PRESSURE 66
+E: 0.483355 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.495627 0003 0035 3652 # EV_ABS / ABS_MT_POSITION_X 3652
+E: 0.495627 0003 0036 2913 # EV_ABS / ABS_MT_POSITION_Y 2913
+E: 0.495627 0003 0000 3652 # EV_ABS / ABS_X 3652
+E: 0.495627 0003 0001 2908 # EV_ABS / ABS_Y 2908
+E: 0.495627 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.507775 0003 0035 3685 # EV_ABS / ABS_MT_POSITION_X 3685
+E: 0.507775 0003 0036 2919 # EV_ABS / ABS_MT_POSITION_Y 2919
+E: 0.507775 0003 003a 0065 # EV_ABS / ABS_MT_PRESSURE 65
+E: 0.507775 0003 0000 3685 # EV_ABS / ABS_X 3685
+E: 0.507775 0003 0001 2913 # EV_ABS / ABS_Y 2913
+E: 0.507775 0003 0018 0065 # EV_ABS / ABS_PRESSURE 65
+E: 0.507775 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.520327 0003 0035 3709 # EV_ABS / ABS_MT_POSITION_X 3709
+E: 0.520327 0003 0036 2923 # EV_ABS / ABS_MT_POSITION_Y 2923
+E: 0.520327 0003 003a 0066 # EV_ABS / ABS_MT_PRESSURE 66
+E: 0.520327 0003 0000 3709 # EV_ABS / ABS_X 3709
+E: 0.520327 0003 0001 2918 # EV_ABS / ABS_Y 2918
+E: 0.520327 0003 0018 0066 # EV_ABS / ABS_PRESSURE 66
+E: 0.520327 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.532107 0003 0035 3713 # EV_ABS / ABS_MT_POSITION_X 3713
+E: 0.532107 0003 0036 2923 # EV_ABS / ABS_MT_POSITION_Y 2923
+E: 0.532107 0003 0000 3710 # EV_ABS / ABS_X 3710
+E: 0.532107 0003 0001 2919 # EV_ABS / ABS_Y 2919
+E: 0.532107 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.545452 0003 0036 2925 # EV_ABS / ABS_MT_POSITION_Y 2925
+E: 0.545452 0003 0001 2920 # EV_ABS / ABS_Y 2920
+E: 0.545452 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.557592 0003 0036 2928 # EV_ABS / ABS_MT_POSITION_Y 2928
+E: 0.557592 0003 003a 0067 # EV_ABS / ABS_MT_PRESSURE 67
+E: 0.557592 0003 0001 2924 # EV_ABS / ABS_Y 2924
+E: 0.557592 0003 0018 0067 # EV_ABS / ABS_PRESSURE 67
+E: 0.557592 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.569714 0003 003a 0066 # EV_ABS / ABS_MT_PRESSURE 66
+E: 0.569714 0003 0018 0066 # EV_ABS / ABS_PRESSURE 66
+E: 0.569714 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.582620 0003 0035 3697 # EV_ABS / ABS_MT_POSITION_X 3697
+E: 0.582620 0003 003a 0063 # EV_ABS / ABS_MT_PRESSURE 63
+E: 0.582620 0003 0000 3703 # EV_ABS / ABS_X 3703
+E: 0.582620 0003 0018 0063 # EV_ABS / ABS_PRESSURE 63
+E: 0.582620 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.594394 0003 0035 3633 # EV_ABS / ABS_MT_POSITION_X 3633
+E: 0.594394 0003 0036 2899 # EV_ABS / ABS_MT_POSITION_Y 2899
+E: 0.594394 0003 003a 0043 # EV_ABS / ABS_MT_PRESSURE 43
+E: 0.594394 0003 0000 3633 # EV_ABS / ABS_X 3633
+E: 0.594394 0003 0001 2899 # EV_ABS / ABS_Y 2899
+E: 0.594394 0003 0018 0043 # EV_ABS / ABS_PRESSURE 43
+E: 0.594394 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.606424 0003 0039 -001 # EV_ABS / ABS_MT_TRACKING_ID -1
+E: 0.606424 0001 014a 0000 # EV_KEY / BTN_TOUCH 0
+E: 0.606424 0003 0018 0000 # EV_ABS / ABS_PRESSURE 0
+E: 0.606424 0001 0145 0000 # EV_KEY / BTN_TOOL_FINGER 0
+E: 0.606424 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
diff --git a/recordings/touchpads/SynPS2-Synaptics-TouchPad-Clickpad.one-finger-tap.events b/recordings/touchpads/SynPS2-Synaptics-TouchPad-Clickpad.one-finger-tap.events
new file mode 100644
index 0000000..901904c
--- /dev/null
+++ b/recordings/touchpads/SynPS2-Synaptics-TouchPad-Clickpad.one-finger-tap.events
@@ -0,0 +1,141 @@
+# EVEMU 1.2
+# Input device name: "SynPS/2 Synaptics TouchPad"
+# Input device ID: bus 0x11 vendor 0x02 product 0x07 version 0x1b1
+# Supported events:
+# Event type 0 (EV_SYN)
+# Event code 0 (SYN_REPORT)
+# Event code 1 (SYN_CONFIG)
+# Event code 3 (SYN_DROPPED)
+# Event type 1 (EV_KEY)
+# Event code 272 (BTN_LEFT)
+# Event code 325 (BTN_TOOL_FINGER)
+# Event code 328 (BTN_TOOL_QUINTTAP)
+# Event code 330 (BTN_TOUCH)
+# Event code 333 (BTN_TOOL_DOUBLETAP)
+# Event code 334 (BTN_TOOL_TRIPLETAP)
+# Event code 335 (BTN_TOOL_QUADTAP)
+# Event type 3 (EV_ABS)
+# Event code 0 (ABS_X)
+# Value 3633
+# Min 1472
+# Max 5472
+# Fuzz 0
+# Flat 0
+# Resolution 75
+# Event code 1 (ABS_Y)
+# Value 2899
+# Min 1408
+# Max 4448
+# Fuzz 0
+# Flat 0
+# Resolution 129
+# Event code 24 (ABS_PRESSURE)
+# Value 0
+# Min 0
+# Max 255
+# Fuzz 0
+# Flat 0
+# Resolution 0
+# Event code 28 (ABS_TOOL_WIDTH)
+# Value 0
+# Min 0
+# Max 15
+# Fuzz 0
+# Flat 0
+# Resolution 0
+# Event code 47 (ABS_MT_SLOT)
+# Value 0
+# Min 0
+# Max 1
+# Fuzz 0
+# Flat 0
+# Resolution 0
+# Event code 53 (ABS_MT_POSITION_X)
+# Value 0
+# Min 1472
+# Max 5472
+# Fuzz 8
+# Flat 0
+# Resolution 75
+# Event code 54 (ABS_MT_POSITION_Y)
+# Value 0
+# Min 1408
+# Max 4448
+# Fuzz 8
+# Flat 0
+# Resolution 129
+# Event code 57 (ABS_MT_TRACKING_ID)
+# Value 0
+# Min 0
+# Max 65535
+# Fuzz 0
+# Flat 0
+# Resolution 0
+# Event code 58 (ABS_MT_PRESSURE)
+# Value 0
+# Min 0
+# Max 255
+# Fuzz 0
+# Flat 0
+# Resolution 0
+# Properties:
+# Property type 0 (INPUT_PROP_POINTER)
+# Property type 2 (INPUT_PROP_BUTTONPAD)
+N: SynPS/2 Synaptics TouchPad
+I: 0011 0002 0007 01b1
+P: 05 00 00 00 00 00 00 00
+B: 00 0b 00 00 00 00 00 00 00
+B: 01 00 00 00 00 00 00 00 00
+B: 01 00 00 00 00 00 00 00 00
+B: 01 00 00 00 00 00 00 00 00
+B: 01 00 00 00 00 00 00 00 00
+B: 01 00 00 01 00 00 00 00 00
+B: 01 20 e5 00 00 00 00 00 00
+B: 01 00 00 00 00 00 00 00 00
+B: 01 00 00 00 00 00 00 00 00
+B: 01 00 00 00 00 00 00 00 00
+B: 01 00 00 00 00 00 00 00 00
+B: 01 00 00 00 00 00 00 00 00
+B: 01 00 00 00 00 00 00 00 00
+B: 02 00 00 00 00 00 00 00 00
+B: 03 03 00 00 11 00 80 60 06
+B: 04 00 00 00 00 00 00 00 00
+B: 05 00 00 00 00 00 00 00 00
+B: 11 00 00 00 00 00 00 00 00
+B: 12 00 00 00 00 00 00 00 00
+B: 15 00 00 00 00 00 00 00 00
+B: 15 00 00 00 00 00 00 00 00
+A: 00 1472 5472 0 0 75
+A: 01 1408 4448 0 0 129
+A: 18 0 255 0 0 0
+A: 1c 0 15 0 0 0
+A: 2f 0 1 0 0 0
+A: 35 1472 5472 8 0 75
+A: 36 1408 4448 8 0 129
+A: 39 0 65535 0 0 0
+A: 3a 0 255 0 0 0
+################################
+# Waiting for events #
+################################
+E: 0.000000 0003 0039 1055 # EV_ABS / ABS_MT_TRACKING_ID 1055
+E: 0.000000 0003 0035 3582 # EV_ABS / ABS_MT_POSITION_X 3582
+E: 0.000000 0003 0036 3238 # EV_ABS / ABS_MT_POSITION_Y 3238
+E: 0.000000 0003 003a 0085 # EV_ABS / ABS_MT_PRESSURE 85
+E: 0.000000 0001 014a 0001 # EV_KEY / BTN_TOUCH 1
+E: 0.000000 0003 0000 3582 # EV_ABS / ABS_X 3582
+E: 0.000000 0003 0001 3238 # EV_ABS / ABS_Y 3238
+E: 0.000000 0003 0018 0085 # EV_ABS / ABS_PRESSURE 85
+E: 0.000000 0001 0145 0001 # EV_KEY / BTN_TOOL_FINGER 1
+E: 0.000000 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.024713 0003 0035 3573 # EV_ABS / ABS_MT_POSITION_X 3573
+E: 0.024713 0003 0036 3199 # EV_ABS / ABS_MT_POSITION_Y 3199
+E: 0.024713 0003 003a 0070 # EV_ABS / ABS_MT_PRESSURE 70
+E: 0.024713 0003 0000 3577 # EV_ABS / ABS_X 3577
+E: 0.024713 0003 0001 3199 # EV_ABS / ABS_Y 3199
+E: 0.024713 0003 0018 0070 # EV_ABS / ABS_PRESSURE 70
+E: 0.024713 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+E: 0.036641 0003 0039 -001 # EV_ABS / ABS_MT_TRACKING_ID -1
+E: 0.036641 0001 014a 0000 # EV_KEY / BTN_TOUCH 0
+E: 0.036641 0003 0018 0000 # EV_ABS / ABS_PRESSURE 0
+E: 0.036641 0001 0145 0000 # EV_KEY / BTN_TOOL_FINGER 0
+E: 0.036641 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
diff --git a/tests/input/synaptics.cpp b/tests/input/synaptics.cpp
index 91fa2ce..993a7f4 100644
--- a/tests/input/synaptics.cpp
+++ b/tests/input/synaptics.cpp
@@ -1632,6 +1632,162 @@ TEST_F(SynapticsScrollButtonTest, ScrollButtonUpDownMiddleDouble)
ASSERT_EQ(middle4->xbutton.button, 2);
}
+class SynapticsClickOnlyTest : public SynapticsTest {
+public:
+ virtual void SetUp() {
+ SetDevice("touchpads/SynPS2-Synaptics-TouchPad-Clickpad.desc");
+
+ xi2_major_minimum = 2;
+ xi2_minor_minimum = 1;
+
+ XITServerInputTest::SetUp();
+ }
+
+ virtual void SetUpConfigAndLog() {
+ config.AddDefaultScreenWithDriver();
+ config.AddInputSection("synaptics", "--device--",
+ "Option \"CorePointer\" \"on\"\n"
+ "Option \"GrabEventDevice\" \"1\"\n"
+ "Option \"TapButton1\" \"1\"\n"
+ "Option \"VertTwoFingerScroll\" \"1\"\n"
+ "Option \"SoftButtonAreas\" \"50% 0 82% 0 0 0 0 0\"\n"
+ "Option \"Device\" \"" + dev->GetDeviceNode() + "\"\n");
+ config.WriteConfig();
+ }
+
+ virtual void SetToClickOnly(::Display *dpy, int deviceid) {
+ SetErrorTrap(dpy);
+ XITProperty<char> off_prop(dpy, deviceid, "Synaptics Off");
+ off_prop.data[0] = 3;
+ off_prop.Update();
+ ASSERT_FALSE(ReleaseErrorTrap(dpy));
+ }
+};
+
+TEST_F(SynapticsClickOnlyTest, PropertyValueOk)
+{
+ XORG_TESTCASE("Check setting the property to value 3 works\n");
+
+ ::Display *dpy = Display();
+ int deviceid;
+ ASSERT_TRUE(FindInputDeviceByName(dpy, "--device--", &deviceid));
+
+ SetToClickOnly(dpy, deviceid);
+}
+
+TEST_F(SynapticsClickOnlyTest, PropertyValueInvalid)
+{
+ XORG_TESTCASE("Set Touchpad Off property to click only\n"
+ "Generate button event, expect events\n");
+
+ ::Display *dpy = Display();
+ int deviceid;
+ ASSERT_TRUE(FindInputDeviceByName(dpy, "--device--", &deviceid));
+
+ SetErrorTrap(dpy);
+ XITProperty<char> off_prop(dpy, deviceid, "Synaptics Off");
+ off_prop.data[0] = 4;
+ off_prop.Update();
+ ASSERT_ERROR(ReleaseErrorTrap(dpy), BadValue);
+}
+
+TEST_F(SynapticsClickOnlyTest, PropertyPreventsMovement)
+{
+ XORG_TESTCASE("Move a finger, expect motion events\n"
+ "Set Touchpad Off property to click only\n"
+ "Move a finger, expect no events\n");
+
+ ::Display *dpy = Display();
+ int deviceid;
+ ASSERT_TRUE(FindInputDeviceByName(dpy, "--device--", &deviceid));
+
+ XSelectInput(dpy, DefaultRootWindow(dpy), ButtonPressMask|ButtonReleaseMask|PointerMotionMask);
+
+ dev->Play(RECORDINGS_DIR "touchpads/SynPS2-Synaptics-TouchPad-Clickpad.one-finger-move.events");
+
+ ASSERT_EVENT(XEvent, motion, dpy, MotionNotify);
+
+ SetToClickOnly(dpy, deviceid);
+ XSync(dpy, True);
+
+ dev->Play(RECORDINGS_DIR "touchpads/SynPS2-Synaptics-TouchPad-Clickpad.one-finger-move.events");
+
+ ASSERT_TRUE(NoEventPending(dpy));
+}
+
+TEST_F(SynapticsClickOnlyTest, PropertyPreventsTapping)
+{
+ XORG_TESTCASE("Tap, expect button events\n"
+ "Set Touchpad Off property to click only\n"
+ "Tap, expect no events\n");
+
+ ::Display *dpy = Display();
+ int deviceid;
+ ASSERT_TRUE(FindInputDeviceByName(dpy, "--device--", &deviceid));
+
+ XSelectInput(dpy, DefaultRootWindow(dpy), ButtonPressMask|ButtonReleaseMask|PointerMotionMask);
+
+ dev->Play(RECORDINGS_DIR "touchpads/SynPS2-Synaptics-TouchPad-Clickpad.one-finger-tap.events");
+
+ ASSERT_EVENT(XEvent, press, dpy, ButtonPress);
+ ASSERT_EVENT(XEvent, release, dpy, ButtonRelease);
+
+ SetToClickOnly(dpy, deviceid);
+ XSync(dpy, True);
+
+ dev->Play(RECORDINGS_DIR "touchpads/SynPS2-Synaptics-TouchPad-Clickpad.one-finger-tap.events");
+
+ ASSERT_TRUE(NoEventPending(dpy));
+}
+
+TEST_F(SynapticsClickOnlyTest, PropertyPreventsScroll)
+{
+ XORG_TESTCASE("Scroll, expect events\n"
+ "Set Touchpad Off property to click only\n"
+ "Scroll, expect no events\n");
+
+ ::Display *dpy = Display();
+ int deviceid;
+ ASSERT_TRUE(FindInputDeviceByName(dpy, "--device--", &deviceid));
+
+ XSelectInput(dpy, DefaultRootWindow(dpy), ButtonPressMask|ButtonReleaseMask|PointerMotionMask);
+
+ dev->Play(RECORDINGS_DIR "touchpads/SynPS2-Synaptics-TouchPad-Clickpad.two-finger-scroll-up.events");
+
+ ASSERT_EVENT(XEvent, press, dpy, ButtonPress);
+ ASSERT_EQ(press->xbutton.button, 4);
+ ASSERT_EVENT(XEvent, release, dpy, ButtonRelease);
+ ASSERT_EQ(release->xbutton.button, 4);
+
+ SetToClickOnly(dpy, deviceid);
+ XSync(dpy, True);
+
+ dev->Play(RECORDINGS_DIR "touchpads/SynPS2-Synaptics-TouchPad-Clickpad.two-finger-scroll-up.events");
+
+ ASSERT_TRUE(NoEventPending(dpy));
+}
+
+TEST_F(SynapticsClickOnlyTest, PropertyAllowsButton)
+{
+ XORG_TESTCASE("Set Touchpad Off property to click only\n"
+ "Generate button event, expect events\n");
+
+ ::Display *dpy = Display();
+ int deviceid;
+ ASSERT_TRUE(FindInputDeviceByName(dpy, "--device--", &deviceid));
+
+ XSelectInput(dpy, DefaultRootWindow(dpy), ButtonPressMask|ButtonReleaseMask|PointerMotionMask);
+
+ SetToClickOnly(dpy, deviceid);
+
+ dev->Play(RECORDINGS_DIR "touchpads/SynPS2-Synaptics-TouchPad-Clickpad.right-phys-click.events");
+
+ ASSERT_EVENT(XEvent, press, dpy, ButtonPress);
+ ASSERT_EQ(press->xbutton.button, 3);
+ ASSERT_EVENT(XEvent, release, dpy, ButtonRelease);
+ ASSERT_EQ(release->xbutton.button, 3);
+}
+
int main(int argc, char **argv) {
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();