Sign In To Proceed i2v15

Don't have an ? 1a2w41

osu! to create your own !
forum

Synaptic Absolution (Updated 1/30. Sorry about that.) 4s1761

posted
Total Posts
63
Topic Starter
If there's a more appropriate forum for this, please move it there.

Hi there. I whipped up a little program in Visual Basic 6 to control the mouse using absolute positioning on Synaptics touchpads. It will appear as a little eye icon in your system tray. This may or may not be more comfortable to use in all of Windows, but if you want to play osu! with a touchpad, you NEED this. It actually works very well. I for one, have it in my Startup. I use the toggle shortcut mentioned below whenever I decide to play osu!.

You can configure the corners of the screen to be mapped to different positions on the touchpad if you want. Just click the buttons on the form, and hit space while your finger is on the position you want.

You can also hold Shift+Ctrl to temporarily disable Absolution, or use Ctrl+Alt+A to toggle it on and off as you will.

Don't know if you have a Synaptics Touchpad? That's easy to find out. Just grab the generic Synaptics driver installer, and run it. It's right here: http://www.synaptics.com//drive.cfm

If you have a Synaptics Touchpad, it will install or update the touchpad drivers on your system. But if you don't, then it will tell you so and exit.


A few caveats, though:
- It _will_ take some getting used to, but it's not hard by any means.
- Before using this program with osu!, you must set osu!'s sensitivity to 1.0x. Use an external mouse, or do it before starting SynAbs.
- Before going into standby, right click on the tray icon and disable Absolution. The cursor is unresponsive before logging in if you don't. You can also hit Ctrl+Alt+A before logging off and after logging on, or when you log back in, hit Shift+Ctrl and it will come back.


Without further ado, here's the link:
http://eternaleon.googlepages.com/SynAbs.zip

I'd be happy to address any problems or add whatever features that I can. I'm not a stellar VB6 programmer by any means, but I'll do my best. Enjoy! :D


Updates:
10/27 - Vertical scrolling is functional + misc. changes in code
10/29 - Corners can now be redefined; changes saved in an INI file
11/2 - Shift+Ctrl temporary absolution disable + Ctrl+Alt+A absolution toggle hotkey
1/30 - The program now works. :oops: I blame it entirely on Vista.
V_v
O_O
^_^
You, good Sir, have just won 5 Internets.
It makes me sad my Sony laptop doesn't use a synaptics touchpad :(.
I just noticed something: If you set mouse sensitivity at 4, you can use a touchpad combined with this program to get an INSANE amount of bonus points. >:3
Topic Starter
What, on spinners? That's frightening. O_O;

Well, in any case, thanks for the compliment. Sorry the program won't work with your laptop, Peppy. Out of curiosity, what kind of drivers does it have?
Topic Starter
Update!!!

Vertical scrolling should now be functional. I don't have a horizontal scrollbar, though; if anyone would like to help me get it implemented, PM me and I'll let you know how you can help me.

If vertical scrolling is NOT working for you, let me know, and I will look into it. PM me and I'll let you know how you can help me as well.

Also, if you know how to intercept a standby message in VB 6, so that I can unacquire the device before standby and re-acquire it after, I'd greatly appreciate it if you could share that gem of info. :P


Simply re- the program for the update.
Topic Starter
Update!

You can now redefine the top left and bottom right corners of the touchpad. Instructions on how to do so are in the about window (just double click the eye). These custom settings will be saved in an INI file named SynAbs.ini.

I still need help getting horizontal scrolling working, and I also need help with the standby thing. If anyone can help, that'd be greatly appreciated.
Topic Starter
ARGH. I'm triple posting.

Anyways, this new update adds two useful features for those who want to use SynAbs in everyday Windows use.

1. Shift+Ctrl - Temporary Absolution disable
If you need to be precise anywhere for some reason, and this actually happens a lot, just hold Shift+Ctrl. As long as this key combo is down, the pointer will move in relative motion. Upon releasing it, absolute motion will resume.

2. Ctrl+Alt+A - Toggle Absolution
It's just a useful hotkey shortcut to toggle absolution.

Right now, these features can't be disabled or configured. Next update will add stuff to the about window to configure this.
Hi, I just "borrowed" from work, but got this message when opening your application

"Component 'SynCtrl.dll' or one of its dependencies not correctly ed: a file is missing or invalid"

