ruk·si

Logitech Keyboard Scripting

Updated at 2015-01-16 22:56

Basic example how to script a Logitech keyboard.

-- Sleep(10) in milliseconds
-- PressKey("a", "b"); ReleaseKey("a", "b"); Sleep(5);
-- PressAndReleaseKey("a", "b"); Sleep(5);
-- IsModifierPressed("shift") -- or "ctrl" or "alt"
-- PressAndReleaseMouseButton(1); Sleep(5); -- from 1 to 5
-- PressMouseButton(1); ReleaseMouseButton(1); Sleep(5);
-- MoveMouseWheel(3) -- 3 clicks up
-- x, y = GetMousePosition() -- 0, 0 -> 65535, 65535
-- MoveMouseRelative(10, 10) -- right bottom
-- MoveMouseTo(1000, 1000)

function Log(msg, ...)
    OutputLogMessage(msg, ...)
end

function LogLn(msg, ...)
    OutputLogMessage(msg .. "\n", ...)
end

function LogMouse()
    x, y = GetMousePosition()
    LogLn("Mouse: " .. x .. ", " .. y)
end

function Mode1Event(event, arg)
    if (event == "G_PRESSED") then
        if (arg == 5) then
            LogLn("Mode 1 G5 pressed")
        elseif (arg == 6) then
            LogMouse()
        end
    end
    if (event == "G_RELEASED") then
         if (arg == 5) then
            LogLn("Mode 1 G5 released")
        end
    end
end

local x1, y1;
local x2, y2;
local x3, y3;
local x4, y4;
local x5, y5;
local x6, y6;
function Mode2Event(event, arg)
    if (event == "G_PRESSED") then
        if (IsModifierPressed("ctrl")) then
            if (arg == 1) then x1, y1 = GetMousePosition();
            elseif (arg == 2) then x2, y2 = GetMousePosition();
            elseif (arg == 3) then x3, y3 = GetMousePosition();
            elseif (arg == 4) then x4, y4 = GetMousePosition();
            elseif (arg == 5) then x5, y5 = GetMousePosition();
            elseif (arg == 6) then x6, y6 = GetMousePosition();
            end
        else
            if (arg == 1) then
                MoveMouseTo(x1, y1);
                PressAndReleaseMouseButton(1);
            elseif (arg == 2) then
                MoveMouseTo(x2, y2);
                PressAndReleaseMouseButton(1);
            elseif (arg == 3) then
                MoveMouseTo(x3, y3);
                PressAndReleaseMouseButton(1);
            elseif (arg == 4) then
                MoveMouseTo(x4, y4);
                PressAndReleaseMouseButton(1);
            elseif (arg == 5) then
                MoveMouseTo(x5, y5);
                PressAndReleaseMouseButton(1);
            elseif (arg == 6) then
                MoveMouseTo(x6, y6);
                PressAndReleaseMouseButton(1);
            end
        end
    end
end

function Mode3Event(event, arg)
end

function OnEvent(event, arg)
    currentMode = GetMKeyState()
    if (currentMode == 1) then
        Mode1Event(event, arg);
    elseif (currentMode == 2) then
        Mode2Event(event, arg);
    else
        Mode3Event(event, arg);
    end
end