Take a look at our
ThinkPads.com HOME PAGE
For those who might want to contribute to the blog, start here: Editors Alley Topic
Then contact Bill with a Private Message

two-finger scrolling on T43 under XP?

Forum for scripts, utilities like TPFanControl, IBM-ECW, 2-finger scrolling, etc.
Message
Author
ranova
Posts: 37
Joined: Tue Oct 07, 2008 9:47 pm
Location: Framingham, MA

#61 Post by ranova » Sun Oct 12, 2008 5:12 pm

yak wrote:
ranova wrote:Just noticed in the intro of your script:
How do you do that? Or is it not working at the moment?
Hmm. It works for me. You just shortly tap with two fingers.

You may want to increase the tap settings at the top of the script. Maybe they're too strict for you.
Ah thank you, I was holding down one finger and tapping with the other. I think thats how it worked on a macbook - haven't used one in awhile though.

yak
ThinkPadder
ThinkPadder
Posts: 1256
Joined: Thu Dec 06, 2007 3:17 pm
Location: NRW, Germany

#62 Post by yak » Sun Oct 12, 2008 5:22 pm

ranova wrote:Ah thank you, I was holding down one finger and tapping with the other. I think thats how it worked on a macbook - haven't used one in awhile though.
Hmm. I used Mac's only occasionally so I didn't know how it's done there. But this is indeed a good idea because tapping with two fingers at the same time is a bit harder.

What do you think?

EDIT:
Thinking about it, it could be done like this: you hold down one finger and tap with the other. This would simulate a push (with no release) of the right button. The release would be simulated when the remaining finger is lifted up. This would allow dragging with right button. On the other hand it would be odd with popup menus because they would show up only when both fingers were removed.
ThinkPad™ X201 / AFFS-120
i5-560M 2.67Ghz, 8GB RAM, Samsung 840 Pro 256GB SSD, Win 8 Pro 64-bit, UltraBase X200, ThinkPad Compact USB Keyboard,
Dell U2713HM (2560x1440, IPS), ExpressCard USB 3.0 (2 ports, flush), Nexus 7+10

ranova
Posts: 37
Joined: Tue Oct 07, 2008 9:47 pm
Location: Framingham, MA

#63 Post by ranova » Sun Oct 12, 2008 5:53 pm

yak wrote:
ranova wrote:Ah thank you, I was holding down one finger and tapping with the other. I think thats how it worked on a macbook - haven't used one in awhile though.
Hmm. I used Mac's only occasionally so I didn't know how it's done there. But this is indeed a good idea because tapping with two fingers at the same time is a bit harder.

What do you think?

EDIT:
Thinking about it, it could be done like this: you hold down one finger and tap with the other. This would simulate a push (with no release) of the right button. The release would be simulated when the remaining finger is lifted up. This would allow dragging with right button. On the other hand it would be odd with popup menus because they would show up only when both fingers were removed.
I think the current method is fine - yes, it would be too odd for the menu to popup only after you released both fingers.

yak
ThinkPadder
ThinkPadder
Posts: 1256
Joined: Thu Dec 06, 2007 3:17 pm
Location: NRW, Germany

#64 Post by yak » Sun Oct 12, 2008 6:41 pm

Another update. The tap will now work in both ways:
- tapping with two fingers
- holding one and tapping with another (new)

Other minor improvements added too. For example the driver reports some unreal movement deltas sometimes, especially upon touching. The new version ignores them.

The link once again:
TwoFingerScroll.pyw

Notice that the new way of tapping prevents from accidental left button taps and lets you easily handle popup menus. Point with one finger, tap with another to bring up the popup menu, without lifting the first finger move to an option and tap with another finger again to select. Well, there usually won't be enough place on the TouchPad for this but still :)
ThinkPad™ X201 / AFFS-120
i5-560M 2.67Ghz, 8GB RAM, Samsung 840 Pro 256GB SSD, Win 8 Pro 64-bit, UltraBase X200, ThinkPad Compact USB Keyboard,
Dell U2713HM (2560x1440, IPS), ExpressCard USB 3.0 (2 ports, flush), Nexus 7+10