The SynAbs.exe file is only 40kb. Any idea what's wrong?
This means that the laptop you are using doesn't have a synaptic touchpad. In short, you can't use this app.
Topic Starter


Not necessarily. When I switched to XP from Vista, I had that same strange problem. I even had the blasted source of all everything and it didn't work. I fixed it, but due to lack of interest toward the program, I chose not to bother with updating it.

I've ed a zip file, and this time it has the DLLs in with it for good measure. Give it a shot and see if it works now.

http://eternaleon.googlepages.com/SynAbs.zip

I've also realized that using SynAbs in normal Windows activity quickly becomes a pain in the ass. Good thing I added that Ctrl+Alt+A shortcut. :P
:)
Topic Starter
Sorry. Most touchpads can only use fingers. Some can use pens, but I don't know of any, nor do I know if they'll work. This program maps the corners of the touchpad to the corners of your screen, so using your finger won't be that bad.

That is, if this program works for you. I still haven't recieved any on it yet.
This map has been deleted on the request of its creator. It is no longer available.
Yay, this laptop has a Synaptic and it works with SynAbs.

This will take some zetta getting used to.
This map has been deleted on the request of its creator. It is no longer available.
Don't work for me, i have a Synaptics ClickPad 7.4, i wanna test it, i'm in Windows 7 x64, i have two mouse of 1600DPI and a Wacom Intuos4, can you the program for windows 7.

The Error:
Error '-2147418113 (8000ffff)' Error en tiempo de ejecución :
Error de Automatización

I have windows in spanish.
Just randomly thrown in:

Do you think this could be done with the non-absolute Bamboo Multi-Touch surface? I would love to give it a try with my fingers on the tablet, but it only s relative positioning (Wacom states: Since you don't use the screen as touch surface you don't know where the cursor is. -> hence they won't add a mode for absolute positioning :'( )

They said on the Wacom forum the drivers delivers absolute positions as you can see here:


(You can get there by Holding Ctrl and pressing the "Info" button in the settings)
@TiZ
Great job. I use homemade pen of this:



It cost me a candy-bar price + time ~10min, haha :D
It rly works like tablet, yeah I can play even insane maps 8-)
I also have a 7.4 synaptic touchpad and i get the following error

"System Error &H80004002 (-2147467262). No such interface ed"
I wanted to try, but my computer don't agree D:

(Inb4 not compatible with windows8)
What a bump!

Anyways, I tried this and worked on my laptop. Probably because the laptop is old which runs Windows Vista. The program is made 5 years ago, so don't expect it to work on newer machine.

Winshley wrote: n2l6t

What a bump!

Anyways, I tried this and worked on my laptop. Probably because the laptop is old which runs Windows Vista. The program is made 5 years ago, so don't expect it to work on newer machine.
My laptop run windows 8 but it's 4 years old and when I got it it was on windows vista D:
That probably because the way Synaptics driver are developed for Windows 8 differs to that for Windows Vista.

You might wanna try dual-booting Windows Vista then...

Arnold0 wrote: j3uo

Winshley wrote: n2l6t

What a bump!

Anyways, I tried this and worked on my laptop. Probably because the laptop is old which runs Windows Vista. The program is made 5 years ago, so don't expect it to work on newer machine.
My laptop run windows 8 but it's 4 years old and when I got it it was on windows vista D:
same problem encountered, seems it doesn't work on win8...
I can confirm that this runs perfectly well on the run of the mill windows 7 machine. I wish I could make it click when I tap it though.
Nice tool.

For win 7, I can confirm it works using the v15 driver but not v16 driver.
for those who play on linux, you might like to take a look at this:
http://askubuntu.com/questions/239823/u ... ics-tablet

it say ubuntu but it works on fedora too, and maybe others that use xorg

I have to get the absolute position of a finger on the touchpad rather than just relative movement.

the synaptics driver doesn't do this, but the evdev driver does. So you need to configure your X server to use the evdev driver for the touchpad instead. The following configuration snippet will do that for you provided you're running server 1.8 or later.

