|
Lines 1-11
Link Here
|
| 1 |
/* |
1 |
/* |
|
|
2 |
* Copyright 2006 Stefan Bethge <stefan.bethge@web.de> |
| 3 |
* patch for two-fingered scrolling |
| 4 |
* |
| 2 |
* Copyright 2004 Matthias Ihmig <m.ihmig@gmx.net> |
5 |
* Copyright 2004 Matthias Ihmig <m.ihmig@gmx.net> |
| 3 |
* patch for pressure dependent EdgeMotion speed |
6 |
* patch for pressure dependent EdgeMotion speed |
| 4 |
* |
7 |
* |
| 5 |
* Copyright 2004 Alexei Gilchrist <alexei@physics.uq.edu.au> |
8 |
* Copyright 2004 Alexei Gilchrist <alexei@physics.uq.edu.au> |
| 6 |
* patch for circular scrolling |
9 |
* patch for circular scrolling |
| 7 |
* |
10 |
* |
| 8 |
* Copyright 2003 Jörg Bösner <ich@joerg-boesner.de> |
11 |
* Copyright 2003 Jörg Bösner <ich@joerg-boesner.de> |
| 9 |
* patch for switching the touchpad off (for example, when a |
12 |
* patch for switching the touchpad off (for example, when a |
| 10 |
* USB mouse is connected) |
13 |
* USB mouse is connected) |
| 11 |
* |
14 |
* |
|
Lines 357-362
Link Here
|
| 357 |
"EmulateMidButtonTime", 75); |
360 |
"EmulateMidButtonTime", 75); |
| 358 |
pars->scroll_dist_vert = xf86SetIntOption(local->options, "VertScrollDelta", 100); |
361 |
pars->scroll_dist_vert = xf86SetIntOption(local->options, "VertScrollDelta", 100); |
| 359 |
pars->scroll_dist_horiz = xf86SetIntOption(local->options, "HorizScrollDelta", 100); |
362 |
pars->scroll_dist_horiz = xf86SetIntOption(local->options, "HorizScrollDelta", 100); |
|
|
363 |
pars->scroll_two_fingers = xf86SetIntOption(local->options, "TwoFingerScroll", 0); |
| 360 |
pars->edge_motion_min_z = xf86SetIntOption(local->options, "EdgeMotionMinZ", 30); |
364 |
pars->edge_motion_min_z = xf86SetIntOption(local->options, "EdgeMotionMinZ", 30); |
| 361 |
pars->edge_motion_max_z = xf86SetIntOption(local->options, "EdgeMotionMaxZ", 160); |
365 |
pars->edge_motion_max_z = xf86SetIntOption(local->options, "EdgeMotionMaxZ", 160); |
| 362 |
pars->edge_motion_min_speed = xf86SetIntOption(local->options, "EdgeMotionMinSpeed", 1); |
366 |
pars->edge_motion_min_speed = xf86SetIntOption(local->options, "EdgeMotionMinSpeed", 1); |
|
Lines 481-487
Link Here
|
| 481 |
static void |
485 |
static void |
| 482 |
SynapticsCtrl(DeviceIntPtr device, PtrCtrl *ctrl) |
486 |
SynapticsCtrl(DeviceIntPtr device, PtrCtrl *ctrl) |
| 483 |
{ |
487 |
{ |
| 484 |
DBG(3, ErrorF("SynapticsCtrl called.\n")); |
488 |
DBG(7, ErrorF("SynapticsCtrl called.\n")); |
| 485 |
/* |
489 |
/* |
| 486 |
pInfo = device->public.devicePrivate; |
490 |
pInfo = device->public.devicePrivate; |
| 487 |
pMse = pInfo->private; |
491 |
pMse = pInfo->private; |
|
Lines 523-529
Link Here
|
| 523 |
LocalDevicePtr local = (LocalDevicePtr) dev->public.devicePrivate; |
527 |
LocalDevicePtr local = (LocalDevicePtr) dev->public.devicePrivate; |
| 524 |
SynapticsPrivate *priv = (SynapticsPrivate *) (local->private); |
528 |
SynapticsPrivate *priv = (SynapticsPrivate *) (local->private); |
| 525 |
|
529 |
|
| 526 |
DBG(3, ErrorF("Synaptics DeviceOn called\n")); |
530 |
DBG(7, ErrorF("Synaptics DeviceOn called\n")); |
| 527 |
|
531 |
|
| 528 |
SetDeviceAndProtocol(local); |
532 |
SetDeviceAndProtocol(local); |
| 529 |
local->fd = xf86OpenSerial(local->options); |
533 |
local->fd = xf86OpenSerial(local->options); |
|
Lines 557-563
Link Here
|
| 557 |
LocalDevicePtr local = (LocalDevicePtr) dev->public.devicePrivate; |
561 |
LocalDevicePtr local = (LocalDevicePtr) dev->public.devicePrivate; |
| 558 |
SynapticsPrivate *priv = (SynapticsPrivate *) (local->private); |
562 |
SynapticsPrivate *priv = (SynapticsPrivate *) (local->private); |
| 559 |
|
563 |
|
| 560 |
DBG(3, ErrorF("Synaptics DeviceOff called\n")); |
564 |
DBG(7, ErrorF("Synaptics DeviceOff called\n")); |
| 561 |
|
565 |
|
| 562 |
if (local->fd != -1) { |
566 |
if (local->fd != -1) { |
| 563 |
TimerFree(priv->timer); |
567 |
TimerFree(priv->timer); |
|
Lines 593-599
Link Here
|
| 593 |
unsigned char map[SYN_MAX_BUTTONS + 1]; |
597 |
unsigned char map[SYN_MAX_BUTTONS + 1]; |
| 594 |
int i; |
598 |
int i; |
| 595 |
|
599 |
|
| 596 |
DBG(3, ErrorF("Synaptics DeviceInit called\n")); |
600 |
DBG(7, ErrorF("Synaptics DeviceInit called\n")); |
| 597 |
|
601 |
|
| 598 |
for (i = 0; i <= SYN_MAX_BUTTONS; i++) |
602 |
for (i = 0; i <= SYN_MAX_BUTTONS; i++) |
| 599 |
map[i] = i; |
603 |
map[i] = i; |
|
Lines 1192-1197
Link Here
|
| 1192 |
default: |
1196 |
default: |
| 1193 |
break; |
1197 |
break; |
| 1194 |
} |
1198 |
} |
|
|
1199 |
|
| 1195 |
if (moving_state && !priv->palm && |
1200 |
if (moving_state && !priv->palm && |
| 1196 |
!priv->vert_scroll_on && !priv->horiz_scroll_on && !priv->circ_scroll_on) { |
1201 |
!priv->vert_scroll_on && !priv->horiz_scroll_on && !priv->circ_scroll_on) { |
| 1197 |
delay = MIN(delay, 13); |
1202 |
delay = MIN(delay, 13); |
|
Lines 1357-1372
Link Here
|
| 1357 |
} |
1362 |
} |
| 1358 |
} |
1363 |
} |
| 1359 |
if (!priv->circ_scroll_on) { |
1364 |
if (!priv->circ_scroll_on) { |
| 1360 |
if ((para->scroll_dist_vert != 0) && (edge & RIGHT_EDGE)) { |
1365 |
switch (para->scroll_two_fingers) { |
| 1361 |
priv->vert_scroll_on = TRUE; |
1366 |
case 0: if ((para->scroll_dist_vert != 0) && (edge & RIGHT_EDGE)) { |
| 1362 |
priv->scroll_y = hw->y; |
1367 |
priv->vert_scroll_on = TRUE; |
| 1363 |
DBG(7, ErrorF("vert edge scroll detected on right edge\n")); |
1368 |
priv->scroll_y = hw->y; |
| 1364 |
} |
1369 |
DBG(7, ErrorF("vert edge scroll detected on right edge\n")); |
| 1365 |
if ((para->scroll_dist_horiz != 0) && (edge & BOTTOM_EDGE)) { |
1370 |
} |
| 1366 |
priv->horiz_scroll_on = TRUE; |
1371 |
if ((para->scroll_dist_horiz != 0) && (edge & BOTTOM_EDGE)) { |
| 1367 |
priv->scroll_x = hw->x; |
1372 |
priv->horiz_scroll_on = TRUE; |
| 1368 |
DBG(7, ErrorF("horiz edge scroll detected on bottom edge\n")); |
1373 |
priv->scroll_x = hw->x; |
| 1369 |
} |
1374 |
DBG(7, ErrorF("horiz edge scroll detected on bottom edge\n")); |
|
|
1375 |
} |
| 1376 |
break; |
| 1377 |
case 1: if ((para->scroll_dist_horiz != 0) && (hw->numFingers > 1)) { |
| 1378 |
priv->horiz_scroll_on = TRUE; |
| 1379 |
priv->scroll_x = hw->x; |
| 1380 |
DBG(7, ErrorF("horizontal two-finger scroll detected\n")); |
| 1381 |
} |
| 1382 |
break; |
| 1383 |
case 2: if ((para->scroll_dist_vert != 0) && (hw->numFingers > 1)) { |
| 1384 |
priv->vert_scroll_on = TRUE; |
| 1385 |
priv->scroll_y = hw->y; |
| 1386 |
DBG(7, ErrorF("vertical two-finger scroll detected\n")); |
| 1387 |
} |
| 1388 |
break; |
| 1389 |
case 3: if (((para->scroll_dist_vert != 0) |
| 1390 |
|| (para->scroll_dist_horiz != 0)) && (hw->numFingers > 1)) { |
| 1391 |
priv->horiz_scroll_on = TRUE; |
| 1392 |
priv->scroll_x = hw->x; |
| 1393 |
priv->vert_scroll_on = TRUE; |
| 1394 |
priv->scroll_y = hw->y; |
| 1395 |
DBG(7, ErrorF("bi-directional two-finger scroll detected\n")); |
| 1396 |
} |
| 1397 |
break; |
| 1398 |
default: break; |
| 1399 |
} |
| 1370 |
} |
1400 |
} |
| 1371 |
} |
1401 |
} |
| 1372 |
{ |
1402 |
{ |
|
Lines 1377-1387
Link Here
|
| 1377 |
DBG(7, ErrorF("cicular scroll off\n")); |
1407 |
DBG(7, ErrorF("cicular scroll off\n")); |
| 1378 |
priv->circ_scroll_on = FALSE; |
1408 |
priv->circ_scroll_on = FALSE; |
| 1379 |
} |
1409 |
} |
| 1380 |
if (priv->vert_scroll_on && (!(edge & RIGHT_EDGE) || !finger)) { |
1410 |
|
|
|
1411 |
if ((priv->vert_scroll_on || priv->horiz_scroll_on) |
| 1412 |
&& (hw->numFingers < 2) && para->scroll_two_fingers) { |
| 1413 |
DBG(7, ErrorF("two fingers scroll off\n")); |
| 1414 |
priv->horiz_scroll_on = FALSE; |
| 1415 |
priv->vert_scroll_on = FALSE; |
| 1416 |
} |
| 1417 |
|
| 1418 |
if (priv->vert_scroll_on && (!(edge & RIGHT_EDGE) || !finger) |
| 1419 |
&& !(para->scroll_two_fingers > 1)) { |
| 1381 |
DBG(7, ErrorF("vert edge scroll off\n")); |
1420 |
DBG(7, ErrorF("vert edge scroll off\n")); |
| 1382 |
priv->vert_scroll_on = FALSE; |
1421 |
priv->vert_scroll_on = FALSE; |
| 1383 |
} |
1422 |
} |
| 1384 |
if (priv->horiz_scroll_on && (!(edge & BOTTOM_EDGE) || !finger)) { |
1423 |
if (priv->horiz_scroll_on && (!(edge & BOTTOM_EDGE) || !finger) |
|
|
1424 |
&& !(para->scroll_two_fingers == 1 || para->scroll_two_fingers == 3)) { |
| 1385 |
DBG(7, ErrorF("horiz edge scroll off\n")); |
1425 |
DBG(7, ErrorF("horiz edge scroll off\n")); |
| 1386 |
priv->horiz_scroll_on = FALSE; |
1426 |
priv->horiz_scroll_on = FALSE; |
| 1387 |
} |
1427 |
} |