ranova
Posts: 37
Joined: Tue Oct 07, 2008 9:47 pm
Location: Framingham, MA

#65 Post by ranova » Sun Oct 12, 2008 7:57 pm

amazing! Great job on the script - seems to be almost ready for prime time usage :)

oh, one request, could you implement the WHEEL_DATA stuff into your chiral rotate script - so it will work well with onenote and other programs?

Thanks!

cxls
Freshman Member
Posts: 118
Joined: Fri Oct 20, 2006 11:08 pm
Location: Cumberland, Rhode Island

#66 Post by cxls » Sun Oct 12, 2008 9:28 pm

Anyone know how to automate selection of the Synaptics control widgets in setup.py? I'm trying to make TwoWheelScrolling and ChiralScrolling executables.

I thought this would do it, but it didn't:

Code: Select all

"typelibs": [('{82D70786-7968-46EA-836D-203AEBCA4481}', 0, 1, 0)]
I got that ID by running makepy.py -i and selecting the Synaptics control widget.

Additionally, I tried inserting this into the TwoFingerScrolling.py file itself:

Code: Select all

from win32com.client import gencache
gencache.EnsureModule('{82D70786-7968-46EA-836D-203AEBCA4481}', 0, 1, 0)
Still no-go on workable .exe creation. The latter option would also eliminate the need to select the Synaptics widgets even when just running the py scripts as-is, I believe.
IBM ThinkPad T60p 2623-DDU | Intel Core Duo 2.0 GHz T2500 | 2 GB RAM | 256 MB ATI FireGL V5200 | 100 GB 7200 RPM SATA HDD | 15" UXGA BOE-Hydis (1600x1200) | NMB Keyboard | 9 Cell Battery x2

ranova
Posts: 37
Joined: Tue Oct 07, 2008 9:47 pm
Location: Framingham, MA

#67 Post by ranova » Sun Oct 12, 2008 9:41 pm

Ive tried messing around with pyinstaller1.3 and had no luck, it gave some compiling errors and when you run it, it doesnt seem to do anything. Like Yak said earlier, it will probably be rewritten in C++ when he gets the chance.

I know people hate having more applications run, but if you want the script to automatically execute after waking from sleep, use this program:
http://www.desimonesystems.com/suspendtrigger/index.php
and set it to run the script on resume.

Seems to use about 5-6 megs of memory.

You can also create a task event:
I used a system information event [resuming from sleep] as my trigger. Here's how -
1. Open task sheduler [press windows key, type task, click on task scheduler at the top of the menu list]
2. In Actions [menu or right pane] click 'new task'
3. In General tab, give your task a name
4. In Trigger tab, click 'new'
5. Choose 'on an event' in the top drop-down list.
6. Choose 'custom' radio button
7. Click on the 'new event filter' button that now appears.
8. For event level, choose 'information'
9. In 'event logs' drop-down menu, choose windows logs > system. Put a tick next to 'system' only
10. Click on the text 'All event ID's' [the text will clear] and insert 1
11. Click ok
12. In the 'Actions' tab, choose the program you want to start by clicking 'new'
13. In the 'new action' window, use the browse button to navigate to the .exe of the program you want to run. If you have a shortcut on your desktop for the program, you can simply choose that and scheduler will extract the path from the shortcut.

Edit:
You should use the vbs script I created below this post to automatically terminate all pythonw.exe processes (each takes around 10 megs of memory) and relaunch the script for you, otherwise you may end up with a lot of pythonw.exe processes each time you load up the script manually
Last edited by ranova on Sun Oct 12, 2008 11:38 pm, edited 3 times in total.