Section "InputClass"
Identifier "evdev touchpad"
MatchIsTouchpad "on"
Driver "evdev"
Option "Mode" "absolute"
EndSection
Save this as /etc/X11/xorg.conf.d/99-evdev-touchpad.conf and restart the server. Note that this only changes the behaviour of the touchpad itself, not the data in the events but then again that data is always absolute anyway. Also, by using evdev instead of synaptics you're losing the ability for two-finger scrolling, tapping, etc.
to disable it, just delete that conf file and restart the server
I have a problem here, when I start it, it says "Incorrigible paradox detected. Aborting." Any idea why?

MRStres wrote: 3w262s

I have a problem here, when I start it, it says "Incorrigible paradox detected. Aborting." Any idea why?
maybe incompatible touchpad?
is your touchpad a synaptics touchpad and using the synaptics driver?

asl97 wrote: 3e4a1k

MRStres wrote: 3w262s

I have a problem here, when I start it, it says "Incorrigible paradox detected. Aborting." Any idea why?
maybe incompatible touchpad?
is your touchpad a synaptics touchpad and using the synaptics driver?
Well, first it's Alps, after I installed the driver, it became synaptic. Is that the problem?

MRStres wrote: 3w262s

Well, first it's Alps, after I installed the driver, it became synaptic. Is that the problem?
it works on my laptop, mine is SynPS/2 Synaptics TouchPad, note the word, Synaptic

so it could be the problem if yours isn't synaptic, not all touchpad give absolution, so maybe yours is one of those

the app would only work with a touchpad that got absolution.

to find out what touchpad yours is,
on linux:
cat /proc/bus/input/devices
on window:
idk, try googling it

asl97 wrote: 3e4a1k

on window:
idk, try googling it
Lol

It is located in the Device Manager, under "Mice and other pointing devices".

Edit : nvm, the synaptics touchpad was on my previous laptop ._.
cant in the given link anyone got another link
?
i don't understand how to use this, can somebody explain to me? :c

EDIT: nvm, i just played around with the program and got it to work XD
Could anyone help me with the error//////// System Error &H80004002 (-2147467262).

:? :? :?
Has anyone got this working on a windows 8 machine?

iceandele wrote: 16353v

Has anyone got this working on a windows 8 machine?
No luck here on 8.1.

On Linux, one may be able to switch between Absolute and Relative mode with xinput set-mode <device name> ABSOLUTE (<device name> being either the full name or the id of your touchpad (without the < >); use the command xinput to get this info). Switch ABSOLUTE to RELATIVE when you want to switch back, or just reboot. May or may not work depending on other factors (was able to do so on Ubuntu 13.04, but not 13.10).
I get a System Error &H80004002 (-2147467262). No such interface ed error :( I'm going to assume it's because I'm running Windows 8, because I do have a synaptics touchpad. Any plans on fixing that?
Also, Visual Basic is a bit of an outdated language. You should consider using C# instead.
Does anyone know if this works on Windows 8?

Axast wrote: 5x1q5

Does anyone know if this works on Windows 8?
Didn't work for me on 8 or 8.1.
i repeatedly smashed my face upon the computer keyboard and it didnt work any advice?
6 years and no update. Any touch pad wizards here?
why necro this i thought there was actually an update
Can anyone re- this? The link doesn't work :/
^yeah, I for one would like to try using it :D
I still have this on my computer even if it never worked for me (windows 8), you are lucky :)
http://puu.sh/7yG9M.rar
First of all, do you guys know the pens sold for phones? Those work pretty well, you just got to detach the cable. Talking from personal experience.
Example here: http://www.ebay.com/itm/10x-Metal-Unive ... 20e10aaaa8

And this one, but I don't have the slightest idea if it works: http://www.ebay.com/itm/5X-STYLUS-BALLP ... 2c70dbaa2e

