Mouse with good macro support - request

todlerix

2[H]4U
Joined
Apr 25, 2003
Messages
2,244
I'm trying to find a replacement mouse, my current mouse left click is going bad.

I would like a mouse with macros that let me use all the buttons on the mouse and also move the cursor position, like AC Tools. I tried a Roccat mouse, that had nice features but the laser wouldn't work on my current mouse pad, and it also didn't have mouse positions in the macros.

Razer Blackwidow keyboard had pretty good macros, but no cursor position either.

Anyone have anything to recommend?

I tried to use the search function but it was giving a vague error.

Thanks.
 
I just looked at the LUA API reference for Logitech's gaming software. It has a function for this:
MoveMouseTo
The MoveMouseTo() function is used to move the mouse cursor to an absolute position on the
screen. NOTE: Calling GetMousePositionimmediately afterwards, will likely return the previous
state. It will take a few milliseconds for the operation to complete.
MoveMouseTo( x, y, )
x
Normalized X coordinate between 0 (farthest left) and 65535 (farthest right)
Y
Normalized y coordinate between 0 (farthest top) and 65535 (farthest bottom)

You'll have to learn a bit of Lua scripting. But it's okay, Lua's not that hard. Here's something minor that I made for doing some small time repetitive task in a certain game, in case it helps you get started.

Code:
function OnEvent(event, arg)
	if event == "M_PRESSED"
	then
		marg = arg;
		OutputLogMessage("marg state: %s",marg)
	end
	if marg == 1 and event == "G_PRESSED" and arg == 2
	then
		globpressed=0;
		starttime=rtsec();
			while (IsKeyLockOn("capslock") ~= true)
			do
				if rtsec() - starttime >= 100
				then
					OutputLogMessage("%d seconds have passed, starting buff callback\n",rtsec() - starttime);
					buffme();
					starttime=rtsec();
				end
				trainingcombo();
				if globpressed>=100+math.random(20,50)
				then
					pressrel("right",500);
					pressrel("left",570);
					globpressed=0;
				end					
			end
			OutputLogMessage("Caps lock pressed, breaking\n");
	end
end


function buffme()
	Sleep(500);
	parks("1",1700);
	parks("2",1700);
	parks("3",1700);
	parks("4",2000);
	parks("q",2000);
end

function trainingcombo()
	pressed=0;
	while (IsKeyLockOn("capslock") ~= true and pressed<=20)
	do
		PressKey("f");
		pressed=pressed+1;
		Sleep(150 + smrand());
		ReleaseKey("f");
	end
	if IsKeyLockOn("capslock") 
	then
		return nil;
	end
	Sleep(150 + smrand());
	PressKey("5");
	Sleep(150 + smrand());
	ReleaseKey("5");
	globpressed=globpressed+pressed;
end

function rtsec()
	return math.floor(GetRunningTime()/1000);
end

function smrand()
	return math.random(0,30);
end

function parks(key,msec)
	PressAndReleaseKey(key);
	Sleep(msec);
end

function pressrel(key,msec)
	PressKey(key);
	Sleep(msec);
	ReleaseKey(key);
end

Alternatively, is this a game where you're online? If it's not, you could just not bother with physical mice and learn to code with Autohotkey. It's pretty easy to script in and the API is fairly straightforward. It's also more advanced since it's not tied to the hardware. You can do stuff like get the color of the pixel at a certain position and whatnot.
 
Logitech G600 tons of buttons for macros too. The only complaint I have is sometimes the cursor jumps around even on the latest firmware and it has been replaced but it may be my mousepad I'm going to try a different one soon.
 
I just looked at the LUA API reference for Logitech's gaming software. It has a function for this:


You'll have to learn a bit of Lua scripting. But it's okay, Lua's not that hard. Here's something minor that I made for doing some small time repetitive task in a certain game, in case it helps you get started.

Code:
function OnEvent(event, arg)
	if event == "M_PRESSED"
	then
		marg = arg;
		OutputLogMessage("marg state: %s",marg)
	end
	if marg == 1 and event == "G_PRESSED" and arg == 2
	then
		globpressed=0;
		starttime=rtsec();
			while (IsKeyLockOn("capslock") ~= true)
			do
				if rtsec() - starttime >= 100
				then
					OutputLogMessage("%d seconds have passed, starting buff callback\n",rtsec() - starttime);
					buffme();
					starttime=rtsec();
				end
				trainingcombo();
				if globpressed>=100+math.random(20,50)
				then
					pressrel("right",500);
					pressrel("left",570);
					globpressed=0;
				end					
			end
			OutputLogMessage("Caps lock pressed, breaking\n");
	end
end


function buffme()
	Sleep(500);
	parks("1",1700);
	parks("2",1700);
	parks("3",1700);
	parks("4",2000);
	parks("q",2000);
end

function trainingcombo()
	pressed=0;
	while (IsKeyLockOn("capslock") ~= true and pressed<=20)
	do
		PressKey("f");
		pressed=pressed+1;
		Sleep(150 + smrand());
		ReleaseKey("f");
	end
	if IsKeyLockOn("capslock") 
	then
		return nil;
	end
	Sleep(150 + smrand());
	PressKey("5");
	Sleep(150 + smrand());
	ReleaseKey("5");
	globpressed=globpressed+pressed;
end

function rtsec()
	return math.floor(GetRunningTime()/1000);
end

function smrand()
	return math.random(0,30);
end

function parks(key,msec)
	PressAndReleaseKey(key);
	Sleep(msec);
end

function pressrel(key,msec)
	PressKey(key);
	Sleep(msec);
	ReleaseKey(key);
end

Alternatively, is this a game where you're online? If it's not, you could just not bother with physical mice and learn to code with Autohotkey. It's pretty easy to script in and the API is fairly straightforward. It's also more advanced since it's not tied to the hardware. You can do stuff like get the color of the pixel at a certain position and whatnot.

Logitech G600 tons of buttons for macros too. The only complaint I have is sometimes the cursor jumps around even on the latest firmware and it has been replaced but it may be my mousepad I'm going to try a different one soon.

Thank you both.
 
Back
Top