ranova
Posts: 37
Joined: Tue Oct 07, 2008 9:47 pm
Location: Framingham, MA

#68 Post by ranova » Sun Oct 12, 2008 11:13 pm

I quickly created a VB script that terminates all processes of pythonw.exe and relaunches twofingerscroll script


Paste in notepad and save as whatever.vbs

Code: Select all

' Python Process Kill
'
' Usage:
' * Edit the path to your python script near the end of the script
' * Developed and tested with Python 2.5 in Windows Vista
' * Quick and dirty way to kill all python processes and relaunch python script


Option Explicit
Dim objWMIService, objProcess, colProcess, WshShell
Dim strComputer, strProcessKill
strComputer = "."
strProcessKill = "'pythonw.exe'"

Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")

Set colProcess = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = " & strProcessKill )
For Each objProcess in colProcess
objProcess.Terminate()

Next
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "C:\Python25\TwoFingerScroll.pyw"
Wscript.Quit

Wscript.Quit

You can edit this to your needs to launch a different script (or program) - it is recommended you use this script each time you launch the script since each time you open up a python script it opens another process. You can use this with Hibernate Trigger to automatically terminate pythonw.exe and relaunch the script upon waking up from sleep.

Hopefully someone will be able to code this all into one single file to run once during a system startup soon :)

yak
ThinkPadder
ThinkPadder
Posts: 1256
Joined: Thu Dec 06, 2007 3:17 pm
Location: NRW, Germany

#69 Post by yak » Mon Oct 13, 2008 2:27 pm

I've started writing the C++ implementation. I successfully got the Synaptics API working and I was able to fix the wakeup problem. Stay tuned.
ThinkPad™ X201 / AFFS-120
i5-560M 2.67Ghz, 8GB RAM, Samsung 840 Pro 256GB SSD, Win 8 Pro 64-bit, UltraBase X200, ThinkPad Compact USB Keyboard,
Dell U2713HM (2560x1440, IPS), ExpressCard USB 3.0 (2 ports, flush), Nexus 7+10

ranova
Posts: 37
Joined: Tue Oct 07, 2008 9:47 pm
Location: Framingham, MA

#70 Post by ranova » Mon Oct 13, 2008 2:53 pm

yak wrote:I've started writing the C++ implementation. I successfully got the Synaptics API working and I was able to fix the wakeup problem. Stay tuned.
Great, cannot wait!

yak
ThinkPadder
ThinkPadder
Posts: 1256
Joined: Thu Dec 06, 2007 3:17 pm
Location: NRW, Germany

#71 Post by yak » Tue Oct 14, 2008 6:55 am

Ok, here it goes:
TwoFingerScroll.exe

Just save the exe wherever you want and start it. An icon should appear in the tray and scrolling should start working. Double click the icon to bring up the settings dialog where you may want to make the tool start with the windows or enable the tapping.

Let me know how it works for you.
ThinkPad™ X201 / AFFS-120
i5-560M 2.67Ghz, 8GB RAM, Samsung 840 Pro 256GB SSD, Win 8 Pro 64-bit, UltraBase X200, ThinkPad Compact USB Keyboard,
Dell U2713HM (2560x1440, IPS), ExpressCard USB 3.0 (2 ports, flush), Nexus 7+10

ranova
Posts: 37
Joined: Tue Oct 07, 2008 9:47 pm
Location: Framingham, MA

#72 Post by ranova » Tue Oct 14, 2008 11:40 am

Before I link this to my friends, do you still need to add the registry change? Or does this do it for you

thanks!

Just tried it out and it works great! Cant wait for the chiralscroll implemented also

Thanks for everything yak.

yak
ThinkPadder
ThinkPadder
Posts: 1256
Joined: Thu Dec 06, 2007 3:17 pm
Location: NRW, Germany

#73 Post by yak » Tue Oct 14, 2008 11:57 am

Haven't tested the code yet but yes, it checks for multiple fingers support and tries to enable it if possible.