Also, as a second note, YOU NEED TO TURN RAW INPUT OFF for it to work in osu right now.
I got an error on this.... Says something about synctrl.dl not correctly ed :(

OsuGod wrote: 501k30

I got an error on this.... Says something about synctrl.dl not correctly ed :(
This is realy old and as I said in my last post in this thread 'even if it never worked for me'.
This surely doesn't work with too new computers and dosn't work on windows 8 or greater.
Just for the fun Another "Synaptic Absolution" kind program but basic :)
Virus free, i used Synaptics API. You need to "calibrate" the touchpad first by moving your finger at each corners ... Have fun :D
lib used
SYNCOMLib
SYNCTRLLib
Edit: If some people want to use it i can add graphical interface (like Wacom one to choose your area), some hotkey , and save for values :)
I have a Wacom tablet so i don't use my soft and im not used to play with my finger ^^"
28/08 Edit:
Don't need any soft/external lib except one from drivers that are installed with the touchpad :) HF
Added the source code as a PM request :
(C#) source
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Threading;
using System.Windows.Forms;
using SYNCOMLib;
using SYNCTRLLib;

namespace ConsoleApplication11
{
    class Program
    {
        [DllImport("32.dll")]
        static extern bool SetCursorPos(int X, int Y);
        static SynAPICtrl api = new SynAPICtrl();
        static SynDeviceCtrl device = new SynDeviceCtrl();
        static SynPacketCtrl packet = new SynPacketCtrl();
        static int deviceHandle;
        static public int x = Screen.PrimaryScreen.Bounds.Width;
        static public int y = Screen.PrimaryScreen.Bounds.Height;
        static public float Xmin, Xmax, Ymin, Ymax = 0;

        static void Main(string[] args)
        {
            try
            {
                api.Initialize();
            }
            catch (Exception e)
            {
                Console.WriteLine("Error calling API, you didn't have Synaptics hardware or driver (if you just installed it, you need to reboot)");
            loop:
                Console.WriteLine("Press enter to quit OR type \"info\"");
                if (Console.ReadLine().Contains("info"))
                {
                    Console.WriteLine("{0} Exception caught.", e);
                    goto loop;
                }
                return;
            }
            api.Activate();
            //select the first device found
            deviceHandle = api.FindDevice(SynConnectionType.SE_ConnectionAny, SynDeviceType.SE_DeviceTouchPad, -1);
            device.Select(deviceHandle);
            device.Activate();
            device.OnPacket += SynTP_Dev_OnPacket;
           //For console visual
            Console.Title = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
            Console.SetWindowSize(58, 9);
            Console.SetBufferSize(58, 9);
            Console.WriteLine("Move your finger to each corner to calibrate the software");
            Console.WriteLine("Raw Data from touchpad:");
            Console.WriteLine("X:0 Y:0");
            Console.WriteLine("Xmin:" + Xmin + " Ymin:" + Ymin);
            Console.WriteLine("Xmax:" + Xmax + " Ymax:" + Ymax);
            Console.WriteLine("Position on Screen (calculated):");
            Console.WriteLine("X:" + 0 + " Y:" + 0);
            Console.WriteLine("Press enter to quit");
            Console.ReadLine();
        }
        
        //Called at each change on touchpad, constantly calibrating values & moving cursor
        static void SynTP_Dev_OnPacket()
        {
            var result = device.LoadPacket(packet);
            if (packet.X > 1)
            {
                Console.SetCursorPosition(0, 2);
                Console.Write(new string(' ', Console.WindowWidth));
                Console.SetCursorPosition(0, 2);
                Console.WriteLine("X:" + packet.X + " Y:" + packet.Y);
                //Calibrate
                if (Xmin == 0 && Xmax == 0)
                {
                    Xmin = packet.X;
                    Xmax = packet.X;
                    Ymin = packet.Y;
                    Ymax = packet.Y;
                }
                if (packet.X > 1)
                {
                    if (Xmin > packet.X)
                        Xmin = packet.X;
                    if (Xmax < packet.X)
                        Xmax = packet.X;
                }
                if (packet.Y > 1)
                {
                    if (Ymin > packet.Y)
                        Ymin = packet.Y;
                    if (Ymax < packet.Y)
                        Ymax = packet.Y;
                }
                float targetx = (packet.X - Xmin) / (Xmax - Xmin) * x;
                float targety = ((Ymax - Ymin) - (packet.Y - Ymin)) / (Ymax - Ymin) * y;
                //move cursor using "calibrated" values
                SetCursorPos((int)targetx, (int)targety); ;
                //refresh output
                Console.WriteLine("Xmin:" + Xmin + " Ymin:" + Ymin);
                Console.WriteLine("Xmax:" + Xmax + " Ymax:" + Ymax);
                Console.SetCursorPosition(0, 6);
                Console.Write(new string(' ', Console.WindowWidth));
                Console.SetCursorPosition(0, 6);
                Console.WriteLine("X:" + targetx + " Y:" + targety);
            }
        }
    }
}
I did a calibration because i don't know if the values are the same on each touchpad (they were so random, so it can fit any synaptic touchpad with manual calibration (you can add an .ini to save values and more :)))
Was going to do a like Wacom one but no one look interested in the soft ^^'
2 month without update still working and no one sent an answer, anyone enjoyed it ? :x

Arnold0 wrote: j3uo

I still have this on my computer even if it never worked for me (windows 8), you are lucky :)
http://puu.sh/7yG9M.rar
I'm quite a bit late to the party but Windows Defender blocked this from being because it "found malware"
looking further into it, it says it detected Trojan:Win32/Spursint.F!cl

