Título: LUA SCRIPT - BOTONES CON DOBLE FUNCIÓN
Publicado por: CADIAR en 17 Marzo 2014, 18:34 pm
Hola expertos en scripting.
Les explico, tengo speedpad Logitech G13, lo tengo configurado con macros para programas como autocad, revit y 3D max. Ahora quería intentar sacarle mas provecho configurándolo con Lua Scripting, pero me supera por mucho, no se ni como poner las macros en el script.
Lo que intento hacer con Lua es darle una doble función a los botones de modo que al presionar y soltar el botón se ejecute una macros, pero si se mantiene presionado por unos segundos más y se suelte se ejecute una macros distinta.
De antemano muchas gracias.
Título: Re: LUA SCRIPT - BOTONES CON DOBLE FUNCIÓN
Publicado por: Eleкtro en 29 Marzo 2014, 15:42 pm
@CADIAR, eliminé tu mensaje original por error, te envié un MP con el post, si lo vuelves a postear elimino mi post para no crear confusiones.
Porfavor, lee las normas: 1. Los códigos tienen que ir con su etiqueta Geshi, usa el botón para insertar código.
( El autor del siguiente mensaje es @CADIAR, no yo. ) Actualizando... Conseguí un script que debería hacer lo que quiero, darle dos funciones a los botones según el tiempo que se mantengan presionados, pero me de el siguiente error cuando lo ejecuto: E:\Logitech Scripts\llProject\llProject.lua:24: chunk has too many syntax levels este es el script en cuestión: -- llProject End --> ll=ll or {}; ll.SETUP = { Folder = [[E:\Logitech Scripts\llProject\]] } dofile(ll.SETUP.Folder .. [[llProject.lua]]) -- llProject End --> -- ll.devMode = dm_TEST function _onActivation() -- -- ADD ANY START UP ROUTINES HERE -- ll.mouse.map[0] = { } ll.lhc.map[1] = { G1 = { fn_ClickHold, "a", 30, "b", 1000 }, G2 = { fn_ClickHold, { "lctrl", "c" }, 30, { "lshift", "d"}, 1000 }, } end ClickHoldInfo = {} function fn_ClickHold( ClickTableOrKey, ClickDelay, HoldTableOrKey, HoldDelay ) local key = ll.Event.Mode .. "|" .. ll.Event.Key .. "|" .. ll.Event.Family if ll.Event.Pressed then ClickHoldInfo[key] = { timestamp = GetRunningTime(), held = false } elseif ll.Event.Down then if not ClickHoldInfo[key].held and GetRunningTime() - ClickHoldInfo[key].timestamp >= HoldDelay then Press( HoldTableOrKey, ClickDelay ) ClickHoldInfo[key].held = true end elseif ll.Event.Released then if GetRunningTime() - ClickHoldInfo[key].timestamp < HoldDelay then PressAndRelease( ClickTableOrKey, ClickDelay ) else Release( HoldTableOrKey, ClickDelay ) end ClickHoldInfo[key] = nil end end function Press( TableOrKey ) local key, table if type(TableOrKey) == "table" then table = TableOrKey elseif type(TableOrKey) == "string" then key = TableOrKey else return end if key then ll.Press(key) else for i, v in ipairs(table) do ll.Press(v) end end end function Release( TableOrKey ) local key, table if type(TableOrKey) == "table" then table = TableOrKey elseif type(TableOrKey) == "string" then key = TableOrKey else return end if key then ll.Press(key) else for i, v in ipairs(table) do ll.Release(v) end end end function PressAndRelease( TableOrKey, delay ) local key, table local delay = delay or 0 if type(TableOrKey) == "table" then table = TableOrKey elseif type(TableOrKey) == "string" then key = TableOrKey else return end if key then ll.Press(key) Sleep(delay) ll.Release(key) else for i, v in ipairs(table) do ll.Press(v) end Sleep(delay) for i, v in ipairs(table) do ll.Release(v) end end end
|