In such case you will get a message asking you to reboot (clicking 'OK' should restart the system).

EDIT

File updated to v1.0.1.

New:
* fixed a performance bug when the Active checkitem in popup menu was disabled and reenabled,
* minor gesture improvement: if edgemotion is enabled and you start the scroll in the edge area, the edgemotion isn't triggered unless you move the fingers away from the edge and move them back.

I think I'll move this project to Google Code so I can easily maintain updates and source code.
Last edited by yak on Tue Oct 14, 2008 12:15 pm, edited 1 time in total.
ThinkPad™ X201 / AFFS-120
i5-560M 2.67Ghz, 8GB RAM, Samsung 840 Pro 256GB SSD, Win 8 Pro 64-bit, UltraBase X200, ThinkPad Compact USB Keyboard,
Dell U2713HM (2560x1440, IPS), ExpressCard USB 3.0 (2 ports, flush), Nexus 7+10

ranova
Posts: 37
Joined: Tue Oct 07, 2008 9:47 pm
Location: Framingham, MA

#74 Post by ranova » Tue Oct 14, 2008 12:08 pm

My friend got an error thats similar to this:

Class not registered, Class ID
{9C042297

Ill test it with the registry change in a bit

yak
ThinkPadder
ThinkPadder
Posts: 1256
Joined: Thu Dec 06, 2007 3:17 pm
Location: NRW, Germany

#75 Post by yak » Tue Oct 14, 2008 12:17 pm

I don't think that will help. Seems like some problem with Synaptics drivers, are you sure he has them properly installed?
ThinkPad™ X201 / AFFS-120
i5-560M 2.67Ghz, 8GB RAM, Samsung 840 Pro 256GB SSD, Win 8 Pro 64-bit, UltraBase X200, ThinkPad Compact USB Keyboard,
Dell U2713HM (2560x1440, IPS), ExpressCard USB 3.0 (2 ports, flush), Nexus 7+10

ranova
Posts: 37
Joined: Tue Oct 07, 2008 9:47 pm
Location: Framingham, MA

#76 Post by ranova » Tue Oct 14, 2008 12:28 pm

yak wrote:I don't think that will help. Seems like some problem with Synaptics drivers, are you sure he has them properly installed?
seems like he has old dell ones installed. He'll update them later when he gets home.

yak
ThinkPadder
ThinkPadder
Posts: 1256
Joined: Thu Dec 06, 2007 3:17 pm
Location: NRW, Germany

#77 Post by yak » Tue Oct 14, 2008 1:55 pm

Dell... yuck! ;)

But anyway, it would be good to know the minimal version of the driver and the TouchPad firmware. The latter one can be seen in mouse properties, unfortunately not in Lenovo drivers.

Could someone test it on a T4x?