Whether or not this was intentional or something that happened to me and me only, I don't know; but be wary.

ayoubleg wrote: 5z171j

Just for the fun Another "Synaptic Absolution" kind program but basic :)
Virus free, i used Synaptics API. You need to "calibrate" the touchpad first by moving your finger at each corners ... Have fun :D
lib used
SYNCOMLib
SYNCTRLLib

Edit: If some people want to use it i can add graphical interface (like Wacom one to choose your area), some hotkey , and save for values :)
I have a Wacom tablet so i don't use my soft and im not used to play with my finger ^^"
28/08 Edit:
Don't need any soft/external lib except one from drivers that are installed with the touchpad :) HF
Added the source code as a PM request :
(C#) source
using System;

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Threading;
using System.Windows.Forms;
using SYNCOMLib;
using SYNCTRLLib;
namespace ConsoleApplication11
{
class Program
{
[DllImport("32.dll")]
static extern bool SetCursorPos(int X, int Y);
static SynAPICtrl api = new SynAPICtrl();
static SynDeviceCtrl device = new SynDeviceCtrl();
static SynPacketCtrl packet = new SynPacketCtrl();
static int deviceHandle;
static public int x = Screen.PrimaryScreen.Bounds.Width;
static public int y = Screen.PrimaryScreen.Bounds.Height;
static public float Xmin, Xmax, Ymin, Ymax = 0;
static void Main(string[] args)
{
try
{
api.Initialize();
}
catch (Exception e)
{
Console.WriteLine("Error calling API, you didn't have Synaptics hardware or driver (if you just installed it, you need to reboot)");
loop:
Console.WriteLine("Press enter to quit OR type \"info\"");
if (Console.ReadLine().Contains("info"))
{
Console.WriteLine("{0} Exception caught.", e);
goto loop;
}
return;
}
api.Activate();
//select the first device found
deviceHandle = api.FindDevice(SynConnectionType.SE_ConnectionAny, SynDeviceType.SE_DeviceTouchPad, -1);
device.Select(deviceHandle);
device.Activate();
device.OnPacket += SynTP_Dev_OnPacket;
//For console visual
Console.Title = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
Console.SetWindowSize(58, 9);
Console.SetBufferSize(58, 9);
Console.WriteLine("Move your finger to each corner to calibrate the software");
Console.WriteLine("Raw Data from touchpad:");
Console.WriteLine("X:0 Y:0");
Console.WriteLine("Xmin:" + Xmin + " Ymin:" + Ymin);
Console.WriteLine("Xmax:" + Xmax + " Ymax:" + Ymax);
Console.WriteLine("Position on Screen (calculated):");
Console.WriteLine("X:" + 0 + " Y:" + 0);
Console.WriteLine("Press enter to quit");
Console.ReadLine();
}
//Called at each change on touchpad, constantly calibrating values & moving cursor
static void SynTP_Dev_OnPacket()
{
var result = device.LoadPacket(packet);
if (packet.X > 1)
{
Console.SetCursorPosition(0, 2);
Console.Write(new string(' ', Console.WindowWidth));
Console.SetCursorPosition(0, 2);
Console.WriteLine("X:" + packet.X + " Y:" + packet.Y);
//Calibrate
if (Xmin == 0 && Xmax == 0)
{
Xmin = packet.X;
Xmax = packet.X;
Ymin = packet.Y;
Ymax = packet.Y;
}
if (packet.X > 1)
{
if (Xmin > packet.X)
Xmin = packet.X;
if (Xmax < packet.X)
Xmax = packet.X;
}
if (packet.Y > 1)
{
if (Ymin > packet.Y)
Ymin = packet.Y;
if (Ymax < packet.Y)
Ymax = packet.Y;
}
float targetx = (packet.X - Xmin) / (Xmax - Xmin) * x;
float targety = ((Ymax - Ymin) - (packet.Y - Ymin)) / (Ymax - Ymin) * y;
//move cursor using "calibrated" values
SetCursorPos((int)targetx, (int)targety); ;
//refresh output
Console.WriteLine("Xmin:" + Xmin + " Ymin:" + Ymin);
Console.WriteLine("Xmax:" + Xmax + " Ymax:" + Ymax);
Console.SetCursorPosition(0, 6);
Console.Write(new string(' ', Console.WindowWidth));
Console.SetCursorPosition(0, 6);
Console.WriteLine("X:" + targetx + " Y:" + targety);
}
}
}
}

I did a calibration because i don't know if the values are the same on each touchpad (they were so random, so it can fit any synaptic touchpad with manual calibration (you can add an .ini to save values and more :)))
Was going to do a like Wacom one but no one look interested in the soft ^^'
2 month without update still working and no one sent an answer, anyone enjoyed it ? :x


Will try today, giving thoughts
Have fun, it's easily modifiable if you need something you can try to make it, or ask me :)

ayoubleg wrote: 5z171j

Have fun, it's easily modifiable if you need something you can try to make it, or ask me :)

:O it isn't working for me? Windows 10 Synaptics

Gobbyghoosh wrote: 51q1t

Arnold0 wrote: j3uo

I still have this on my computer even if it never worked for me (windows 8), you are lucky :)
http://puu.sh/7yG9M.rar
I'm quite a bit late to the party but Windows Defender blocked this from being because it "found malware"
looking further into it, it says it detected Trojan:Win32/Spursint.F!cl

