0% found this document useful (0 votes)
604 views4 pages

G19+G510 Backlight Colour-Cycling Script

This document contains a script for cycling the backlight colours on a Logitech G19 keyboard. It allows for: 1) Cycling between different colour combinations using modifier keys and mouse buttons. 2) Manually adjusting the red, green, and blue values using modifier keys to set a static colour. 3) Fading reciprocally between two colours using other modifier keys. 4) Controlling the speed of cycling and fading using additional modifier keys.

Uploaded by

Mohamad Norhasif
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
604 views4 pages

G19+G510 Backlight Colour-Cycling Script

This document contains a script for cycling the backlight colours on a Logitech G19 keyboard. It allows for: 1) Cycling between different colour combinations using modifier keys and mouse buttons. 2) Manually adjusting the red, green, and blue values using modifier keys to set a static colour. 3) Fading reciprocally between two colours using other modifier keys. 4) Controlling the speed of cycling and fading using additional modifier keys.

Uploaded by

Mohamad Norhasif
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 4

-----

G19 Backlight Colour-Cycling Script


-----------------------------------------Cobbled together and imaginatively titled by
White--Hawk (GH) - Edited in german by Jackjan

-- Thanks to everyone.
------------------------|| CONTROLS: ||----------------------------------- R-Ctrl +
--M1
- Cycle R<>G
--M2
- Cycle G<>B
--M3
- Cycle B<>R
----- R-Shift +
--M1
- Cycle RGB
--M2
- Cycle RBG
--M3
- Colour Picker
----- While Cycling:
--- R-Shift +
--L-Shift - Faster
--L-Ctrl - Slower
----- L-Shift +
--R-Ctrl - Toggle LHC mode
--(G19/G13 sync)
----- While Picking:
--- R-Shift/R-Ctrl (brighter/darker) + --L-Shift - Red
--L-Ctrl - Green
--L-Alt - Blue
----- Press any other MKey to stop
--- cycling or picking, and keep
--- selected colour.
----------------------------------------------- **Cycle rate:
-- **(default = 150; red-to-red in ~23secs)
-- **(always set lower than mrate)
rate = 150
-- **Minimum delay:
-- **(default = 600; red-to-red in ~1.5mins)
-- **(higher is slower)
mrate = 600
-- **Static (RGB) Colour:
-- **(default = 140, 255, 150; white on my G19)
R, G, B = 140, 255, 150
function OnEvent(event,arg)

--

Cycle or set custom colour:


if (event=="M_PRESSED") and IsModifierPressed("rshift") then

--

Cycle RGB:
if arg==1 then Cycle(0, 5, 0, 1, arg)

--

Cycle RBG:
elseif arg==2 then Cycle(255, -5, 2, -1, arg)
else

-Set custom static colour. Right Shift/Ctrl(+/-) plus Left-Shift/C


trl/Alt(R/G/B).
run=1
while run~=null do
if IsModifierPressed("rshift") then
if IsModifierPressed("lshift") then R=R+.1
if R>255 then R=255; end
end
if IsModifierPressed("lctrl") then G=G+.1
if G>255 then G=255; end
end
if IsModifierPressed("lalt") then B=B+.1
if B>255 then B=255; end
end
elseif IsModifierPressed("rctrl") then
if IsModifierPressed("lshift") then R=R-.1
if R<0 then R=0; end
end
if IsModifierPressed("lctrl") then G=G-.1
if G<0 then G=0; end
end
if IsModifierPressed("lalt") then B=B-.1
if B<0 then B=0; end
end
end
SetBacklightColor(math.floor(R),math.floor(G),math.floor(B))
if (IsModifierPressed("lalt") and IsModifierPressed("ralt")) or
GetMKeyState()~=3 then run=null; break; end
end
-one.

All done? Re-set new static colour after profiler applies default
Sleep(350)
SetBacklightColor(math.floor(R),math.floor(G),math.floor(B))
end

end
--

Reciprocating fade; Red <> Green or Green <> Blue or Blue <> Red:
if (event=="M_PRESSED") and IsModifierPressed("rctrl") then Fade(arg); end