The things this tool absolutely requires are:
- Synaptics TouchPad,
- Synaptics drivers (what's important is the SynCOM.dll, installed and registered).

I'm testing it on a T60 from my sig, with latest drivers from Lenovo (v11 series).

@renova

If nothing helps about the classid problem, he may want to try this command, assuming the Synaptics driver files are in place:

Code: Select all

regsvr32 %systemroot%\system32\syncom.dll
I have an old Dell Latitude D800 here and it has an Apls TouchPad, not Synaptics.
ThinkPad™ X201 / AFFS-120
i5-560M 2.67Ghz, 8GB RAM, Samsung 840 Pro 256GB SSD, Win 8 Pro 64-bit, UltraBase X200, ThinkPad Compact USB Keyboard,
Dell U2713HM (2560x1440, IPS), ExpressCard USB 3.0 (2 ports, flush), Nexus 7+10

ranova
Posts: 37
Joined: Tue Oct 07, 2008 9:47 pm
Location: Framingham, MA

#78 Post by ranova » Tue Oct 14, 2008 2:11 pm

haha, hey now

Ive been testing your stuff on my dell xps m1330 all along and it has worked fine - but I use generic synaptic drivers.

Ill let him know later

yak
ThinkPadder
ThinkPadder
Posts: 1256
Joined: Thu Dec 06, 2007 3:17 pm
Location: NRW, Germany

#79 Post by yak » Tue Oct 14, 2008 4:44 pm

The project has now its home at Google Code:

http://code.google.com/p/two-finger-scroll/

The direct exe link posted before no longer works. Go to Downloads on the project page to get TwoFingerScroll.

The source code can be found in SVN, published under the Apache 2.0 license. You will need CodeGear C++Builder to compile it.
ThinkPad™ X201 / AFFS-120
i5-560M 2.67Ghz, 8GB RAM, Samsung 840 Pro 256GB SSD, Win 8 Pro 64-bit, UltraBase X200, ThinkPad Compact USB Keyboard,
Dell U2713HM (2560x1440, IPS), ExpressCard USB 3.0 (2 ports, flush), Nexus 7+10

ranova
Posts: 37
Joined: Tue Oct 07, 2008 9:47 pm
Location: Framingham, MA

#80 Post by ranova » Tue Oct 14, 2008 8:58 pm

hey yak,
I had a few concerns after using it for 3 hours in class.

First is battery life: My battery life went down considerably. Normally I could use my laptop for around 3 hours in class without charging. My battery died in 2 hours 15 minutes after having the exe run the full time. Not sure how much strain this causes when scrolling and if thats even fixable. Ill try again for my 3 hour class tomorrow. I see that the cpu usage goes higher then regular scrolling.

I've also noticed that with the exe and the old script, it accesses the hard disk a lot. I used AnVir Task Manager and twofingerscroll.exe (or pythonw.exe if you use the script) always is about 7-10kb/s accessing the hard drive.

Second is smoothness. I have the hacked asus drivers installed, so chiralrotate and side scrolling is still enabled. I notice a huge difference in scrolling between side scroll\chiralrotate and the double finger scrolling. With the sidescroll or chiralrotate, the scrolling on screen is very smooth. With double finger, its noticably jumpy and not smooth at all. Is this just a variable that can be changed or is that how it works?

Thanks again

yak
ThinkPadder
ThinkPadder
Posts: 1256
Joined: Thu Dec 06, 2007 3:17 pm
Location: NRW, Germany

#81 Post by yak » Wed Oct 15, 2008 3:02 am

I have worked on battery too, yesterday, and didn't notice any change in battery life. I'll do some more tests too.

I'm not sure if this is harddisk but there's definitely some I/O going on. It is caused by the API so it's out of my control. The SynTPEnh.exe task seems to behave the same. Also, the SynMood.exe demo tool from the Synaptics folder does this. It would therefore seems to be normal.

I have to agree about smoothness. One of the causes is the scroll amount cumulation code proposed by Zender. Since the scrolling is done by simulation a mouse wheel, this code ensures that the applications only receive the whole "clicks" of the wheel. This was added because some apps don't handle partial "clicks" properly (as I recall, OneNote was one of them). However, this also made the scroll jumpy in applications that do things properly (like Firefox).

I'm currently looking for a good solution that would give us a more smooth scroll while retaining compatibility.

Added:
I have an idea to make the scroll smooth by default and if the Shift+Ctrl is pressed while scrolling, it would switch to a jumpy one on an application basis. So you would have to do it once in OneNote and then it would just work.
ThinkPad™ X201 / AFFS-120
i5-560M 2.67Ghz, 8GB RAM, Samsung 840 Pro 256GB SSD, Win 8 Pro 64-bit, UltraBase X200, ThinkPad Compact USB Keyboard,
Dell U2713HM (2560x1440, IPS), ExpressCard USB 3.0 (2 ports, flush), Nexus 7+10

ranova
Posts: 37
Joined: Tue Oct 07, 2008 9:47 pm
Location: Framingham, MA

#82 Post by ranova » Wed Oct 15, 2008 4:47 am

yak wrote:I have worked on battery too, yesterday, and didn't notice any change in battery life. I'll do some more tests too.

I'm not sure if this is harddisk but there's definitely some I/O going on. It is caused by the API so it's out of my control. The SynTPEnh.exe task seems to behave the same. Also, the SynMood.exe demo tool from the Synaptics folder does this. It would therefore seems to be normal.

I have to agree about smoothness. One of the causes is the scroll amount cumulation code proposed by Zender. Since the scrolling is done by simulation a mouse wheel, this code ensures that the applications only receive the whole "clicks" of the wheel. This was added because some apps don't handle partial "clicks" properly (as I recall, OneNote was one of them). However, this also made the scroll jumpy in applications that do things properly (like Firefox).

I'm currently looking for a good solution that would give us a more smooth scroll while retaining compatibility.

Added:
I have an idea to make the scroll smooth by default and if the Shift+Ctrl is pressed while scrolling, it would switch to a jumpy one on an application basis. So you would have to do it once in OneNote and then it would just work.
hmm that is a good idea. Also, how about that option and an option for "compatibility mode" which would turn on that method described. Turning it off would result in regular scrolling.

yak
ThinkPadder
ThinkPadder
Posts: 1256
Joined: Thu Dec 06, 2007 3:17 pm
Location: NRW, Germany

#83 Post by yak » Wed Oct 15, 2008 6:59 am

Try the v1.0.2
http://code.google.com/p/two-finger-scr ... loads/list

I've added a Scroll Mode setting where you can choose between compatible mode, smooth mode and a smart mode. The last one chooses smooth by default but lets you use Ctrl+Shift+Alt+Scroll to switch to compatible (and back) per application.

By default the compatible mode is set (v1.0.1 behavior).

You may also have to set the acceleration again (if you've changed it) since the registry value name changed.

I really like how the smooth mode works in IE. In Firefox (without any extensions) it's almost the same as compatible mode when the number of lines per mouse wheel tick is set to 1 in Mouse control panel.
ThinkPad™ X201 / AFFS-120
i5-560M 2.67Ghz, 8GB RAM, Samsung 840 Pro 256GB SSD, Win 8 Pro 64-bit, UltraBase X200, ThinkPad Compact USB Keyboard,
Dell U2713HM (2560x1440, IPS), ExpressCard USB 3.0 (2 ports, flush), Nexus 7+10

ranova
Posts: 37
Joined: Tue Oct 07, 2008 9:47 pm
Location: Framingham, MA

#84 Post by ranova » Wed Oct 15, 2008 2:45 pm

yak wrote:Try the v1.0.2
http://code.google.com/p/two-finger-scr ... loads/list

I've added a Scroll Mode setting where you can choose between compatible mode, smooth mode and a smart mode. The last one chooses smooth by default but lets you use Ctrl+Shift+Alt+Scroll to switch to compatible (and back) per application.

By default the compatible mode is set (v1.0.1 behavior).

You may also have to set the acceleration again (if you've changed it) since the registry value name changed.

I really like how the smooth mode works in IE. In Firefox (without any extensions) it's almost the same as compatible mode when the number of lines per mouse wheel tick is set to 1 in Mouse control panel.
Do you think it will be possible to implement the tweaks that "Yet another smooth mouse" addon for firefox does to the standalone exe so it works in every program?

Thanks Ill give 1.02 a try

edit: gave it a test for my class tonight - it seems like battery is pretty normal. Although I didnt notice any difference between compatibility mode or smooth mode in FF or other programs. I can see the diff with the two in onenote 2007 (smooth is very jumpy, needs to be on compat mode)

Zender
Junior Member
Junior Member
Posts: 315
Joined: Sun Mar 18, 2007 8:34 pm
Location: Prague, Czech Republic
Contact:

#85 Post by Zender » Thu Oct 16, 2008 2:33 am

Hello there :)

I have to admit the application is quite nice. Seems to work a little better than the Python script, this time there's a difference between smooth and compatible mode in Firefox, unfortunately still the zooming works bad with smooth.

Nevertheless, I'd like to say that it happened to me not once that my finger reached edge of touchpad, "edgemotion" activated and when I was half way through the page, the scrolling direction reversed (at full speed). I guess I just moved the fingers a little, but still in the edge area. Could you please force edges to scroll only in the direction in which the edge is from center?

Second I miss the option to set tap_max_distance, because the two-finger click does often scroll instead.

Though I might eventually not be lazy and fix it myself. Thanks for all your effort, yak :)
Last edited by Zender on Mon Oct 20, 2008 8:08 pm, edited 1 time in total.
T60 14" SXGA+ 9c T5600 3GB X1400 4965AGN MC8780 IR BT FPR DVDRW Alps XPP

yak
ThinkPadder
ThinkPadder
Posts: 1256
Joined: Thu Dec 06, 2007 3:17 pm
Location: NRW, Germany

#86 Post by yak » Thu Oct 16, 2008 3:18 am

@renova

Adding something like the smoothing extension of firefox globally would be tricky at least.

Try the difference between smooth and compatible in IE7 for example, you surely can see a difference there.

@Zender

Thanks.

I'll try to improve "edge motion".

What value did you use in the script for tap_max_distance?

Added:
My latest idea about the scrolling is that maybe instead of reinventing the wheel with all those smooth and compatible modes I should try to reuse the vertical (and horizontal!) edge scrolling of the Synaptics driver. The API has this nice function to send the data to the driver as if they were generated by the actual TouchPad. It would be therefore theoretically possible to translate two finger scrolling into edge scrolling, of course with our own acceleration algorithm and stuff (I find the acceleration of edge scrolling too aggressive). I'll do some Python testing.

Added:
Or maybe not. The edge scrolling isn't smooth anyway.
ThinkPad™ X201 / AFFS-120
i5-560M 2.67Ghz, 8GB RAM, Samsung 840 Pro 256GB SSD, Win 8 Pro 64-bit, UltraBase X200, ThinkPad Compact USB Keyboard,
Dell U2713HM (2560x1440, IPS), ExpressCard USB 3.0 (2 ports, flush), Nexus 7+10

yak
ThinkPadder
ThinkPadder
Posts: 1256
Joined: Thu Dec 06, 2007 3:17 pm
Location: NRW, Germany

#87 Post by yak » Fri Oct 17, 2008 7:01 am

1.0.3 update.

Small fixes plus a new setting:
* Tap max finger distance

Download:
http://code.google.com/p/two-finger-scr ... loads/list
ThinkPad™ X201 / AFFS-120
i5-560M 2.67Ghz, 8GB RAM, Samsung 840 Pro 256GB SSD, Win 8 Pro 64-bit, UltraBase X200, ThinkPad Compact USB Keyboard,
Dell U2713HM (2560x1440, IPS), ExpressCard USB 3.0 (2 ports, flush), Nexus 7+10

integra97
Posts: 2
Joined: Fri Oct 17, 2008 6:38 pm
Location: Vancouver,Canada

Inspiron 9400 support?

#88 Post by integra97 » Fri Oct 17, 2008 7:09 pm

Hey this is great work i'm glad i stumbed across this thread.

I was wondering if it is possible to get this working on my Dell Inspiron 9400 I see that it has worked on another dell system already.

Maybe I'm missing a step? I've installed the latest 10.1.8 version of synaptics generic vista driver. And i get the message that my touch pad doesn't support multiple fingers-- I think i have seen it work on Linux though.

Thanks again for your hard work

yak
ThinkPadder
ThinkPadder
Posts: 1256
Joined: Thu Dec 06, 2007 3:17 pm
Location: NRW, Germany

#89 Post by yak » Sat Oct 18, 2008 4:37 pm

Welcome to the ThinkPads forum. I hope you have a ThinkPad too or plan to get one soon :D

But on to your problem...

After you installed the drivers and started the TwoFingerScroll utility, you should get a message saying that multiple fingers support has been enabled in the driver and that a system restart is required for the change to take effect.

I've just checked and there is a bug in the current version. Even if you click "Yes" which should restart the system, it won't - you have to restart manually.

If you won't and start TwoFingerScroll again, it will notice that the support has been enabled but the driver still refuses to report multiple fingers (because it wasn't restarted). So, it will complain that the TouchPad doesn't support multiple fingers.