Whether or not this was intentional or something that happened to me and me only, I don't know; but be wary.
Well first i'm surpried a 3 years old puush link still works, and also I tryed to it and it said the Windows Defender alert as well. Of corse it wasn't doing that when I ed it 3 years ago, and that's just a re- of what was in the OT. Also virus total says 0/54 detection so i'm guessing Windows Defender is just dumb as usual with the false positives.


But honestly I'm pretty sure there is something similar somewhere else in the forum that actualy does work (Cause as I said 3 years ago when I sent that link I never manager to make this working). Actualy I'm quite sure it's this, and I think this does work (But I never tested) t/429842

Nellthan wrote: 5rve

ayoubleg wrote: 5z171j

Have fun, it's easily modifiable if you need something you can try to make it, or ask me :)
:O it isn't working for me? Windows 10 Synaptics
I don't know, im on Windows 10 with Synaptics... are you sure you have a Synaptics touchpad ?
Check if you have this : https://puu.sh/tCl9S.mp4 if not, you don't have driver or a Synaptics touchpad :v

ayoubleg wrote: 5z171j

Just for the fun Another "Synaptic Absolution" kind program but basic :)
Virus free, i used Synaptics API. You need to "calibrate" the touchpad first by moving your finger at each corners ... Have fun :D
lib used
SYNCOMLib
SYNCTRLLib
Edit: If some people want to use it i can add graphical interface (like Wacom one to choose your area), some hotkey , and save for values :)
I have a Wacom tablet so i don't use my soft and im not used to play with my finger ^^"
28/08 Edit:
Don't need any soft/external lib except one from drivers that are installed with the touchpad :) HF
Added the source code as a PM request :
(C#) source
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Threading;
using System.Windows.Forms;
using SYNCOMLib;
using SYNCTRLLib;

namespace ConsoleApplication11
{
class Program
{
[DllImport("32.dll")]
static extern bool SetCursorPos(int X, int Y);
static SynAPICtrl api = new SynAPICtrl();
static SynDeviceCtrl device = new SynDeviceCtrl();
static SynPacketCtrl packet = new SynPacketCtrl();
static int deviceHandle;
static public int x = Screen.PrimaryScreen.Bounds.Width;
static public int y = Screen.PrimaryScreen.Bounds.Height;
static public float Xmin, Xmax, Ymin, Ymax = 0;

static void Main(string[] args)
{
try
{
api.Initialize();
}
catch (Exception e)
{
Console.WriteLine("Error calling API, you didn't have Synaptics hardware or driver (if you just installed it, you need to reboot)");
loop:
Console.WriteLine("Press enter to quit OR type \"info\"");
if (Console.ReadLine().Contains("info"))
{
Console.WriteLine("{0} Exception caught.", e);
goto loop;
}
return;
}
api.Activate();
//select the first device found
deviceHandle = api.FindDevice(SynConnectionType.SE_ConnectionAny, SynDeviceType.SE_DeviceTouchPad, -1);
device.Select(deviceHandle);
device.Activate();
device.OnPacket += SynTP_Dev_OnPacket;
//For console visual
Console.Title = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
Console.SetWindowSize(58, 9);
Console.SetBufferSize(58, 9);
Console.WriteLine("Move your finger to each corner to calibrate the software");
Console.WriteLine("Raw Data from touchpad:");
Console.WriteLine("X:0 Y:0");
Console.WriteLine("Xmin:" + Xmin + " Ymin:" + Ymin);
Console.WriteLine("Xmax:" + Xmax + " Ymax:" + Ymax);
Console.WriteLine("Position on Screen (calculated):");
Console.WriteLine("X:" + 0 + " Y:" + 0);
Console.WriteLine("Press enter to quit");
Console.ReadLine();
}

//Called at each change on touchpad, constantly calibrating values & moving cursor
static void SynTP_Dev_OnPacket()
{
var result = device.LoadPacket(packet);
if (packet.X > 1)
{
Console.SetCursorPosition(0, 2);
Console.Write(new string(' ', Console.WindowWidth));
Console.SetCursorPosition(0, 2);
Console.WriteLine("X:" + packet.X + " Y:" + packet.Y);
//Calibrate
if (Xmin == 0 && Xmax == 0)
{
Xmin = packet.X;
Xmax = packet.X;
Ymin = packet.Y;
Ymax = packet.Y;
}
if (packet.X > 1)
{
if (Xmin > packet.X)
Xmin = packet.X;
if (Xmax < packet.X)
Xmax = packet.X;
}
if (packet.Y > 1)
{
if (Ymin > packet.Y)
Ymin = packet.Y;
if (Ymax < packet.Y)
Ymax = packet.Y;
}
float targetx = (packet.X - Xmin) / (Xmax - Xmin) * x;
float targety = ((Ymax - Ymin) - (packet.Y - Ymin)) / (Ymax - Ymin) * y;
//move cursor using "calibrated" values
SetCursorPos((int)targetx, (int)targety); ;
//refresh output
Console.WriteLine("Xmin:" + Xmin + " Ymin:" + Ymin);
Console.WriteLine("Xmax:" + Xmax + " Ymax:" + Ymax);
Console.SetCursorPosition(0, 6);
Console.Write(new string(' ', Console.WindowWidth));
Console.SetCursorPosition(0, 6);
Console.WriteLine("X:" + targetx + " Y:" + targety);
}
}
}
}
I did a calibration because i don't know if the values are the same on each touchpad (they were so random, so it can fit any synaptic touchpad with manual calibration (you can add an .ini to save values and more :)))
Was going to do a like Wacom one but no one look interested in the soft ^^'
2 month without update still working and no one sent an answer, anyone enjoyed it ? :x
Umm do I have to do some tweaking in the codes for it to work coz when I click in the .exe file it doesn't work :/
the .exe should work if you have synaptic ... you can try to compile it yourself ... ^^"
Sources : https://puu.sh/tTAGj.zip
Another .exe : https://puu.sh/tTAIh.zip

ayoubleg wrote: 5z171j

the .exe should work if you have synaptic ... you can try to compile it yourself ... ^^"
Sources : https://puu.sh/tTAGj.zip
Another .exe : https://puu.sh/tTAIh.zip
this great :D its worked for me on win10, but it doesn't work when i play osu! :(

Gwansyhptra wrote: 6y1t3e

ayoubleg wrote: 5z171j

the .exe should work if you have synaptic ... you can try to compile it yourself ... ^^"
Sources : https://puu.sh/tTAGj.zip
Another .exe : https://puu.sh/tTAIh.zip
this great :D its worked for me on win10, but it doesn't work when i play osu! :(
Turn OFF Raw input in osu! and it will work ! :)
HF :p
Really sorry for "y u bump"

The website is down?
Please sign in to reply.

New reply 18684e