end
function Fade(ks)
fs=0; fj=5; fd=0; run=1
while run~=null do
--

Ramp colour value 0-255 (and back), or full-off to full-on.

for col = fs, 255-fs, fj do


--

Call for delay before next colour change.


Dlay(ks)

if ks==1 then SetBacklightColor(255-col,col,0,"kb"); if lmode~="1" t


hen SetBacklightColor(255-col,col,0,"lhc") else SetBacklightColor(col,255-col,0,
"lhc") end
elseif ks==2 then SetBacklightColor(0,255-col,col,"kb"); if lmode~="
1" then SetBacklightColor(0,255-col,col,"lhc") else SetBacklightColor(0,col,255col,"lhc") end
elseif ks==3 then SetBacklightColor(col,0,255-col,"kb"); if lmode~="
1" then SetBacklightColor(col,0,255-col,"lhc") else SetBacklightColor(255-col,0,
col,"lhc") end
end
--

Skip out of ramps...


if run==null then break; end
end

--

Change direction...
if fd==0 then fd=1; fs=255; fj=-5
else fd=0; fs=0; fj=5

--

Skip out of reciprocating fade...


if run==null then break; end
end
end

end
function Cycle(cs, cj, rs, rj, ks)
run=1
while run~=null do
--

Loop through each of R, G, and B.


for rgb = rs, 2-rs, rj do

--

Ramp colour value 0-255, or full-off to full-on.


for col = cs, 255-cs, cj do

--

Call for delay before next colour change.


Dlay(ks)

if rgb==0 then SetBacklightColor(255-col,col,0,"kb"); if lmode~=


"1" then SetBacklightColor(255-col,col,0,"lhc") else SetBacklightColor(col,0,255
-col,"lhc") end
elseif rgb==1 then SetBacklightColor(0,255-col,col,"kb"); if lmo
de~="1" then SetBacklightColor(0,255-col,col,"lhc") else SetBacklightColor(255-c
ol,col,0,"lhc") end
elseif rgb==2 then SetBacklightColor(col,0,255-col,"kb"); if lmo
de~="1" then SetBacklightColor(col,0,255-col,"lhc") else SetBacklightColor(0,255
-col,col,"lhc") end
end
if run==null then break; end
end
--

Skip out of RGB loops...


if run==null then break; end

end
end
end
function Dlay(ks)
-Throttle controls during sleep.
for z = 1, rate, 1 do
--

Faster...
if IsModifierPressed("lshift") and IsModifierPressed("rshift") then rate
=(rate-(mrate/6000))
if rate<2 then rate=2
if limit~=0 then limit=0; OutputLCDMessage("\n"..(string.rep(" "
,37)).."Maximum", 3000); end
end
-Increments for display...
dup=math.floor((60/mrate)*rate)
if nup~=dup then Disp(); end
--

Slower...
elseif IsModifierPressed("lctrl") and IsModifierPressed("rshift") then r
ate=(rate+(mrate/6000))
if rate>mrate then rate=mrate; end
-Increments for display...
dup=math.floor((60/mrate)*rate)
if nup~=dup or limit~=1 then Disp(); limit=1; end
end
--

~333ms control delay...


if tt==null then tt=0 elseif tt<334 then tt=tt+1 end
if tt>333 and IsModifierPressed("rctrl") and IsModifierPressed("lshift")
then tt=0
if lmode~="1" then lmode="1" else lmode="0" end
end

--

Don't wait for delay if another M-key is pressed.


if GetMKeyState()~=ks or (IsModifierPressed("lalt") and IsModifierPresse
d("ralt")) then run=null; break; end
Sleep(1)
end
end
function Disp()
-Draw an incremental slider to G19 LCD output. It grabs/drops focus rapidl
y. :S
text="\n\n\n\n\n\n
<["..(string.rep("||",60-dup)).."|||"..(string.rep
("-",dup)).."]>"
ClearLCD(); OutputLCDMessage(text, 2000)
nup=dup
end

You might also like