If that's the case, try restarting the system and try again.

If it still doesn't work, try installing the modded driver from this page (uninstall previous drivers first):
http://www.laptopvideo2go.com/forum/ind ... 17890&st=0

This driver has the multiple finger support enabled by default. It has also some nice features enabled like 2- and 3-finger swiping gestures. Go to the TouchPad preferences to enable them and see if they work. If they do not, I can't help you.
ThinkPad™ X201 / AFFS-120
i5-560M 2.67Ghz, 8GB RAM, Samsung 840 Pro 256GB SSD, Win 8 Pro 64-bit, UltraBase X200, ThinkPad Compact USB Keyboard,
Dell U2713HM (2560x1440, IPS), ExpressCard USB 3.0 (2 ports, flush), Nexus 7+10

Zender
Junior Member
Junior Member
Posts: 315
Joined: Sun Mar 18, 2007 8:34 pm
Location: Prague, Czech Republic
Contact:

#90 Post by Zender » Sat Oct 18, 2008 5:41 pm

Thanks yak, it's better, still though sometimes happens to me that both regular tap (left click) and then the two-finger tap (middle click) occurs in quick succession, possibly the tap isn't taken from the Synaptics driver early enough?

Managed to get horizontal scrolling working in Firefox:

Code: Select all

WM_MOUSEHWHEEL = 526

x, y = win32api.GetCursorPos()
win32gui.SendMessage(win32gui.GetForegroundWindow(), \
    WM_MOUSEHWHEEL, (dx << 16), (y << 16) | x)
It might also work in other applications, but only in fairly new ones - the message was added in/for Vista. Works in Firefox 2.0 on WinXP.

I'm playing with balancing when to scroll in which direction, so that you can actually scroll only horizontally when you want and not go on a wawe to the side, when I'm satisfied, I'll post what I've got, right now I 'prefilter' the values like this:

Code: Select all

if abs(dx) < 5 and abs(dy) > 8:
    dx = 0
else:
    if abs(dx) > 3 and abs(dy) < 12:
        dy = 0
dx = int(dx * 1.5)
And after apply the standard square/divisor.

EDIT: for other applications, probably the most reliable way is to send WM_HSCROLL, wParam=SB_LINELEFT/SB_LINERIGHT to window's child under the mouse cursor. GetForegroundWindow(), EnumChildWindows(), when one enclosing GetCursorPos() is found, SendMessage(WM_HSCROLL, SB_LINELEFT/RIGHT) times (dx/WHEEL_DELTA). Use buffer. Whacked it together in Python, will contribute to the C++ app when time allows and no one does it earlier :)

EDIT2: forgot to mention, applications which handle WM_MOUSEHWHEEL must return true/non-zero, so it's easy to decide whether to fallback to WM_HSCROLL/SB_LINELEFT-RIGHT.
T60 14" SXGA+ 9c T5600 3GB X1400 4965AGN MC8780 IR BT FPR DVDRW Alps XPP

Post Reply
  • Similar Topics
    Replies
    Views
    Last post

Return to “ThinkPad Utility Work Area”

Who is online

Users browsing this forum: No registered users and 30 guests