mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2026-05-08 13:38:40 +02:00
Merge branch 'tap-to-end-drag'
Changed the test merged in to use the new ranged litests functionality Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
commit
46171fbef3
5 changed files with 561 additions and 218 deletions
|
|
@ -33,6 +33,10 @@ continue the dragging process, so that multiple touchpad-widths of distance
|
||||||
can be covered easily. If two-fingers are supported by the hardware, a
|
can be covered easily. If two-fingers are supported by the hardware, a
|
||||||
second finger can be used to drag while the first is held in-place.
|
second finger can be used to drag while the first is held in-place.
|
||||||
|
|
||||||
|
An alternative method to end a drag process is to tap immediately after
|
||||||
|
lifting the finger. The full sequence is thus: tap, finger down, drag,
|
||||||
|
finger up, tap.
|
||||||
|
|
||||||
@section tap_constraints Constraints while tapping
|
@section tap_constraints Constraints while tapping
|
||||||
|
|
||||||
A couple of constraints apply to the contact to be converted into a press, the most common ones are:
|
A couple of constraints apply to the contact to be converted into a press, the most common ones are:
|
||||||
|
|
|
||||||
|
|
@ -562,15 +562,15 @@
|
||||||
</g>
|
</g>
|
||||||
<path d="M 1399 956 L 525.11 1211.21" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="none"/>
|
<path d="M 1399 956 L 525.11 1211.21" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="none"/>
|
||||||
<path d="M 520.07 1212.69 L 525.81 1207.36 L 525.11 1211.21 L 527.77 1214.08 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 520.07 1212.69 L 525.81 1207.36 L 525.11 1211.21 L 527.77 1214.08 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<path d="M 461.22 2027.1 C 462.36 2023.9 464.22 2022.04 466.18 2022.12 L 534.64 2022.12 C 536.2 2022.08 537.7 2022.63 538.67 2023.61 C 539.65 2024.59 539.99 2025.88 539.6 2027.1 L 520.75 2076.9 C 519.61 2080.1 517.75 2081.96 515.79 2081.88 L 446.34 2081.88 C 444.95 2081.69 443.73 2081.05 442.97 2080.1 C 442.22 2079.15 442 2077.99 442.37 2076.9 Z" fill="#ff6666" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 241.22 2117.1 C 242.36 2113.9 244.22 2112.04 246.18 2112.12 L 314.64 2112.12 C 316.2 2112.08 317.7 2112.63 318.67 2113.61 C 319.65 2114.59 319.99 2115.88 319.6 2117.1 L 300.75 2166.9 C 299.61 2170.1 297.75 2171.96 295.79 2171.88 L 226.34 2171.88 C 224.95 2171.69 223.73 2171.05 222.97 2170.1 C 222.22 2169.15 222 2167.99 222.37 2166.9 Z" fill="#ff6666" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="12px">
|
<g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="12px">
|
||||||
<text x="490.75" y="2048.75">
|
<text x="270.75" y="2138.75">
|
||||||
button 1</text>
|
button 1</text>
|
||||||
<text x="490.75" y="2062.75">
|
<text x="270.75" y="2152.75">
|
||||||
release</text>
|
release</text>
|
||||||
</g>
|
</g>
|
||||||
<path d="M 471 1257 L 489.84 2015.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 464 1257 L 279.35 2105.78" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<path d="M 489.97 2020.88 L 486.3 2013.97 L 489.84 2015.63 L 493.3 2013.8 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 278.24 2110.91 L 276.31 2103.32 L 279.35 2105.78 L 283.15 2104.81 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<path d="M 1071 2281 L 1489.25 2479.27" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 1071 2281 L 1489.25 2479.27" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<path d="M 1493.99 2481.52 L 1486.17 2481.69 L 1489.25 2479.27 L 1489.16 2475.36 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 1493.99 2481.52 L 1486.17 2481.69 L 1489.25 2479.27 L 1489.16 2475.36 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<path d="M 1071 1193 L 525.36 1223.64" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="none"/>
|
<path d="M 1071 1193 L 525.36 1223.64" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="none"/>
|
||||||
|
|
@ -768,15 +768,11 @@
|
||||||
</g>
|
</g>
|
||||||
<path d="M 729 1672 L 696.82 1714.91" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 729 1672 L 696.82 1714.91" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<path d="M 693.67 1719.11 L 695.07 1711.41 L 696.82 1714.91 L 700.67 1715.61 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 693.67 1719.11 L 695.07 1711.41 L 696.82 1714.91 L 700.67 1715.61 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<path d="M 612.5 1488.7 C 628.62 1494.91 646.38 1494.91 662.5 1488.7 C 678.62 1482.5 696.38 1482.5 712.5 1488.7 L 712.5 1541.28 C 696.38 1535.08 678.62 1535.08 662.5 1541.28 C 646.38 1547.49 628.62 1547.49 612.5 1541.28 L 612.5 1488.7 Z" fill="#ffd966" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 521.5 1723.7 C 537.62 1729.91 555.38 1729.91 571.5 1723.7 C 587.62 1717.5 605.38 1717.5 621.5 1723.7 L 621.5 1776.28 C 605.38 1770.08 587.62 1770.08 571.5 1776.28 C 555.38 1782.49 537.62 1782.49 521.5 1776.28 L 521.5 1723.7 Z" fill="#ffd966" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="12px">
|
<g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="12px">
|
||||||
<text x="662.25" y="1518.75">
|
<text x="571.25" y="1753.75">
|
||||||
TOUCH_TOUCH</text>
|
TOUCH_TOUCH</text>
|
||||||
</g>
|
</g>
|
||||||
<path d="M 575 1969 L 573.5 1969 Q 572 1969 572 1959 L 572 1525 Q 572 1515 582 1515 L 606.63 1515" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
|
||||||
<path d="M 611.88 1515 L 604.88 1518.5 L 606.63 1515 L 604.88 1511.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
|
||||||
<path d="M 713 1513 L 823.64 1509.22" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
|
||||||
<path d="M 828.88 1509.04 L 822.01 1512.78 L 823.64 1509.22 L 821.77 1505.78 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
|
||||||
<path d="M 918.5 1820.7 C 934.62 1826.91 952.38 1826.91 968.5 1820.7 C 984.62 1814.5 1002.38 1814.5 1018.5 1820.7 L 1018.5 1873.28 C 1002.38 1867.08 984.62 1867.08 968.5 1873.28 C 952.38 1879.49 934.62 1879.49 918.5 1873.28 L 918.5 1820.7 Z" fill="#7ea6e0" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 918.5 1820.7 C 934.62 1826.91 952.38 1826.91 968.5 1820.7 C 984.62 1814.5 1002.38 1814.5 1018.5 1820.7 L 1018.5 1873.28 C 1002.38 1867.08 984.62 1867.08 968.5 1873.28 C 952.38 1879.49 934.62 1879.49 918.5 1873.28 L 918.5 1820.7 Z" fill="#7ea6e0" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="12px">
|
<g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="12px">
|
||||||
<text x="968.25" y="1850.75">
|
<text x="968.25" y="1850.75">
|
||||||
|
|
@ -850,8 +846,8 @@
|
||||||
<text x="752.75" y="2162.25">
|
<text x="752.75" y="2162.25">
|
||||||
TOUCH_DEAD</text>
|
TOUCH_DEAD</text>
|
||||||
</g>
|
</g>
|
||||||
<path d="M 540 2072 L 697.1 2135.61" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 320 2144 L 696.64 2156.78" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<path d="M 701.96 2137.58 L 694.16 2138.2 L 697.1 2135.61 L 696.79 2131.71 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 701.88 2156.96 L 694.77 2160.22 L 696.64 2156.78 L 695.01 2153.23 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<path d="M 845.5 2185.7 C 861.62 2191.91 879.38 2191.91 895.5 2185.7 C 911.62 2179.5 929.38 2179.5 945.5 2185.7 L 945.5 2238.28 C 929.38 2232.08 911.62 2232.08 895.5 2238.28 C 879.38 2244.49 861.62 2244.49 845.5 2238.28 L 845.5 2185.7 Z" fill="#7ea6e0" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 845.5 2185.7 C 861.62 2191.91 879.38 2191.91 895.5 2185.7 C 911.62 2179.5 929.38 2179.5 945.5 2185.7 L 945.5 2238.28 C 929.38 2232.08 911.62 2232.08 895.5 2238.28 C 879.38 2244.49 861.62 2244.49 845.5 2238.28 L 845.5 2185.7 Z" fill="#7ea6e0" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="12px">
|
<g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="12px">
|
||||||
<text x="895.25" y="2215.75">
|
<text x="895.25" y="2215.75">
|
||||||
|
|
@ -911,15 +907,15 @@
|
||||||
<text x="252.25" y="937.75">
|
<text x="252.25" y="937.75">
|
||||||
finger down</text>
|
finger down</text>
|
||||||
</g>
|
</g>
|
||||||
<rect x="261.5" y="1063" width="209" height="40" rx="2.4" ry="2.4" fill="#ccffcc" stroke="#000000" stroke-width="2" pointer-events="none"/>
|
<rect x="261.5" y="1062" width="209" height="40" rx="2.4" ry="2.4" fill="#ccffcc" stroke="#000000" stroke-width="2" pointer-events="none"/>
|
||||||
<g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="12px">
|
<g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="12px">
|
||||||
<text x="365.75" y="1086.75">
|
<text x="365.75" y="1085.75">
|
||||||
MULTITAP</text>
|
MULTITAP</text>
|
||||||
</g>
|
</g>
|
||||||
<path d="M 456 1023 L 401.3 1059.47" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 455 1023 L 401.31 1058.49" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<path d="M 396.93 1062.38 L 400.81 1055.58 L 401.3 1059.47 L 404.7 1061.41 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 396.93 1061.38 L 400.84 1054.6 L 401.31 1058.49 L 404.7 1060.44 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<path d="M 351 1063 L 277.74 962.15" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 351 1062 L 277.77 962.14" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<path d="M 274.66 957.9 L 281.6 961.51 L 277.74 962.15 L 275.94 965.63 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 274.66 957.9 L 281.62 961.48 L 277.77 962.14 L 275.98 965.62 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<path d="M 312.54 1182 C 315.34 1178.86 319.32 1177.05 323.52 1177 L 357.49 1177 C 361.69 1177.05 365.67 1178.86 368.47 1182 L 388.45 1205 C 389.01 1206.28 389.01 1207.72 388.45 1209 L 368.47 1232 C 365.67 1235.14 361.69 1236.95 357.49 1237 L 323.52 1237 C 319.32 1236.95 315.34 1235.14 312.54 1232 L 292.56 1209 C 292 1207.72 292 1206.28 292.56 1205 L 312.54 1182 Z" fill="#ffd966" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 312.54 1182 C 315.34 1178.86 319.32 1177.05 323.52 1177 L 357.49 1177 C 361.69 1177.05 365.67 1178.86 368.47 1182 L 388.45 1205 C 389.01 1206.28 389.01 1207.72 388.45 1209 L 368.47 1232 C 365.67 1235.14 361.69 1236.95 357.49 1237 L 323.52 1237 C 319.32 1236.95 315.34 1235.14 312.54 1232 L 292.56 1209 C 292 1207.72 292 1206.28 292.56 1205 L 312.54 1182 Z" fill="#ffd966" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="12px">
|
<g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="12px">
|
||||||
<text x="340.25" y="1210.75">
|
<text x="340.25" y="1210.75">
|
||||||
|
|
@ -927,8 +923,8 @@
|
||||||
</g>
|
</g>
|
||||||
<path d="M 319 1237 L 276.68 1296.8" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 319 1237 L 276.68 1296.8" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<path d="M 273.65 1301.09 L 274.83 1293.35 L 276.68 1296.8 L 280.55 1297.4 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 273.65 1301.09 L 274.83 1293.35 L 276.68 1296.8 L 280.55 1297.4 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<path d="M 362 1103 L 348.27 1170.76" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 362 1102 L 348.25 1170.76" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<path d="M 347.22 1175.9 L 345.18 1168.35 L 348.27 1170.76 L 352.04 1169.74 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 347.22 1175.9 L 345.16 1168.35 L 348.25 1170.76 L 352.02 1169.73 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<ellipse cx="253" cy="1602" rx="49.5" ry="30" fill="#ccccff" stroke="#000000" stroke-width="2" pointer-events="none"/>
|
<ellipse cx="253" cy="1602" rx="49.5" ry="30" fill="#ccccff" stroke="#000000" stroke-width="2" pointer-events="none"/>
|
||||||
<g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="12px">
|
<g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="12px">
|
||||||
<text x="252.25" y="1605.75">
|
<text x="252.25" y="1605.75">
|
||||||
|
|
@ -1059,8 +1055,8 @@
|
||||||
<path d="M 927.82 793.9 L 923.23 787.55 L 926.97 788.72 L 930.14 786.42 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 927.82 793.9 L 923.23 787.55 L 926.97 788.72 L 930.14 786.42 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<path d="M 1002 967 L 1093.56 1361.8" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 1002 967 L 1093.56 1361.8" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<path d="M 1094.75 1366.91 L 1089.76 1360.88 L 1093.56 1361.8 L 1096.58 1359.3 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 1094.75 1366.91 L 1089.76 1360.88 L 1093.56 1361.8 L 1096.58 1359.3 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<path d="M 379 965 L 368.71 1056.67" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 379 965 L 368.72 1055.67" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<path d="M 368.12 1061.89 L 365.43 1054.54 L 368.71 1056.67 L 372.38 1055.32 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 368.13 1060.89 L 365.44 1053.54 L 368.72 1055.67 L 372.39 1054.33 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<path d="M 211.5 798.7 C 227.62 804.91 245.38 804.91 261.5 798.7 C 277.62 792.5 295.38 792.5 311.5 798.7 L 311.5 851.28 C 295.38 845.08 277.62 845.08 261.5 851.28 C 245.38 857.49 227.62 857.49 211.5 851.28 L 211.5 798.7 Z" fill="#ffd966" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 211.5 798.7 C 227.62 804.91 245.38 804.91 261.5 798.7 C 277.62 792.5 295.38 792.5 311.5 798.7 L 311.5 851.28 C 295.38 845.08 277.62 845.08 261.5 851.28 C 245.38 857.49 227.62 857.49 211.5 851.28 L 211.5 798.7 Z" fill="#ffd966" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="12px">
|
<g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="12px">
|
||||||
<text x="261.25" y="828.75">
|
<text x="261.25" y="828.75">
|
||||||
|
|
@ -1084,11 +1080,62 @@
|
||||||
<text x="50.25" y="1349.75">
|
<text x="50.25" y="1349.75">
|
||||||
press</text>
|
press</text>
|
||||||
</g>
|
</g>
|
||||||
<path d="M 341 1103 L 94 1298.05" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 341 1102 L 93 1298.05" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<path d="M 89.88 1301.31 L 93.2 1294.22 L 94 1298.05 L 97.54 1299.72 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 88.88 1301.31 L 92.2 1294.22 L 93 1298.05 L 96.54 1299.71 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<path d="M 73 1362 L 226.19 1566.9" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 73 1362 L 226.19 1566.9" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<path d="M 229.33 1571.1 L 222.34 1567.59 L 226.19 1566.9 L 227.94 1563.4 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 229.33 1571.1 L 222.34 1567.59 L 226.19 1566.9 L 227.94 1563.4 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<path d="M 718 602 L 484.35 1191.08" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 718 602 L 484.35 1191.08" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
<path d="M 482.41 1195.96 L 481.74 1188.16 L 484.35 1191.08 L 488.25 1190.74 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
<path d="M 482.41 1195.96 L 481.74 1188.16 L 484.35 1191.08 L 488.25 1190.74 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
|
<rect x="439.5" y="1512" width="209" height="40" rx="2.4" ry="2.4" fill="#ccffcc" stroke="#000000" stroke-width="2" pointer-events="none"/>
|
||||||
|
<g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="12px">
|
||||||
|
<text x="543.75" y="1535.75">
|
||||||
|
DRAGGING_OR_TAP</text>
|
||||||
|
</g>
|
||||||
|
<path d="M 424.04 1777 C 426.84 1773.86 430.82 1772.05 435.02 1772 L 468.99 1772 C 473.19 1772.05 477.17 1773.86 479.97 1777 L 499.95 1800 C 500.51 1801.28 500.51 1802.72 499.95 1804 L 479.97 1827 C 477.17 1830.14 473.19 1831.95 468.99 1832 L 435.02 1832 C 430.82 1831.95 426.84 1830.14 424.04 1827 L 404.06 1804 C 403.5 1802.72 403.5 1801.28 404.06 1800 L 424.04 1777 Z" fill="#ffd966" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
|
<g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="12px">
|
||||||
|
<text x="451.75" y="1798.75">
|
||||||
|
first</text>
|
||||||
|
<text x="451.75" y="1812.75">
|
||||||
|
finger up</text>
|
||||||
|
</g>
|
||||||
|
<path d="M 537 1552 L 464.05 1765.97" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
|
<path d="M 462.36 1770.94 L 461.31 1763.19 L 464.05 1765.97 L 467.93 1765.45 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
|
<path d="M 596.04 1417 C 598.84 1413.86 602.82 1412.05 607.02 1412 L 640.99 1412 C 645.19 1412.05 649.17 1413.86 651.97 1417 L 671.95 1440 C 672.51 1441.28 672.51 1442.72 671.95 1444 L 651.97 1467 C 649.17 1470.14 645.19 1471.95 640.99 1472 L 607.02 1472 C 602.82 1471.95 598.84 1470.14 596.04 1467 L 576.06 1444 C 575.5 1442.72 575.5 1441.28 576.06 1440 L 596.04 1417 Z" fill="#99ffff" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
|
<g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="12px">
|
||||||
|
<text x="623.75" y="1445.75">
|
||||||
|
timeout</text>
|
||||||
|
</g>
|
||||||
|
<path d="M 562 1512 L 592.81 1476.79" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
|
<path d="M 596.26 1472.84 L 594.29 1480.41 L 592.81 1476.79 L 589.02 1475.8 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
|
<path d="M 673 1454 L 823.8 1489.54" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
|
<path d="M 828.91 1490.74 L 821.3 1492.54 L 823.8 1489.54 L 822.9 1485.73 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
|
<path d="M 713.54 1517 C 716.34 1513.86 720.32 1512.05 724.52 1512 L 758.49 1512 C 762.69 1512.05 766.67 1513.86 769.47 1517 L 789.45 1540 C 790.01 1541.28 790.01 1542.72 789.45 1544 L 769.47 1567 C 766.67 1570.14 762.69 1571.95 758.49 1572 L 724.52 1572 C 720.32 1571.95 716.34 1570.14 713.54 1567 L 693.56 1544 C 693 1542.72 693 1541.28 693.56 1540 L 713.54 1517 Z" fill="#67ab9f" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
|
<g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="12px">
|
||||||
|
<text x="741.25" y="1538.75">
|
||||||
|
move > </text>
|
||||||
|
<text x="741.25" y="1552.75">
|
||||||
|
threshold</text>
|
||||||
|
</g>
|
||||||
|
<path d="M 649 1538 L 686.64 1539.71" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
|
<path d="M 691.88 1539.95 L 684.73 1543.13 L 686.64 1539.71 L 685.05 1536.13 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
|
<path d="M 790 1531 L 823.79 1523.4" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
|
<path d="M 828.91 1522.25 L 822.85 1527.2 L 823.79 1523.4 L 821.31 1520.37 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
|
<path d="M 616 1939 L 580.47 1789.2" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
|
<path d="M 579.26 1784.09 L 584.28 1790.09 L 580.47 1789.2 L 577.47 1791.71 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
|
<path d="M 567 1718 L 547.76 1558.32" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
|
<path d="M 547.13 1553.11 L 551.45 1559.64 L 547.76 1558.32 L 544.5 1560.48 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
|
<path d="M 568 1552 L 778.14 1729.89" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
|
<path d="M 782.15 1733.28 L 774.54 1731.43 L 778.14 1729.89 L 779.07 1726.08 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
|
<path d="M 469.5 2037.7 C 485.62 2043.91 503.38 2043.91 519.5 2037.7 C 535.62 2031.5 553.38 2031.5 569.5 2037.7 L 569.5 2090.28 C 553.38 2084.08 535.62 2084.08 519.5 2090.28 C 503.38 2096.49 485.62 2096.49 469.5 2090.28 L 469.5 2037.7 Z" fill="#ffd966" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
|
<g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="12px">
|
||||||
|
<text x="519.25" y="2067.75">
|
||||||
|
TOUCH_IDLE</text>
|
||||||
|
</g>
|
||||||
|
<path d="M 460 1832 L 509.43 2025.83" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
|
<path d="M 510.72 2030.92 L 505.6 2025 L 509.43 2025.83 L 512.39 2023.27 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
|
<path d="M 570 2054 L 877.75 1994.21" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
|
<path d="M 882.9 1993.21 L 876.7 1997.98 L 877.75 1994.21 L 875.36 1991.11 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
|
<path d="M 539 1512 L 479.48 1263.19" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
|
<path d="M 478.26 1258.09 L 483.29 1264.08 L 479.48 1263.19 L 476.48 1265.71 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 113 KiB After Width: | Height: | Size: 116 KiB |
|
|
@ -74,6 +74,7 @@ tap_state_to_str(enum tp_tap_state state)
|
||||||
CASE_RETURN_STRING(TAP_STATE_DRAGGING);
|
CASE_RETURN_STRING(TAP_STATE_DRAGGING);
|
||||||
CASE_RETURN_STRING(TAP_STATE_DRAGGING_WAIT);
|
CASE_RETURN_STRING(TAP_STATE_DRAGGING_WAIT);
|
||||||
CASE_RETURN_STRING(TAP_STATE_DRAGGING_OR_DOUBLETAP);
|
CASE_RETURN_STRING(TAP_STATE_DRAGGING_OR_DOUBLETAP);
|
||||||
|
CASE_RETURN_STRING(TAP_STATE_DRAGGING_OR_TAP);
|
||||||
CASE_RETURN_STRING(TAP_STATE_DRAGGING_2);
|
CASE_RETURN_STRING(TAP_STATE_DRAGGING_2);
|
||||||
CASE_RETURN_STRING(TAP_STATE_MULTITAP);
|
CASE_RETURN_STRING(TAP_STATE_MULTITAP);
|
||||||
CASE_RETURN_STRING(TAP_STATE_MULTITAP_DOWN);
|
CASE_RETURN_STRING(TAP_STATE_MULTITAP_DOWN);
|
||||||
|
|
@ -409,8 +410,8 @@ tp_tap_dragging_wait_handle_event(struct tp_dispatch *tp,
|
||||||
|
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case TAP_EVENT_TOUCH:
|
case TAP_EVENT_TOUCH:
|
||||||
tp->tap.state = TAP_STATE_DRAGGING;
|
tp->tap.state = TAP_STATE_DRAGGING_OR_TAP;
|
||||||
tp_tap_clear_timer(tp);
|
tp_tap_set_timer(tp, time);
|
||||||
break;
|
break;
|
||||||
case TAP_EVENT_RELEASE:
|
case TAP_EVENT_RELEASE:
|
||||||
case TAP_EVENT_MOTION:
|
case TAP_EVENT_MOTION:
|
||||||
|
|
@ -426,6 +427,32 @@ tp_tap_dragging_wait_handle_event(struct tp_dispatch *tp,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
tp_tap_dragging_tap_handle_event(struct tp_dispatch *tp,
|
||||||
|
struct tp_touch *t,
|
||||||
|
enum tap_event event, uint64_t time)
|
||||||
|
{
|
||||||
|
|
||||||
|
switch (event) {
|
||||||
|
case TAP_EVENT_TOUCH:
|
||||||
|
tp->tap.state = TAP_STATE_DRAGGING_2;
|
||||||
|
tp_tap_clear_timer(tp);
|
||||||
|
break;
|
||||||
|
case TAP_EVENT_RELEASE:
|
||||||
|
tp->tap.state = TAP_STATE_IDLE;
|
||||||
|
tp_tap_notify(tp, time, 1, LIBINPUT_BUTTON_STATE_RELEASED);
|
||||||
|
break;
|
||||||
|
case TAP_EVENT_MOTION:
|
||||||
|
case TAP_EVENT_TIMEOUT:
|
||||||
|
tp->tap.state = TAP_STATE_DRAGGING;
|
||||||
|
break;
|
||||||
|
case TAP_EVENT_BUTTON:
|
||||||
|
tp->tap.state = TAP_STATE_DEAD;
|
||||||
|
tp_tap_notify(tp, time, 1, LIBINPUT_BUTTON_STATE_RELEASED);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
tp_tap_dragging2_handle_event(struct tp_dispatch *tp,
|
tp_tap_dragging2_handle_event(struct tp_dispatch *tp,
|
||||||
struct tp_touch *t,
|
struct tp_touch *t,
|
||||||
|
|
@ -588,6 +615,9 @@ tp_tap_handle_event(struct tp_dispatch *tp,
|
||||||
case TAP_STATE_DRAGGING_WAIT:
|
case TAP_STATE_DRAGGING_WAIT:
|
||||||
tp_tap_dragging_wait_handle_event(tp, t, event, time);
|
tp_tap_dragging_wait_handle_event(tp, t, event, time);
|
||||||
break;
|
break;
|
||||||
|
case TAP_STATE_DRAGGING_OR_TAP:
|
||||||
|
tp_tap_dragging_tap_handle_event(tp, t, event, time);
|
||||||
|
break;
|
||||||
case TAP_STATE_DRAGGING_2:
|
case TAP_STATE_DRAGGING_2:
|
||||||
tp_tap_dragging2_handle_event(tp, t, event, time);
|
tp_tap_dragging2_handle_event(tp, t, event, time);
|
||||||
break;
|
break;
|
||||||
|
|
@ -692,6 +722,7 @@ tp_tap_handle_state(struct tp_dispatch *tp, uint64_t time)
|
||||||
case TAP_STATE_TOUCH:
|
case TAP_STATE_TOUCH:
|
||||||
case TAP_STATE_TAPPED:
|
case TAP_STATE_TAPPED:
|
||||||
case TAP_STATE_DRAGGING_OR_DOUBLETAP:
|
case TAP_STATE_DRAGGING_OR_DOUBLETAP:
|
||||||
|
case TAP_STATE_DRAGGING_OR_TAP:
|
||||||
case TAP_STATE_TOUCH_2:
|
case TAP_STATE_TOUCH_2:
|
||||||
case TAP_STATE_TOUCH_3:
|
case TAP_STATE_TOUCH_3:
|
||||||
case TAP_STATE_MULTITAP_DOWN:
|
case TAP_STATE_MULTITAP_DOWN:
|
||||||
|
|
@ -870,6 +901,7 @@ tp_tap_dragging(struct tp_dispatch *tp)
|
||||||
case TAP_STATE_DRAGGING:
|
case TAP_STATE_DRAGGING:
|
||||||
case TAP_STATE_DRAGGING_2:
|
case TAP_STATE_DRAGGING_2:
|
||||||
case TAP_STATE_DRAGGING_WAIT:
|
case TAP_STATE_DRAGGING_WAIT:
|
||||||
|
case TAP_STATE_DRAGGING_OR_TAP:
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -94,6 +94,7 @@ enum tp_tap_state {
|
||||||
TAP_STATE_TOUCH_3,
|
TAP_STATE_TOUCH_3,
|
||||||
TAP_STATE_TOUCH_3_HOLD,
|
TAP_STATE_TOUCH_3_HOLD,
|
||||||
TAP_STATE_DRAGGING_OR_DOUBLETAP,
|
TAP_STATE_DRAGGING_OR_DOUBLETAP,
|
||||||
|
TAP_STATE_DRAGGING_OR_TAP,
|
||||||
TAP_STATE_DRAGGING,
|
TAP_STATE_DRAGGING,
|
||||||
TAP_STATE_DRAGGING_WAIT,
|
TAP_STATE_DRAGGING_WAIT,
|
||||||
TAP_STATE_DRAGGING_2,
|
TAP_STATE_DRAGGING_2,
|
||||||
|
|
|
||||||
259
test/touchpad.c
259
test/touchpad.c
|
|
@ -501,6 +501,166 @@ START_TEST(touchpad_1fg_multitap_n_drag_timeout)
|
||||||
}
|
}
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST(touchpad_1fg_multitap_n_drag_tap)
|
||||||
|
{
|
||||||
|
struct litest_device *dev = litest_current_device();
|
||||||
|
struct libinput *li = dev->libinput;
|
||||||
|
struct libinput_event *event;
|
||||||
|
struct libinput_event_pointer *ptrev;
|
||||||
|
uint32_t oldtime = 0,
|
||||||
|
curtime;
|
||||||
|
int range = _i, /* looped test */
|
||||||
|
ntaps;
|
||||||
|
|
||||||
|
libinput_device_config_tap_set_enabled(dev->libinput_device,
|
||||||
|
LIBINPUT_CONFIG_TAP_ENABLED);
|
||||||
|
|
||||||
|
litest_drain_events(li);
|
||||||
|
|
||||||
|
for (ntaps = 0; ntaps <= range; ntaps++) {
|
||||||
|
litest_touch_down(dev, 0, 50, 50);
|
||||||
|
litest_touch_up(dev, 0);
|
||||||
|
libinput_dispatch(li);
|
||||||
|
msleep(10);
|
||||||
|
}
|
||||||
|
|
||||||
|
libinput_dispatch(li);
|
||||||
|
litest_touch_down(dev, 0, 50, 50);
|
||||||
|
libinput_dispatch(li);
|
||||||
|
|
||||||
|
litest_timeout_tap();
|
||||||
|
libinput_dispatch(li);
|
||||||
|
|
||||||
|
for (ntaps = 0; ntaps <= range; ntaps++) {
|
||||||
|
event = libinput_get_event(li);
|
||||||
|
ptrev = litest_is_button_event(event,
|
||||||
|
BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_PRESSED);
|
||||||
|
curtime = libinput_event_pointer_get_time(ptrev);
|
||||||
|
libinput_event_destroy(event);
|
||||||
|
ck_assert_int_gt(curtime, oldtime);
|
||||||
|
|
||||||
|
event = libinput_get_event(li);
|
||||||
|
ptrev = litest_is_button_event(event,
|
||||||
|
BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_RELEASED);
|
||||||
|
curtime = libinput_event_pointer_get_time(ptrev);
|
||||||
|
libinput_event_destroy(event);
|
||||||
|
ck_assert_int_ge(curtime, oldtime);
|
||||||
|
oldtime = curtime;
|
||||||
|
}
|
||||||
|
|
||||||
|
event = libinput_get_event(li);
|
||||||
|
ptrev = litest_is_button_event(event,
|
||||||
|
BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_PRESSED);
|
||||||
|
curtime = libinput_event_pointer_get_time(ptrev);
|
||||||
|
libinput_event_destroy(event);
|
||||||
|
ck_assert_int_gt(curtime, oldtime);
|
||||||
|
|
||||||
|
litest_touch_move_to(dev, 0, 50, 50, 70, 50, 10, 4);
|
||||||
|
|
||||||
|
litest_assert_only_typed_events(li,
|
||||||
|
LIBINPUT_EVENT_POINTER_MOTION);
|
||||||
|
|
||||||
|
litest_touch_up(dev, 0);
|
||||||
|
litest_touch_down(dev, 0, 70, 50);
|
||||||
|
litest_touch_up(dev, 0);
|
||||||
|
litest_assert_button_event(li,
|
||||||
|
BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_RELEASED);
|
||||||
|
|
||||||
|
litest_assert_empty_queue(li);
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST(touchpad_1fg_multitap_n_drag_tap_click)
|
||||||
|
{
|
||||||
|
struct litest_device *dev = litest_current_device();
|
||||||
|
struct libinput *li = dev->libinput;
|
||||||
|
struct libinput_event *event;
|
||||||
|
struct libinput_event_pointer *ptrev;
|
||||||
|
uint32_t oldtime = 0,
|
||||||
|
curtime;
|
||||||
|
int i, ntaps;
|
||||||
|
|
||||||
|
libinput_device_config_tap_set_enabled(dev->libinput_device,
|
||||||
|
LIBINPUT_CONFIG_TAP_ENABLED);
|
||||||
|
|
||||||
|
litest_drain_events(li);
|
||||||
|
|
||||||
|
for (i = 3; i < 5; i++) {
|
||||||
|
|
||||||
|
for (ntaps = 0; ntaps <= i; ntaps++) {
|
||||||
|
litest_touch_down(dev, 0, 50, 50);
|
||||||
|
litest_touch_up(dev, 0);
|
||||||
|
libinput_dispatch(li);
|
||||||
|
msleep(10);
|
||||||
|
}
|
||||||
|
|
||||||
|
libinput_dispatch(li);
|
||||||
|
litest_touch_down(dev, 0, 50, 50);
|
||||||
|
libinput_dispatch(li);
|
||||||
|
|
||||||
|
litest_timeout_tap();
|
||||||
|
libinput_dispatch(li);
|
||||||
|
|
||||||
|
for (ntaps = 0; ntaps <= i; ntaps++) {
|
||||||
|
event = libinput_get_event(li);
|
||||||
|
ptrev = litest_is_button_event(event,
|
||||||
|
BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_PRESSED);
|
||||||
|
curtime = libinput_event_pointer_get_time(ptrev);
|
||||||
|
libinput_event_destroy(event);
|
||||||
|
ck_assert_int_gt(curtime, oldtime);
|
||||||
|
|
||||||
|
event = libinput_get_event(li);
|
||||||
|
ptrev = litest_is_button_event(event,
|
||||||
|
BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_RELEASED);
|
||||||
|
curtime = libinput_event_pointer_get_time(ptrev);
|
||||||
|
libinput_event_destroy(event);
|
||||||
|
ck_assert_int_ge(curtime, oldtime);
|
||||||
|
oldtime = curtime;
|
||||||
|
}
|
||||||
|
|
||||||
|
event = libinput_get_event(li);
|
||||||
|
ptrev = litest_is_button_event(event,
|
||||||
|
BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_PRESSED);
|
||||||
|
curtime = libinput_event_pointer_get_time(ptrev);
|
||||||
|
libinput_event_destroy(event);
|
||||||
|
ck_assert_int_gt(curtime, oldtime);
|
||||||
|
|
||||||
|
litest_touch_move_to(dev, 0, 50, 50, 70, 50, 10, 4);
|
||||||
|
|
||||||
|
litest_assert_only_typed_events(li,
|
||||||
|
LIBINPUT_EVENT_POINTER_MOTION);
|
||||||
|
|
||||||
|
litest_touch_up(dev, 0);
|
||||||
|
litest_touch_down(dev, 0, 70, 50);
|
||||||
|
litest_button_click(dev, BTN_LEFT, true);
|
||||||
|
litest_button_click(dev, BTN_LEFT, false);
|
||||||
|
libinput_dispatch(li);
|
||||||
|
|
||||||
|
litest_assert_button_event(li,
|
||||||
|
BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_RELEASED);
|
||||||
|
|
||||||
|
/* the physical click */
|
||||||
|
litest_assert_button_event(li,
|
||||||
|
BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_PRESSED);
|
||||||
|
litest_assert_button_event(li,
|
||||||
|
BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_RELEASED);
|
||||||
|
litest_touch_up(dev, 0);
|
||||||
|
|
||||||
|
litest_assert_empty_queue(li);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
START_TEST(touchpad_1fg_tap_n_drag)
|
START_TEST(touchpad_1fg_tap_n_drag)
|
||||||
{
|
{
|
||||||
struct litest_device *dev = litest_current_device();
|
struct litest_device *dev = litest_current_device();
|
||||||
|
|
@ -542,6 +702,101 @@ START_TEST(touchpad_1fg_tap_n_drag)
|
||||||
}
|
}
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST(touchpad_1fg_tap_n_drag_tap)
|
||||||
|
{
|
||||||
|
struct litest_device *dev = litest_current_device();
|
||||||
|
struct libinput *li = dev->libinput;
|
||||||
|
|
||||||
|
libinput_device_config_tap_set_enabled(dev->libinput_device,
|
||||||
|
LIBINPUT_CONFIG_TAP_ENABLED);
|
||||||
|
|
||||||
|
litest_drain_events(li);
|
||||||
|
|
||||||
|
litest_touch_down(dev, 0, 50, 50);
|
||||||
|
litest_touch_up(dev, 0);
|
||||||
|
litest_touch_down(dev, 0, 50, 50);
|
||||||
|
litest_touch_move_to(dev, 0, 50, 50, 80, 80, 5, 40);
|
||||||
|
litest_touch_up(dev, 0);
|
||||||
|
|
||||||
|
libinput_dispatch(li);
|
||||||
|
|
||||||
|
litest_assert_button_event(li, BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_PRESSED);
|
||||||
|
|
||||||
|
libinput_dispatch(li);
|
||||||
|
|
||||||
|
litest_assert_only_typed_events(li, LIBINPUT_EVENT_POINTER_MOTION);
|
||||||
|
|
||||||
|
/* lift finger, set down again, should continue dragging */
|
||||||
|
litest_touch_down(dev, 0, 50, 50);
|
||||||
|
litest_touch_move_to(dev, 0, 50, 50, 80, 80, 5, 40);
|
||||||
|
|
||||||
|
litest_assert_only_typed_events(li, LIBINPUT_EVENT_POINTER_MOTION);
|
||||||
|
|
||||||
|
litest_touch_up(dev, 0);
|
||||||
|
litest_touch_down(dev, 0, 50, 50);
|
||||||
|
litest_touch_up(dev, 0);
|
||||||
|
|
||||||
|
litest_assert_button_event(li, BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_RELEASED);
|
||||||
|
|
||||||
|
litest_assert_empty_queue(li);
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST(touchpad_1fg_tap_n_drag_tap_click)
|
||||||
|
{
|
||||||
|
struct litest_device *dev = litest_current_device();
|
||||||
|
struct libinput *li = dev->libinput;
|
||||||
|
|
||||||
|
libinput_device_config_tap_set_enabled(dev->libinput_device,
|
||||||
|
LIBINPUT_CONFIG_TAP_ENABLED);
|
||||||
|
|
||||||
|
litest_drain_events(li);
|
||||||
|
|
||||||
|
litest_touch_down(dev, 0, 50, 50);
|
||||||
|
litest_touch_up(dev, 0);
|
||||||
|
litest_touch_down(dev, 0, 50, 50);
|
||||||
|
litest_touch_move_to(dev, 0, 50, 50, 80, 80, 5, 40);
|
||||||
|
litest_touch_up(dev, 0);
|
||||||
|
|
||||||
|
libinput_dispatch(li);
|
||||||
|
|
||||||
|
litest_assert_button_event(li, BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_PRESSED);
|
||||||
|
|
||||||
|
libinput_dispatch(li);
|
||||||
|
|
||||||
|
litest_assert_only_typed_events(li, LIBINPUT_EVENT_POINTER_MOTION);
|
||||||
|
|
||||||
|
/* lift finger, set down again, should continue dragging */
|
||||||
|
litest_touch_down(dev, 0, 50, 50);
|
||||||
|
litest_touch_move_to(dev, 0, 50, 50, 80, 80, 5, 40);
|
||||||
|
|
||||||
|
litest_assert_only_typed_events(li, LIBINPUT_EVENT_POINTER_MOTION);
|
||||||
|
|
||||||
|
litest_touch_up(dev, 0);
|
||||||
|
litest_touch_down(dev, 0, 50, 50);
|
||||||
|
litest_button_click(dev, BTN_LEFT, true);
|
||||||
|
litest_button_click(dev, BTN_LEFT, false);
|
||||||
|
libinput_dispatch(li);
|
||||||
|
|
||||||
|
litest_assert_button_event(li, BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_RELEASED);
|
||||||
|
|
||||||
|
/* the physical click */
|
||||||
|
litest_assert_button_event(li,
|
||||||
|
BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_PRESSED);
|
||||||
|
litest_assert_button_event(li,
|
||||||
|
BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_RELEASED);
|
||||||
|
litest_touch_up(dev, 0);
|
||||||
|
|
||||||
|
litest_assert_empty_queue(li);
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
START_TEST(touchpad_1fg_tap_n_drag_timeout)
|
START_TEST(touchpad_1fg_tap_n_drag_timeout)
|
||||||
{
|
{
|
||||||
struct litest_device *dev = litest_current_device();
|
struct litest_device *dev = litest_current_device();
|
||||||
|
|
@ -4283,10 +4538,12 @@ int main(int argc, char **argv)
|
||||||
litest_add("touchpad:tap", touchpad_1fg_doubletap, LITEST_TOUCHPAD, LITEST_ANY);
|
litest_add("touchpad:tap", touchpad_1fg_doubletap, LITEST_TOUCHPAD, LITEST_ANY);
|
||||||
litest_add_ranged("touchpad:tap", touchpad_1fg_multitap, LITEST_TOUCHPAD, LITEST_ANY, &multitap_range);
|
litest_add_ranged("touchpad:tap", touchpad_1fg_multitap, LITEST_TOUCHPAD, LITEST_ANY, &multitap_range);
|
||||||
litest_add_ranged("touchpad:tap", touchpad_1fg_multitap_n_drag_timeout, LITEST_TOUCHPAD, LITEST_ANY, &multitap_range);
|
litest_add_ranged("touchpad:tap", touchpad_1fg_multitap_n_drag_timeout, LITEST_TOUCHPAD, LITEST_ANY, &multitap_range);
|
||||||
|
litest_add_ranged("touchpad:tap", touchpad_1fg_multitap_n_drag_tap, LITEST_TOUCHPAD, LITEST_ANY, &multitap_range);
|
||||||
litest_add_ranged("touchpad:tap", touchpad_1fg_multitap_n_drag_move, LITEST_TOUCHPAD, LITEST_ANY, &multitap_range);
|
litest_add_ranged("touchpad:tap", touchpad_1fg_multitap_n_drag_move, LITEST_TOUCHPAD, LITEST_ANY, &multitap_range);
|
||||||
litest_add_ranged("touchpad:tap", touchpad_1fg_multitap_n_drag_2fg, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH, &multitap_range);
|
litest_add_ranged("touchpad:tap", touchpad_1fg_multitap_n_drag_2fg, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH, &multitap_range);
|
||||||
litest_add_ranged("touchpad:tap", touchpad_1fg_multitap_n_drag_click, LITEST_CLICKPAD, LITEST_ANY, &multitap_range);
|
litest_add_ranged("touchpad:tap", touchpad_1fg_multitap_n_drag_click, LITEST_CLICKPAD, LITEST_ANY, &multitap_range);
|
||||||
litest_add("touchpad:tap", touchpad_1fg_tap_n_drag, LITEST_TOUCHPAD, LITEST_ANY);
|
litest_add("touchpad:tap", touchpad_1fg_tap_n_drag, LITEST_TOUCHPAD, LITEST_ANY);
|
||||||
|
litest_add("touchpad:tap", touchpad_1fg_tap_n_drag_tap, LITEST_TOUCHPAD, LITEST_ANY);
|
||||||
litest_add("touchpad:tap", touchpad_1fg_tap_n_drag_timeout, LITEST_TOUCHPAD, LITEST_ANY);
|
litest_add("touchpad:tap", touchpad_1fg_tap_n_drag_timeout, LITEST_TOUCHPAD, LITEST_ANY);
|
||||||
litest_add("touchpad:tap", touchpad_2fg_tap_n_drag, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
|
litest_add("touchpad:tap", touchpad_2fg_tap_n_drag, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
|
||||||
litest_add("touchpad:tap", touchpad_2fg_tap_n_drag_3fg_btntool, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH|LITEST_APPLE_CLICKPAD);
|
litest_add("touchpad:tap", touchpad_2fg_tap_n_drag_3fg_btntool, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH|LITEST_APPLE_CLICKPAD);
|
||||||
|
|
@ -4315,6 +4572,8 @@ int main(int argc, char **argv)
|
||||||
pads with buttons */
|
pads with buttons */
|
||||||
litest_add("touchpad:tap", touchpad_1fg_double_tap_click, LITEST_CLICKPAD, LITEST_ANY);
|
litest_add("touchpad:tap", touchpad_1fg_double_tap_click, LITEST_CLICKPAD, LITEST_ANY);
|
||||||
litest_add("touchpad:tap", touchpad_1fg_tap_n_drag_click, LITEST_CLICKPAD, LITEST_ANY);
|
litest_add("touchpad:tap", touchpad_1fg_tap_n_drag_click, LITEST_CLICKPAD, LITEST_ANY);
|
||||||
|
litest_add("touchpad:tap", touchpad_1fg_multitap_n_drag_tap_click, LITEST_CLICKPAD, LITEST_ANY);
|
||||||
|
litest_add("touchpad:tap", touchpad_1fg_tap_n_drag_tap_click, LITEST_CLICKPAD, LITEST_ANY);
|
||||||
|
|
||||||
litest_add("touchpad:tap", touchpad_tap_default_disabled, LITEST_TOUCHPAD|LITEST_BUTTON, LITEST_ANY);
|
litest_add("touchpad:tap", touchpad_tap_default_disabled, LITEST_TOUCHPAD|LITEST_BUTTON, LITEST_ANY);
|
||||||
litest_add("touchpad:tap", touchpad_tap_default_enabled, LITEST_TOUCHPAD, LITEST_BUTTON);
|
litest_add("touchpad:tap", touchpad_tap_default_enabled, LITEST_TOUCHPAD, LITEST_BUTTON);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue