From 5b75564bafa8a9c04bb7b2a44cced54837d4d12f Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 24 Dec 2016 05:23:01 +0100 Subject: [PATCH 001/187] Update g810 bin path in systemd unit --- systemd/g810-led.service | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/systemd/g810-led.service b/systemd/g810-led.service index 4d4b73e..f90830a 100644 --- a/systemd/g810-led.service +++ b/systemd/g810-led.service @@ -2,7 +2,7 @@ Description=Set Logitech G810 Led Profile [Service] -ExecStart=/bin/g810-led -p /etc/g810-led/profile +ExecStart=/usr/bin/g810-led -p /etc/g810-led/profile [Install] WantedBy=multi-user.target From 800548ac5bf31dc37bddc02086b5498c182ea7ac Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 24 Dec 2016 05:50:14 +0100 Subject: [PATCH 002/187] Add gkeys in help --- src/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index b7af4eb..e1dd1ce 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -31,7 +31,7 @@ void usage() { cout<<"\n"; cout<<"effect values :\t\trainbow, color\n"; cout<<"key values :\t\tabc... 123... and other\n"; - cout<<"group values :\t\tlogo, indicators, fkeys, modifiers, multimedia, arrows, numeric, functions, keys\n"; + cout<<"group values :\t\tlogo, indicators, fkeys, modifiers, multimedia, arrows, numeric, functions, keys, gkeys\n"; cout<<"\n"; cout<<"sample :\n"; cout< Date: Tue, 27 Dec 2016 22:13:53 +0100 Subject: [PATCH 003/187] Swap x and y key --- sample_profiles/keys_v_gradiant_fr_ch-latin1 | 4 ++-- src/classes/Keyboard.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sample_profiles/keys_v_gradiant_fr_ch-latin1 b/sample_profiles/keys_v_gradiant_fr_ch-latin1 index 0a56625..f22b5f5 100644 --- a/sample_profiles/keys_v_gradiant_fr_ch-latin1 +++ b/sample_profiles/keys_v_gradiant_fr_ch-latin1 @@ -56,7 +56,7 @@ k w $raw3 k e $raw3 k r $raw3 k t $raw3 -k z $raw3 +k y $raw3 k u $raw3 k i $raw3 k o $raw3 @@ -94,7 +94,7 @@ k num_plus $raw4 # Raw 5 : k shift_left $raw5 k intl_backslash $raw5 -k y $raw5 +k z $raw5 k x $raw5 k c $raw5 k v $raw5 diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index 43151f9..45ba55f 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -235,8 +235,8 @@ bool Keyboard::getKeyAddress(Key key, KeyAddress &keyAddress) { case Key::v: keyAddress.id = 0x19; break; case Key::w: keyAddress.id = 0x1a; break; case Key::x: keyAddress.id = 0x1b; break; - case Key::z: keyAddress.id = 0x1c; break; - case Key::y: keyAddress.id = 0x1d; break; + case Key::y: keyAddress.id = 0x1c; break; + case Key::z: keyAddress.id = 0x1d; break; case Key::n1: keyAddress.id = 0x1e; break; case Key::n2: keyAddress.id = 0x1f; break; case Key::n3: keyAddress.id = 0x20; break; From 277e30832367a6a358d88030fae1cc7ffbb6f45f Mon Sep 17 00:00:00 2001 From: MatMoul Date: Tue, 27 Dec 2016 22:17:54 +0100 Subject: [PATCH 004/187] Remove bad dump --- ...ct-to-breathing-252-253-254-fullspeed.pcapng | Bin 10624 -> 0 bytes ...ect-to-breathing-252-253-254-midspeed.pcapng | Bin 10304 -> 0 bytes ...fect-to-breathing-252-253-254-nospeed.pcapng | Bin 9824 -> 0 bytes ...to-keypress-3-2-1_252-253-254-nospeed.pcapng | Bin 10912 -> 0 bytes wireshark_dumps/g810-spectrum/g810-idle.pcapng | Bin 1056 -> 0 bytes .../g810-set-a-to-252-253-254.pcapng | Bin 5304 -> 0 bytes .../g810-set-rcntrl-to-252-253-254.pcapng | Bin 5304 -> 0 bytes .../g810-switches-to-fixedcolor-effect.pcapng | Bin 9320 -> 0 bytes ...10-switches-to-from-fixedcolor-effect.pcapng | Bin 18112 -> 0 bytes 9 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 wireshark_dumps/g810-spectrum/g810-effect-to-breathing-252-253-254-fullspeed.pcapng delete mode 100644 wireshark_dumps/g810-spectrum/g810-effect-to-breathing-252-253-254-midspeed.pcapng delete mode 100644 wireshark_dumps/g810-spectrum/g810-effect-to-breathing-252-253-254-nospeed.pcapng delete mode 100644 wireshark_dumps/g810-spectrum/g810-effect-to-keypress-3-2-1_252-253-254-nospeed.pcapng delete mode 100644 wireshark_dumps/g810-spectrum/g810-idle.pcapng delete mode 100644 wireshark_dumps/g810-spectrum/g810-set-a-to-252-253-254.pcapng delete mode 100644 wireshark_dumps/g810-spectrum/g810-set-rcntrl-to-252-253-254.pcapng delete mode 100644 wireshark_dumps/g810-spectrum/g810-switches-to-fixedcolor-effect.pcapng delete mode 100644 wireshark_dumps/g810-spectrum/g810-switches-to-from-fixedcolor-effect.pcapng diff --git a/wireshark_dumps/g810-spectrum/g810-effect-to-breathing-252-253-254-fullspeed.pcapng b/wireshark_dumps/g810-spectrum/g810-effect-to-breathing-252-253-254-fullspeed.pcapng deleted file mode 100644 index 6f0210363d5fd758a71e02ea85b228520e5dd312..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10624 zcmdU#Piz!b9LL{m3j%2aHN+5iNydajNh$8O*b*pMrGQFI8a>p6O=|zFvI2H#fs#NB zArRw1FCM&j@G2ZITr|qT0~c;2oQOvbdenml2~gj6c4y!3&HVPwn?JiTskk+XGe;qvC@eA zDvs_S9o;NvZJh-6hX)6vTtarGcwY;7N$Q5IwM( z+k|JYZ63%uV!JmN8q;`D4qu}v&vED)n}k!>*e-wM46OAWl#kkg4)i7(uljlg`MiEm zPfb1i>m25AUS5~4#k;$D8$P-=B3pRHNBX z8~s@>+9ajJ=SSzm>Oq9<&pID-egamygwNAw&k3UF{G{Py*uSt;x)qks%6l|F+uS?b z{C;nrA7~WiHRC7d`^g* zzG%^WSUpQV=KKV#w2jY|FKK?*>+$o`kk5^Kw)M4jsMVTHG=6~3U(ichUzn@v z%aEV2m1dS{exR4OzGCpn=fq3m0D(lvZ&Xns}@BaRRBlGc~bCo(_OO4AFiul3+_2w)ncy?jjl$IB13 z(l$Qd9gdfu!#*7O$nk+*()?hq>d%q+p;nq+Xnvrl>g)G&GYLMQ>U^k1@c+;C`g$`K zA65?v?B@%ePh@_mm9F74*)cwm`Jq-=K0jPepC4$TH{&P>cD=R!{8j`X=&AZ*^`OA! z2Xj?@MdpWE=^8$7cZ^SDeyEkU@%izWc=P{*1Y*z6|*ZTe09n_lmsr?@xald6)2^8X-O>Np!qZjt}${A6Bm=AIw#J4EtAK z$O_8`dTIMl3_e!(SF__|&X3Lg)eiFsE!vBfpO1UX3Hr~yC0bupBUoQ{_gA5(>WkHD zSznl|>dTNH%ln7WQ}soAp?&|+`B058ADjEDIv-Zgl8>SP82BL57}($ccsOmzTmFH{ z-}QO^cfU4T>zVus$42kvN3)sw)AiE(`yjuRsXtvWy}z&AFEaI~>!tU1fBx%C{pot? t{fSfGXX;PaOYd*;=B-Tq>3Zq?t=|4MQ-8W%dVfFvb3apmx?X&L{{sT@*na>3 diff --git a/wireshark_dumps/g810-spectrum/g810-effect-to-breathing-252-253-254-midspeed.pcapng b/wireshark_dumps/g810-spectrum/g810-effect-to-breathing-252-253-254-midspeed.pcapng deleted file mode 100644 index c5c4b9798f0504c4c258b58203faaadb5beac3e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10304 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 E0K{vrsQ>@~ diff --git a/wireshark_dumps/g810-spectrum/g810-set-a-to-252-253-254.pcapng b/wireshark_dumps/g810-spectrum/g810-set-a-to-252-253-254.pcapng deleted file mode 100644 index 31f9f8751976e80f674b358eeaee4d3183bbb137..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5304 zcmbuDZ)_7~9LImxtz{kUXvY*`ogRwXxpiv`TZa}HZiwQ*De4rfquZ)BZQU|p@M13} zG4UUXChALlVWPa?jlKYbiHX5iCNuGkz9J%`qOVMBVxn$){QkQ3c&^@c*Slx=c)eKcy!6qcLiv2o0Yo%uJ?d)bLn#HgoL7^lYwEjrZV34bPS4NHp?7BGLE! zM0B7NYw_TT2S>t=^zZp|;Yw zTw|0EVsMS+>$zeS+l;o8?ao`znv2{&A!nb7AYBlx^onmrC>)G|QbV%o?X4a}& z(Rz{nyj-yA$2@Ca&DW7Ng<5Vw);58gSC*G<5)IUb`^-k{w}K!DfL_o8BA^>|0i&$( z+IC&OyP$JfGizvj&8%@fYgsdQ`TbkP}g=j(HM2wo0?5%4fL03HGliVd`1 zw9o^>Py6s(Gc4BAkZ7j+g_rh-t;{igh#&ch7-m zK?*zrj)14ZQ(~INFh2>N0FQ&iz$lkj7VW$IOV@NR9p{qkId$nS*5`5pUee$w*Z|%HE#M8{ z2d@Jkcnz!vuYzV^+-w5bS@p|lIuBjxye(o{`{?w-wQ8Ixc98X>;Z1jxU{@- z8|GVa@9DrC0_|W6?oXRB^8<;IOJ3Wq%ip{O`CV^~T>961Ci*v2u;|kK{|dXh3)bKD z0=ky8XWnG_Fu&_@J-dE>*sk+aBWoj6)r!{3u+$6Jvz9e;KkATWKS?yDDCO*M8yV>*vw|ou8WdK`Uhwt5c;H*$>xq>ZkFDWj`rhLneN>o?Sm5rFDL4^tK(+b#Q%C*SOJ z=Xu}n_dT7NQt9(men>=zV!=%YW|bKw6r|{`mXXwHb0GEZ*vYe}%ntK#a%ws?nl$@| zN5{?ZPIKf;YGTanh=#&cN-flT=EUUa@TA!^keW)KIzBu#-fTu%@y~3UPR}i&mUlWj zcE3Fm>TE_W9$cI2&OrY_N)dUei4uv{#AIqRnK+yE8cM!*8ty}pP&gWngd?HO_HZOx zfvd}KUDYc4#U<&Qd~Gj(z?k0WrN3vp7PjM<6`=WVcGS%M%RLb_5S4JNo^t-QrJ~kj zP<{GZ_UPx680?X}*tHPCG0W~zPR6oFJ$_`=s;WMU<46qlVZT`BT-Gmu&&!fMS$_O& z4`1W#rR;LoLL1Jr8tB-!d;Hn;fE@SozQMidT1l_T$>)bFl8^uD{mofFC!ad-iCcVT zP=p7s=ip~u3ke*v0wg`G^~CWbqfS-DVBz(uIppgnRidiMgJT0KWN=LsK5I4K$*j!_4{JSftY7A$qO*;mW*&i6K!d9#MLZT)5URc4L-a`!d=C((c# zOZTj8y(_aOJuH^F`7(hPo0n4g56fF6goL))OO z&=$yqo>67gqrCLADkU9Dt}R&VYV-QFzqkGSZ7lQTGKPom$}HJWuoV01d`7slynMvQ zQh4ZD#*oEs<)JQR&{N>m33WhGXt%1TU6|Wd4@EGCp%C;Eq+`jo1xsCRSC*rLHkL)_ zlKpZl<+H7Dme-C;meNDd@j+QRoe55PDsmqyfyY zK}Vohp~H|amt6Z{Sq^?+V_9@A*)Nw%`5Y`fmsc-ImeNC?%U8hVWvCze1G)$O4*j;c z^x!V$B*gDRW6&?qD0BzXvEw4^=_uptaCPP$i^e$+ZPbU2RvEv)64bi_Rtc36|nHSUAgDU)xv; z4=qby1-O*s*|P?78RUgZk;z8PkKx&~8FK(?fHvXzv=K7{(Xr&(f~BsuE6YnaZ7f&F zrH_5Ap?fD<|D$9n@7+$8?(g5{?sXUb{|bJqo%BJrrR|EoXK^>cYl@R55}IG@H1u|o5cu$svnWP6hNVZR(7*^|Yauh!=0 QR-=tip8Wi;mGoZy2mHLTN&o-= diff --git a/wireshark_dumps/g810-spectrum/g810-switches-to-fixedcolor-effect.pcapng b/wireshark_dumps/g810-spectrum/g810-switches-to-fixedcolor-effect.pcapng deleted file mode 100644 index caa928c7303cfbfff5429e2ffc815b7378c9f024..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9320 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 QxI19)pQC&X`RTyte^*jDZvX%Q From 2154dfe45e240617e6975b22ecca1a631a928dfe Mon Sep 17 00:00:00 2001 From: MatMoul Date: Wed, 28 Dec 2016 01:45:34 +0100 Subject: [PATCH 005/187] Add make install and make uninstall --- makefile | 25 +++++++++++++++++++++++-- udev/g810-led.rules | 6 ++++++ 2 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 udev/g810-led.rules diff --git a/makefile b/makefile index 24826e8..2021fda 100644 --- a/makefile +++ b/makefile @@ -4,7 +4,7 @@ LIBUSB_INC?=-I/usr/include/libusb-1.0 LDFLAGS=-lusb-1.0 PROGN=g810-led -.PHONY: all debug clean +.PHONY: all debug clean install uninstall update all: bin/$(PROGN) @@ -16,5 +16,26 @@ debug: CFLAGS += -g -Wextra -pedantic debug: bin/$(PROGN) clean: - rm -rf bin + @rm -rf bin +install: + @sudo mkdir -p /etc/$(PROGN)/samples + @sudo cp sample_profiles/* /etc/$(PROGN)/samples + @sudo cp udev/$(PROGN).rules /etc/udev/rules.d + @sudo cp bin/$(PROGN) /usr/bin + @sudo test -s /etc/$(PROGN)/profile || sudo cp /etc/$(PROGN)/samples/group_keys /etc/$(PROGN)/profile + @sudo test -s /etc/$(PROGN)/reboot || sudo cp /etc/$(PROGN)/samples/all_off /etc/$(PROGN)/reboot + @sudo cp systemd/$(PROGN).service /usr/lib/systemd/system + @sudo cp systemd/$(PROGN)-reboot.service /usr/lib/systemd/system + @sudo systemctl start $(PROGN) + @sudo systemctl enable $(PROGN) + @sudo systemctl enable $(PROGN)-reboot + +uninstall: + @sudo systemctl disable $(PROGN) + @sudo systemctl disable $(PROGN)-reboot + @sudo rm /usr/lib/systemd/system/$(PROGN).service + @sudo rm /usr/lib/systemd/system/$(PROGN)-reboot.service + @sudo rm /etc/udev/rules.d/$(PROGN).rules + @sudo rm /usr/bin/$(PROGN) + @sudo rm -R /etc/$(PROGN) diff --git a/udev/g810-led.rules b/udev/g810-led.rules new file mode 100644 index 0000000..de8dd79 --- /dev/null +++ b/udev/g810-led.rules @@ -0,0 +1,6 @@ +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c331", MODE="660", GROUP="users" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c337", MODE="660", GROUP="users" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c330", MODE="660", GROUP="users" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c333", MODE="660", GROUP="users" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c32b", MODE="660", GROUP="users" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c335", MODE="660", GROUP="users" From f01c26feff331a4b1fa1c8fa8705c6cfd22e8c22 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Wed, 28 Dec 2016 01:46:37 +0100 Subject: [PATCH 006/187] Add make install and make uninstall --- udev/g810.rules | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 udev/g810.rules diff --git a/udev/g810.rules b/udev/g810.rules deleted file mode 100644 index de8dd79..0000000 --- a/udev/g810.rules +++ /dev/null @@ -1,6 +0,0 @@ -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c331", MODE="660", GROUP="users" -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c337", MODE="660", GROUP="users" -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c330", MODE="660", GROUP="users" -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c333", MODE="660", GROUP="users" -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c32b", MODE="660", GROUP="users" -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c335", MODE="660", GROUP="users" From 332009856c5ce9d869deffa715ef7337fb296604 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Wed, 28 Dec 2016 02:02:42 +0100 Subject: [PATCH 007/187] Add make install and make uninstall --- makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/makefile b/makefile index 2021fda..bdf5fe9 100644 --- a/makefile +++ b/makefile @@ -4,7 +4,7 @@ LIBUSB_INC?=-I/usr/include/libusb-1.0 LDFLAGS=-lusb-1.0 PROGN=g810-led -.PHONY: all debug clean install uninstall update +.PHONY: all debug clean install uninstall all: bin/$(PROGN) From d27cfa838ee75afdd34c555d43828415e06d3828 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Thu, 29 Dec 2016 22:43:46 +0100 Subject: [PATCH 008/187] Add effects dump --- .../set_fx_breathing_fast_00ff00.pcapng | Bin 0 -> 211196 bytes .../set_fx_breathing_slow_00ff00.pcapng | Bin 0 -> 298288 bytes .../g810-spectrum/set_fx_color_00ff00.pcapng | Bin 0 -> 293528 bytes .../set_fx_color_cycle_fast_00ff00.pcapng | Bin 0 -> 204820 bytes .../set_fx_color_cycle_slow_00ff00.pcapng | Bin 0 -> 180492 bytes .../set_fx_color_wave_center_slow.pcapng | Bin 0 -> 199424 bytes .../set_fx_color_wave_horizontal_fast.pcapng | Bin 0 -> 215416 bytes .../set_fx_color_wave_horizontal_slow.pcapng | Bin 0 -> 180384 bytes .../set_fx_color_wave_vertical_slow.pcapng | Bin 0 -> 202708 bytes 9 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 wireshark_dumps/g810-spectrum/set_fx_breathing_fast_00ff00.pcapng create mode 100644 wireshark_dumps/g810-spectrum/set_fx_breathing_slow_00ff00.pcapng create mode 100644 wireshark_dumps/g810-spectrum/set_fx_color_00ff00.pcapng create mode 100644 wireshark_dumps/g810-spectrum/set_fx_color_cycle_fast_00ff00.pcapng create mode 100644 wireshark_dumps/g810-spectrum/set_fx_color_cycle_slow_00ff00.pcapng create mode 100644 wireshark_dumps/g810-spectrum/set_fx_color_wave_center_slow.pcapng create mode 100644 wireshark_dumps/g810-spectrum/set_fx_color_wave_horizontal_fast.pcapng create mode 100644 wireshark_dumps/g810-spectrum/set_fx_color_wave_horizontal_slow.pcapng create mode 100644 wireshark_dumps/g810-spectrum/set_fx_color_wave_vertical_slow.pcapng diff --git a/wireshark_dumps/g810-spectrum/set_fx_breathing_fast_00ff00.pcapng b/wireshark_dumps/g810-spectrum/set_fx_breathing_fast_00ff00.pcapng new file mode 100644 index 0000000000000000000000000000000000000000..ead10df0c9bb9c273b886b242a2403015fd07ae0 GIT binary patch literal 211196 zcmb@P34GMl`oD*Q3JOvcwF)YTY$D<=?oniML9|xEx)54W6cN-SxKg((ii*nsdTC`^ zsA55p_9wLUA}zNCHwKl08x&NE(Bc)8>(2H6J(IlihPO$RoWF<9+nLTx&&hk9yeFA? z(z1WMcKZ*HL?T1Z?R{hm-2P>^mXSjum*0BF#L1mcJF(x1C!gBqH^e2G8z`N85Ugp?*UBta^=!Q0>!;_ldl9`3=CKPRVW6DiS&O zuPLL|u#uh59uRp3IrLQDpylqXHif>!11X7z6aA|GbF6O@{ZATlLv=d7S3&*vPxRj> zLj5nDen8?U4#rm%O`6^R!7UOa8RJ@={O^5ITBNkZR;aP$msp!(?pp+Jgd-%rD4*IL@3CLD;m25exQ@XXwx4o#@|X z9??I~<6`u$n*ThewrGQ?8GBTVNb6QDQ(8FY(M~lV`dt#O~ zrkca%nu#aXoW&5TseP~Q$Q!D2aX%4nSe*K|ctrJ|WVRITD z`8{$SA`@{v;s(Txh?@{25GGP+V z;V*LgOgts`(_S(E{q)vvLhYwnyaikvYHZcioM*hoIe9USZr5je+#-LbqjrU2n)L*> zeQM;l$dkBz3Na0_8Q*`6_y+MUVhf@ku@&(hLbVt|GW`SFXW(%aUQEyVQJ?8yWz00v z>*tuYp6E=qrkx`8{*BE|G`F>9Lj~tVW6C=1v?m->HI8a(pLuyD=R|WR>-3A( zZ4<9o>wt4Dkad9dv{Pgs9840gw!XOK^!3-A6OAcrugh_56UQaP(U-a_$29Snti4xv za86VQS0~msK1OUk(dwUaYW5frfYVdEI42rYa{Ay@o=267S2OX1$|;6WO>r9jn}6-S zbdJ@(fuB)9P0rcDYCT0xt0TWgmLT3nEJb{S2-0GBk*vLSe{ue~J?z>L>*=8v=`-!z z`o`pOKevy2?U|PbX4)x|x_72-`{}P3)41hE6-%6xn10uK6h_mrk(a$oRE)O?X5hAbD}XN(|sQb$JAMS)BAHyhCOGp_SQVk z{rlElfaBgbgE%MSSa(jxKBdp;jSS8y(%GHU_cH@?Iw1(BBZqNLG^XT~`7+OAb9=jK z@7po^MQV+VXL0S(oJmdx7KNxigK94lX^C;v`^J4D&NCK!aF?4H9+S0qeKzOsbuKd- z+o#@R8=_CShMRW(&i!=6g*PRSdvsnQ&t>L3+Ah(*+DBD1b1q{|6kbD3jU{s$IpC&h z1CJ-devd7g7Cg}ouh{#1F!6x+V&Z$%zcZ&(hj30bXOijN)46|@6E!(!IPSHLTpfv6 zueM(0mQyXpH1MWB-0FXRGJGWGL}N-$FU{5Gv}82r zL~|zV>F3u1b5frl?bX~kJvoMRqA?|>_ltQR_v%o5W8!t8ZhyxI95$zBMBHANT z5eFe+=tgayiBL^#-wJG>f%_`Fn5Hb%XFC2tf2NC;hhlmlHZ|GYnEo<_bMj((<_dkL z3#a)r-LX0p(*qBV{D@DGf5b83$H<|G!w`of(hx@=jzn}sbV3}3I2v&bB8HieOqV_5 z$lv2!X3rXZrdK}COe+_~vRiEj{U-&ak?G%dXz)QjBGQ{PGA&4swLlIXZu0o_E zu0~`au0dRj7>0;pA|%ssUvmDHuiM8v@%iZ+*goC&kuTRV(@4zyc=|=>P)sw3r@D1x zn)fy5L}SW2-OyE^>2=>TQ<^hbr!V&n#WZ6$_*{p`L|l)!0dXVZCd3GYi5Q8v?bEVOUpiTz>61S(Q_5eiz3-nMifNW&NzILEum5sRG^S*F>zVpY zzmANk&cz0(pgEIFyYvsm)OL)!gk#(V$G8j5V;3CbE;z zX!aPHqB`Q1gS&FyJF^q#L}SX@n{*S;Blp(yo@w_Vv!7C&zVE@cM{_1Q^|>uX?IEYt zsHG){w-HMbs@{S$wOum*#XUKH+CIs27q(CL7`gi-W=i|1WO~}&A!;vxV=OwAbD}XN z)B1_wn5un8HN|w~1)LMjnPghxty_&|~_X#tr10lCD|! z{Wqot<`l>=o;-+iqA?|>JD=ovq&alEHSwU@w_^y^6sK+JTzfQUl2gwaA!;w-7a4xtw{cE1 zXOihl3%P&a+6&+q?;XoI(U_7``5XG2M&Hdj(J@G_kwtF@<`l>=9&``qL}SX@yQ+-m zvAJE{wD;|p{UTL+??3Ecdu^&i)SjUn;}594zsE7&@<`MCCDYfieY(fJffLQ-xs0)3 z@Arn0+|k3;R1KUMN%XJwQ5DUc%LHL%~ zTCZ~KhZWQ4qnuN6pRqreqyD3hT0cNJ*+0%o$37KIf0!8y^G#EHgC`G+-+1`TH4 z%44mG$7N34p5mOmICaBClxjbqoSNYj$T5zY#yQcLlG7M<(I%P>r=wqjc|;OaEy&`jE!)Njc|;OaEy&`jE!)Njc|;O zaE$IuKgRYM7*K^5(~q%zy2rhJ{_W3npMQs{Q(wmzS;;whF^#NL2?t+KV~JN=`^?f$ z{FyHO#QFgPH!7%kFok1mgkx-kV{C+DY=mQMgkx-kV{C+DY=mQMgkx-kV{C+DY=mQM zgkyAP+Od}Nr*m#uryXncnfCvRnI`uc`@JEpz5Txm#njg^PT0sf(U`JMCv3E4S*K2W zY-gr4XL9ZBvEAz5z>NxO9!%jF8{ill;20Zh$JhYJ*Z{}a0LRz>$JhYJ*Z{}a0LRz> z$JhYJ*xrT#z#*|EdwclFn zFkSp7GfnO@;{0^+pVn3yxKTmPgDD(i0~})m9Ag6p>;0gkZ& zGOhuRu>p>;0glm~X}`$GY6AnRpzV`P`{5v_yY^0QHPZKZI=PkAznWhaKF8C6YE!AX zF&)*KbMj(3s$JhYJ*Z{}a z0LRz>$JhYJ*Z{}a0LR#X^O6QQ#s)aX1~^7{rt7eM1_o3?+b5Z>!}jSiU2-ThrQes3 zb-LuxP)sw_rc!fb+A@uEqA_KiwoKD!TG`c~X=T??OyL+C;20a=7#rXi8{ill;20a= z7#rXi8*mQT0LR!6$wFi!Mj=KcVwi}15hg-4b&j~Q8|P2IA10Zu?55B3u-?qn=(+bb z<#aqftam7;S=QEDU)`8a>dQINn3CzFzWPl2pXp#~{~n*L)Bb0MVro0a?ZPo`hhy9h z=dm4*aXTF2b~wiEk*$dD5URxxlIi4gIsZu4y?;-D=6v$G`b_7de^pqC;_B|sbgtch z2fR*2Giz@k$9VV!j-2cKG?p=E%u|)5Od4Iqe+k$VptYLHohZp&@F|&X4j|^C$PcIq8m^>@g*$Iq5u))R)_> zY4;zqpH!T#yU9^|9-OYb$?D(0 m$Iq~l?Zii#s4#&71j?t<&`kCf#V|Y^L|1-AF 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
kT>GSwm5-Y+_3#+$;W5_3W2}eA=+E@z6FvF^ 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 literal 0 HcmV?d00001 diff --git a/wireshark_dumps/g810-spectrum/set_fx_breathing_slow_00ff00.pcapng b/wireshark_dumps/g810-spectrum/set_fx_breathing_slow_00ff00.pcapng new file mode 100644 index 0000000000000000000000000000000000000000..8bdce8067ea7e829017b2b3fefca4393c9b564b9 GIT binary patch literal 298288 zcmb@P2YeLO_Q#h<3mpkPfb>p~5_(t&Bp{(Cv{14H5POX%D2Pu$0V~A@?>Tnt@2P-3 z3$daoqGAQ57ez&%1v~tIcW2I?$;nLS&i#8opYQHwH+%1#`<-)VcF$&0rF!)$lOmDG z$o?H0mBaN(r=1e16UjOIg3GQrtw)#MT~6=b`Si|%#$^tRl#euw47u$5i)PNa=(Khd z&%R{#rDx5!u6(W6~e6u);+i^M`w<6b{JeixcsC@ZIr2nf|&sM`m=3h}YawB4B zr+z?NR8egT{e(M`;&;dURs9#)KgRn%@zk5ehzx(@4s_|`p>wkYWx|e;!;tn zIsKnnEWhx1q=x zQ;n^fn)8MKbH(KBN7Cs_|221d#&5w+m%kFqY484#JO48PWPpJn3I>6}AQKD$LqQhE z2E)K`U?FDd^p!td@%uPUdc)l5sReHZ=IOY0)#7W9${9sKo@U`!63xr$BWJ!<9K~-a z{POf@S~c~k$7&G2J8==iEj4ErP)+SK^DcNRFi)TBW%nP&a}?BM9-M0DY1SE$+n*c( za==J13XBG0z*sO2D(cqoaWiR+m~KW8!U9iVyARok{ds^@$vNc ziJ_bpCN=;!yqvDP)fH3XT&U#n^z(dkrxX6kPHE2M@$|McLpd$H4zXMhN6T=%9IOC) z@$){g9~=M&!69%M90B;1`1&E8K7NlYejlgbo@4Ixy$6Dw*1AyJX=)@%MZ(R?X^n?n zG5I(hbxAmku9%!TlTMQta{npzQ{$I14{+X>8mWMUas7^0Oa&WUG5L79 z8)KU0-tOmIF(qDelsuPhdabsnPCA}ezTk?<$I}N(cphC-RO)67_o#i_0;(xbquvb8 zy_;?gk$c$pwnc7xVk6i9Hi7-X9ChPv;2oTz1ncbEj+GWv7d_CVRd< z`RI0Sr>T)zC1dp3Pn*2QG0~XvTz1->;heg2@6%lz6U~{-y#^0(|ADzzE;#qb?B51$UW?P<&bMhn)&A5Ld)5{m~*FE8!G+E@zeH6r`a!?JMHvmu+#Hi*LIp(;shRX zc;((7CpacQr~Tdx=hU5h8>(zA^*TyA{douXADDX@$GtxFwiZVbZycZF-n>2Lo__Al zG5MWy_Drg-|JqP(sH=H-x@LeYCZFTp%N47~dvVX9tJ}oQ7;eejJ7eh9#A`#pbI#>8 z?Ea&8zJi)OKZ(CKjH=vQ{a6xy=@d{NRET`;K4rl@-p#_@^0@c#aE`yYIN3ffiPsTd zoodf{RCFu1FXr^`-cOr-?{Z4}jCdVU@SL_&dxv&yhnLd^KXXipIT!ECO?oMuQ+G^< z{^Xcw&SdVjeuMjW?>BPJaL!pRk{gNGzikKR71Otow-dQnOz&?BPo1}#d#YXG?ZkRg z{D!k12v1|*)%KLC-T`+vubA$x?25@5Qy%yBywCIK?oZy1;SRNLyFFc6%M}y7M_|uc z;{DU7KjZ!bJf%j?4n99QQI}()eNP_CGWM8zYS)Nk@>?U%I-u=Iz0X~ud3kD^>Wax{ zjhu6c=dnbG;)fW1mTTnhwr>Znkxl<+_aDXc71R=&uNFi!=lwIRiz^?g04jn?pfX4X zRX|lx4O9m;Kuu5!)CLy%kZa`T4zBoV4HLO{@<(&0e{~6VI^fq(PHU*SpyuWDi8NPC zK2DEeOx4_ZL4CTfWB5Tjoz*Yc>HX#H&5Yvt3Ti%1Yn%!{bwCQJ3+jRTpaEzI8iB?j z6*K`&K{H^XW9js%fv)&{oc>U`hVg6oW0}EDyHvOPSM#d~c%M5JzmjNPP8(&rV)AjC zU(23z6Q|#d3U=D5K`5uGr$tsi+#Iw3EkP^L8ngjzK|9bMbO0SeC(s#Kmlj21($qZrgoE1P6KO%S76r|S3cYww|jt|ARY7qy+I$)7xV*OPWR7p#qV?8)1r&H)0fY3Ic@3f zv|P7PP6KOp&$!n zgJEDe@N#O+i7C2b!sT5c?qGo;pH^ChGU{JrPD>z&7J;c1v~9?PAI3SG2Xgw4G|z7#qFDG5I;ozcHLswH~OZ-k<*NZH|fNOs>6YYqF9u`C3M|#<=rcj){&Z(o>^5%sq|#fMbgIyx();bD1i z{L<+a51TvP^d&o8)XMu@_Lu)?JJqT&cK(`UqA}%qdj2!voVs)G&~c85_EYJ!busrJ zn0p#E#vlGF9h3CbZHu|51{K~(yw^(msjM+hdRN<%R*i9S#dnIM*e4Y8H}|$$&i2KeJJs6IxgN(KeZ{-Z zasD22r{^_grxd?*`q&X|r&=|}UClWr8dExL{B<~|?%Z3`nPZ|klezcNaqd4b_cUsZ zW4n}&N#@?IznFVk(2ZlFJdmDV{6pJQCp)2>9Sv7%{^YtprzgimV@gjCo#1)o-b&w! zIsIGCLu%h{Iw&~zrdO#Me?}CS3TpEFglmj9KbVAH`a5cjyRta`VxP~SHm+6E_;tjh zuGr5wl4-$Q`^_zJdU68UFKecAI+V1x{#gvt&yFMhjMBkuA@+8wy_!s)WaRSZ8#r%M;GQ<^jBbZL3pUKGz)Q1fw$8smz4>VOnb z7t{mwK?BebGy;u5Drf?lf@Z)%$I@xtg&aR^pLANcLOJ90wD&)Po%T+)`=?_>8OJ@9 zr-3!b+$9{7pVQoG_UxKCt#NCx(;5vzIYo_e#XZeI3(yj@0CO@ZpnwdMj{r+I5w|5NX6g9>b z_oRWYz^*Z_xTiaA_W(UXI_L#@gFc`y=m#u#lX-g6gB(8{!)2b{)Y;r=g~!+_o&U?@ zX@%~goCeky$NZaPqA}&#JEoVp(?-v-Q<^im_BI+A$|-7$EAANpGQdC(1%tp~kO_u> zp&$!ngJEDe@Nzogd5&M!qv#xF!eDc!7oz_>>`RJbQ8%XkFLe6XTzj+7RiYK)mfTN& z+{`i2n9}KwS>{e(+`>+2&ZN^9M}=~V8smz4Mt~eJ5{v?)!5AbT4I#t~znwQg?w{uK1rgVDq1aqfDcCk}B zUP-4z3PU+Xjd8_2lR-Y10;Ym#U^*xOF)#xZf|+0zm<=q|j=9rq$AX=1yDXGbr^dM4 zDp_M(ZtaUKxAubr;2<~z4uc~=O@g|RP9HeV@ypM^Qv44rFn5~y2RoIYfu;U4|Do+v ztHyZ230F+wvvoA)1xvy?Rr`)=>h)hn#dmq_aXybI^EBf|?mxwTYW&i^7dMmaJ9TS} zM=@p;Pl+Qw14%I*#h9kK_h40yDUsXGXUeJn2Ulu)(yB4msKGJOm~uU>v4-c-o-yys z817d4wgpsEp5AQuZt)`AR?xmJJ-un!{YTaB0BX`x{CxyC+lE})2sVICK;;`fr>txB zOEUL1H|F^1cp}%+&G(u+{izu{rJ8^|M*j4mwo|Pd;~mXiF*&sx>GY2E;heg2Z$xKT zO!Qu^Q@f)5bi^~WYcpvvxjHPGjD?$=uWS9&x=drAPJLc@$mh($0_jW{Gx##0)#}>Q)D4wUFX5WjSkZ-ERb1zG*fl7#E*aI(~WFTl}55)0L^)19NZXeM#|iCAE(#%E&#f8soVww--mzPaL1zJNFSa zgJ!j>UL9RA(LN)Nd%d3G{sVGP>+cx9!kF=Ru+51zOdR*V!kDJ#oU6KWOp&ybpMj#| z>Z(oJp0sL=r*!9-XiRy2a>{>s9+fY@7Q+K7w^fd-rgCp{2FFBmCeJxHzs~&!c+&bi z#@>TCrbW$5eny|>vG<$io(hI?OvR^pdn$NG+mlv}@#ZX!iN=(kZr;Z8XdCdpjNxwO z$pWe=Pub(PCte%SoJmjFpV|FK@f-y;&ovTvmX9o5R{>N6l|W^X461;tpc<$SYJi%c z7N`v@bS#e%zl`VjY5U|F`OD|#PTS`PJ8i!&l+(Z(VkTpK4<_Mf<~Y*NCizmQ_u`}IbC=r$M5HK;kV{aKRAb-(&sPbxy%Ru z3*|Jh#(4Mn921Qx^YreY%$<&(7wmL={H(+|_EM7K+9yv@V_dqnIcNb|f>xk4Xam}U zcA!1z06KzBpfm7tdIH-Q#aIf8U*_ovY@g{dvi(AKS}Z>MO>2Am3U>eMSfVK7Tt=g;_yO>Pv* zX<&`%(>;{aEZXPQwK~U?`)Sg@IVKuYI!)?j z?)0-w?3CtA=ILh{p`4<|xa6)8AP0;Dqrhk|28;#cKrYAw!Oa{KjVYZzm}Ty?;O$_i1>-_FMU8REU6VmR zm;$DPX<#}i05LEF6oQ#x7MKkz%!J&hBkz=sUpkHCnmg_G9y?vs*4t^fiJ_bpCWPXK zm(#Qz921Qxou=iRJ3YLcohJ4fvGyLG9m=UwV_b4q$r|I5yY|7`esBOB1c$(3a0IA% zuz+-WWG}~0>y&hQWRAJh28Y-w{Y{}$F4N@H2W`(iSj^tn!Q-tlU9wf z?Fo*F#+07gF5!7}O=GE>G2El}Z40QTJbjV;UgCWOzuf!cmJqp@q-ump z=hU5hqnmR~eojZP=l%n8Pou{89mWju^c}`DeI41f4aY=tCOtKMT-%dYjj?fij)}&U zo*Ms~=MlT9Z;Rm(nR_4h2+q9^pAV6H@fzdeJCii?&AqXfvwbn=PPI0?mCo_g8ZM7} zZ@p;lv|unhrTtVoEqF`YsaB2giXj{mjVYa8@pd?;?%eA#hGU{RlgGU-pK$+yxu@}W zj16;3$0R*9+-dG9dm_g~c_2My@7DID^>>UXF=iC|qJqYho=##+)!cI!ze8Na@UzUl zr)CD{-cv_ItNf=8#t33Gsd{^pQMI1lvr_$+Lf0#Rs<-Q+y+>7lj|F_l{ z-=F+`pwsvFs+rSw>dw8jGdL!iGnsp9zvTYi`;Esrr&f*e`9h9~#+06(|H_`nXgo5$ zkYmR1klIh(F&(+k6_fbh8hZcq$Z>5?S~bSO7rSC|#+11?_*b4sj;Qpl819lW{dkot zCg+?^diwE{3h~aAqX17@HO9h4920%_ob*&!seb=SQ!1#pHaSvh?(5O`b>Rsh(G=U%5suxaIxgMYvxPCC5-+ZXqV$7uUxp5B1%Gj;mT{p^&!D_`d6 zI~_wg4XiPK_YlWKV@jvrbuo8(-_yZP@9P`NDQb*YuWk-nfR>;YXbswcwxAto4?2L3 zpcCi}yqq?9hU52h+N7Vk(^1d5ocg>cI%;4jr-3!b%b(|%{LW7=A8hV4ZA-Azv{9j) zqQ-dj>NL<5*fqwhS9izl9-t>k2faXV&872*PB+a6t5*#G8DJoYfcP>=<( z!7wl!csbqhImb`?v|M{P%rtlU!(MipSO-K`Vrx|@XCYm#udozl)J!#b#3;J_R zG^WhGf>(JSX%4-vW4Kf0wgpsEp6U(@&b_+Z?f#>9j)I!>#DB-QaOFni(+02!sC=X6 zlyz<4LAmzSID_M-^FHac#{1?@2aIB;^!iUa9q^I1Q>_}~k$X+|#Hr{xF?mqA{hX9}by&YBrN&qB)bEnjO{lq*Y@aKZj$YF{P*R z$9Nvg+P7oQzHK?bq;jv-g`9gdXVO!v;~{b{USnLiGD$PvoK1;esqK=vxAjtvpSDjr z-TJ$^)6dX<9>!JB{7R>vIsL1BR8hvcj8={D_*{;O#*|Kv{}s+@5w=S;<@AYva7;93 z(&-b)YNqXYR7}+5da8Te%e$6iqA{hXyebuqU++)9j$@)Zlb)v6u>05Wq*Y^_zno*D zF{P*ZwRs+C4!y2pxKsV61yoa>(r*jSz4Rt_|4}?gK}~w%zhk`WmL&Yr-%(@Si|vb| zFNL4ez1Tj}_i)yqxg#+5)_<$*RO{~;Pd$G}A|^klr~VYqsXO<+DB_rC&SdU=@dx)G zkb7D+#+8@3Vxspq#pl{q{%P)M$b628=1k_^kaCsc`+-L8Y1J5?yvh}m^FOL(?mc-* zCADY9*W~yOpNkmoS2OPRbk_B*n4CG2p3bVt{Reo`sxekwRyroRMpmt5&tnwZ>uxgN zV|Y-;boz}P6V-;Kr_)okJ!$RzAc(H)b#O)*){18R-@ZtV_!uZ8vl z@!8++TG;(Z@jL}JIcHpBoR4=W=HFNmR05SjGN=Nof@+{Tr~zt%TA((t(6O5H7*I`Z z->P*SeR|5l@+X6xUY;JxDQb-KZ>$4S zKwVG|)CUbfL(m8`2C1M4XbPGE3m&D@KL6(U{hapcW$twPGwhUJPs===-Y=BXz#3!b zCXR{5lzEz&Vea(gE5S}r4iDuNHOBcjHU}+0OVA3m25mrF&}+(1 zJH7p{V5he)4&@Xz#(6i406AbJ7zIXyF<>kh2Xa9k7!M|ZiNNxRf6$52@yk3Nw8Y%$ z1xX(!UPsd3=1Qj*EDPl{FCi2+yqwOd@L^&0 z6g9>xR!j!@U<#NDrh)080K~uyPzYv%SztEsa$2p9D}J9mt#+5W)Bg2cPMyy#N~it* z70PL0kkjuPxMK48yySOxn>)R~6+2C=?ZWB(kA`yU)EKW=QL@H(#fp9KwjUe-2f-n5 z7#sm=9=x3X*wz)lkJBHYFn8LzQ?S$4Pis5XsxcOHb;ac4v|v*>r)oV=O}+l>+}jnC zGiUM~sq<#;KgE7({8GL?)qSt^D8`JU2LnYF-?z=|BSj~^2xn_ZqfFnRbxDm z>59q6(}Ar#j|knj#qfwa23tTiFD*PQ z&k_DL$`!v)?)~c{bEm7vu~Ryp$n|vfXWCA+YK)6>IVKuY9wQg;4CmCHd;JPHCdvbu zd;Jb`|AD!uQDdxdX6cw@?p65K+*9_su9)b%S;S}HvVYL_q*Y_weF4YhcP_L0XP(Eh z_U@RoZ(GhUsoZ;PF6UliKM=>g$NmbDd+{3M4FNC<9)dEBGIYqMhv%A|L)xDvz%k1 zIg`29r#AQR9>esw_ri@F6OAc7y^vzhV-(x#ZgR{R9+WYizLI02Ig@MT=?%3#Y1J6N zU&Arcm~xH$K9%Ru9h1CGFL~|x{ zZ}ut47+tHruT^7gvw&lw?*oy!*QR{3@j2(bYd9v#1DSjCD%<_5wM0?o=P(jGubKt# z*YG_Tb4)a*^whH|&!gRw_hk%s%k|{@n>i+$GwJF3dfb2D8maUD7;h;Zlk~K*zPYE> z_i#+~J!{g_>UP?mv}%k+_i;=#ru0D!A0^&vN$dyW{3I>i z?mvp>DX1lOGqoV1agDKPX@yA9(u$xGs0@-p6;Ksa1JywdP!rSwwSk2`Yz%g~WOP4kWEkH}q3bY1oKwHobvx= zjre?5>eGdxoCekyYwqTlXiT~G)|_qb^wqCiPMw(KG4j=mLODf^@zSMfpewLzjF&F$ zj@vyzPmm6Jf!?4G=nMJ*FQ@t6ar}OHnm^av=?_1!Q_7iK@p}J5>5;0}KRFFbE6=nP3PQ3bH^p7zTy|FQ+@PebI<> zeopVP*vI?+^qmKrKxo117wxFydKDkgJG zG^TV~@fLHZn^S_FZeAP8DQb+DE*SxGz(_C(j0R)CSTGLcf;=!DOaK#s?cDxMUC;& zC6hrum;$DPX<#}i05LEF6oQ#x7MKkz%!J&hn{?v%{hT&=+T7{OX~9lk-WbYhVL~Ww zcsc#8JICbb^tb<-JAJ!fu+z6+3FXwOFWC zS3GNsbNh4reop7UYVPzkaLgbOrFc`{L1b>isvY(Nl)?j5%8YEHssPq zumNlWD&OciWnEi%P_Cz|&MY0jbh_$WbEoHA%uZ=-lTOe1RokgnjdA`Z921QxozDL) zoKtu1^;pO;CH5Kd-cXMURpKgC-Ua5KMvZY7#*Csb1&t{^?ZTL*=cf&?cff@(#yO z+b5mgl56ht=f^%tyxyn(i6@=@+`X#q>wT>nU3_aBgZS~bQd+gvgE{4dlddGgVslT={lYOVdO7)($n_^r%6ximp|&Tj8e@~+TroLgN>5D|@jOa5?w`q%<=m-W z8+=s$)5LqCG-uM&M=R|9qj;Wzn%uX!#(4h13X$^{Rs@wmWsnT2fU2Mxs19m?nxGb_ z4J>pl&rjx5_%yMe(Dq5Eb8awqy6f~$6KiDTRd1)eo(<(Ru*P_IFOG@Eluqw{$=vCM z1B0Dj_(mwFs4xk4Xam}UcA!1z06KzB zpfm7t+V%pDKe0B7+C|%+&7J04&Q9rgBG=xW6QP`Tz;csl>KsF^J>}}NPM7?Lol^YL>5|@|oMu6LqIu=%ozHMgG^WhcJNubC zomk9H6Z?$F(}~%koTA2f?o}f|4j2hWfzea<^=Naadv^po-J2iEDQb-8UNsrygDGGt zm~T)7OvEe9*W-pDyu?gRV50dNo;0*Ap7pyt5>GEWQt;Q0NV7XHKB z>76IpX|$vF|Jb|}pYYWDe1}$zu{i0o#OpH}Q?9+m%fdNT>w#+O9BFQi&l0cCXwKyE zbnY7NKgE7({8FAH>DCyNYr0~h^Ad3`n|zzOrv{xlCaMX@V`PJ8v^{Cn7}uT7G0~XP z)4FGQ9$nK|>Shf0sD0Z4swqzw_W3OFK7ya83yVYKUXrRYo;`mf*Z?+x{lFfv>`My| z%iKGT?Th06I6h8~WBW{NSE(87G}_ub_flWicB)ll>^sO6lQX7t+V{leE=$;54fEA93#`u3FQ_avE4;EdMpfL}SW4Eq{r* z(-)7soH}zR^Yq09p`4<|IICy?$N&RD6bu4`K_(aihJq}R4Tgc?z{_c!-#PwbAE$M$ zF?TxbM6lCgOF}u#!g7;nMYtu`p1Dc860bS@oX%Zl?sRCCU3`w@<8m~0b{{9kPGs_crXD>1eQnq-`3#x{np-Z*O)s!f&SI8RN=Swo^bkC$5KVW z@lWbgzy!WyP%$;7@IoRoy&xFd;!h}%V@NzowbXQD1PA5KV?zDBE zV5hB%LpgP7jI)YL));3M?Sr@d-~c!X4uQkq2vGB20l80qi0zBweuZD2eu(WeeGhL| zhRZ3f?c#leS+8q5)v7W67^*bEMwyc|6AzlTV&LzJvQu!Skre z*QdHQ#@I+#Og_06`_SCe+v7PVI$p_h*|$H}_M}x~oHL1IqA}%p&zwCxk2Hr~*D>6w z_H7HOraYZCD>(N~`#MDKC8-+Y%u6?d4PX=459|@kzO?YL%)K|TeNo)6p!ntMlQ*z^ zrnxusVs;v#*R&${X8x+}RIA2Vd@097V@jvRzlU?`&b`a8=9p;CDNf?PGpm z?rGE*|ML%yiN=(k{*zqO*wfS3aZEI4GWVXYVfU}%QIvTugL<61sri%pUY8Xd6OAc7 zbvc#i(cPcC9dr7(oCj3y9l4EjkLFBzI?}}MKZ@rmsL3@l{vIA;Du-N4(#$vNOI=$) z#=rJ7?% zd89e?x{l#adE7hxqJQqae)a50s-KNX>e9};X#AFaAw6-8vG5Z0l)t0Kcyu$zpLp%& zyoW>E_XrA^rpLVlt3FS>Hcad@&T)_WzwcAKf3=S)%2-deYK+g_@p*9+{U~Tma!O;) z`vMQ5x%0xlr{rY}KPsn1&fO~amRKAU%^Bq$^*{8G{RE21c{MAJz7xRb!m6o@1ghrKft|@;uVid0oeFr}R|w8ICEj zAK3eLgkswMtKFN1C#@ReBN#J^E)_JU^mNW|=AJ%$mSdvzN_txTm$oOZ8sq2Bb4)a* z^t8^|vvu>y!u+VF^69oMpC{fwqdAlLG@+WEIZ-@EK~3fp*BA>ftPm-}47rzti^z_OW3bco-l3cZ))+54 z&N2Bp?b*-VX_urg0@vPSS)rVw##nGc8t4j6ho^41?hbl@o**6c0=+>W&=>RrUQT`Cq+q?frR}xzq8Lzet>)M#T3w&^bcgk)fOh))-GFb4)a*Jf3bIW$tuiU6)hw z|BWf8x%r`-qQ*G=`~e^X3^U=$b)#(=S4 z9LNQEU_6)rCISmHA=lpWT}sC<^Ypb#%$?Rn|9Kc!k=SR%>&TCs{?+-4BH$cJb(LsE zxFut%aXQCDW6C^z_cC**Z}exUiG4=AK3RHAD5t0~PCtJ#$OluvR4@%p2L&JoW`II4 z6U+j$f#ngumEnq?K7S$J8;D(N?)2Tk?39je^0mxO*M-W{!h}%V@N#_|fg{d5qpVQZ^a8A{}qndhs`teMTiRMf?y=^`BpJG2X zerex}n@RSay6?5loy9THn9@`F!{(kgp2acI+9Pvs?&I2?v}%kGoy#%Nm@@a~{F~>| zHI1ci#&D0?w=JNW@-+SO;M{Bag57@<&rwj5p5pH#z}YtB(nhcWYyv9Z=s9IwTX<0B z-lg+g@ly>@tf$>yGIwe%V5f2Rz6z(U{WdUq{0^b?4sk|8Pu+eMaQo z#^c<7VD4%B9plcYIVL(rNKbeDYVN7Rv#yxv{RH9Z^*^;eY1J6te2!!CdmVB837$vn zLcT4AN91wu>epSl=e&m@b8lc3JGr8GzJi)(?nPC7f7-d~8GlEO@jq{J{8Zd5@gBPqxkvk{Tu(RRuQJv9^J*Vel=0e7tH$_r-`&NSrubaam@@Y+y;{wnS&ec2 zV2+9AOgim*9rquQds=_Tc-zp@F-cDo@LxJj>l~Yhb4;{eNl#bbr0q$o#@K5V$3$aF zPrt0>d5jD5xrpI@m3u|b<40veC00gKfse#jd8^kS4>o^73Yy7EOSp! zp#MC?s7QPcRjiR0IQ^@56lLU-R*mt~X|9;)bDZ%pJ7>^)f_L1@^N1mRTMUoLHS*T8 zcPHNGE~d{G3r}O8u=|hV`3h>DYb5S0ADMD?1yB)G0+m5Br~;~jYM?r(0cwI;pf<43 zu{=Nd`7(~5_9K~l8~$tVwEA@}r{c4}G{4*4*3Lbx8sqlsIVQi{yLp?r)1|A~Db1N& zBeOmW{IlwS6i^q`1NA`z&=52NjX^4C0-Azmz{}|;w{!gTx9-yE?Vp=FZM&A8 z()Sn0_4LS|P)-ADj1$*!Of;rkPwVe9cUomVJEb|3PPcv&$|-7$`DZl;EkH}q3bY1o zKwHobv7ktFC4}OJm(zk{u9)cW_QiQ`v+m|jPyOBHl>YuoocDf^5y~lQ zjFaa~2KitLm7W3_zzk3bW`bE@Ht=$K`CqR1>AY0DmgzOv+-dowJ^Wh6XYGA0 zE0oj1Ag5a^>?w}omlTOS5>A(&Vea&w)%Wmg86T(9#)Wd~)EFntDOqEjG-qFA(wzO^ z05}K^fy3YkKzN?-wPw~R9ly-eQ*zCn-jvEtX&sbn@2DBtPPJ-`1DkM6G^Sj8Phw2f zbdRTMJy1;@uYPF9F(vjHk*80c&;7f{kmpFcHO85pIi|#VCvvalCFY)1oz5}Qcb-U3 zxpTEWY1J4X>A^A4n9|cZ^LQR@1KyW0+%3<0W=37PN9(ol)N)CP+)Gk5#z}KFf(>93 zQ2FM)MJ4aGob8J_cdPvbq#~Z>qb?4r( zT#kw6OrG~VaR>Jwn0p#E##MP76Xm;HBXjRG_q2Hu$3)*jDRb}Ye`f^?Fn_|f)`c7sjVYa0d?uVzckZ2>&oL#A zt71LfyqWtC%sq`7<7roOOf;sAyL$tUJc z?`gL;@j4>$Ka#|2!x`t7|66N}k9XOdcpX7w%G^8u((;%=vvbY`=^PWynRGhfO71@( z_q1w^DSbF5`kw>R(}xS}d5p#*;|qD78^c3tKXtDsFAwLK=>L++d6o|exs zCH{|`$fqWEYkShFG2S?hW1=yor;+#aJeIb@_mC&cxl0}YGtb^zya+!lXwIakQ=YK< zkK%U})a1U+f5$k!utH>fVMS00R0heQ3aARIf$E?Js0nI;+Q34`YCnnr)ztRYI@c9{ z=aS#oN5`f2o-}tl;6ip!bevdODQTz`tXxdojmEV@jtVZ7_Gb{VI04$eAI^>rLmB9Fwm%(lJePG5P5ozk31r~mjSlvC6g^9q}T7N8|)1zLkP zpe<+z+Jg?DBj^M=123mT)|ZZ7uD#{IHFvu9F?LG-8&Mu3r~EIJ)4&?zZBKGcG^Whc z2|t-T&3T@kCiWTeI-**n0y4;6ccbxJ_Jz;diyC9@j5N>{*fqx78QpQa2j~gXK`+o7 z^Z|WAKVYF-nWs%(4v`8rSV2!cys~nS`(_NM9 zId`9vVCYgUhI`bUSwJ;)y!!CnV5h6=gmQ`+WA2OrAOj2pQ7{M$2AN<87z(mLHW&tm z0}IAHHOAZ-BR~!q2}Xg@UL znw`?IN3OlmuA!XfkxzB)<+R>0j)}&UPCxEu?sWTa>@=~@h_(0Tj8INdW6X_B2KitL zm7W3_zzk3bW`bE@Hn1=Ua-Y8NcaER7PdZH-XzujK6TwcO&J5+WP`RY$<@8_W z_9fmM@N+sn%iQUN>idcpVFThgYmYofsy8l_Q>Vt58!K63%#H1XxBcJ%I0z1b!{7+O zCPXYCoer((ivMlrf4|%NTz`74Q6bOV=_PgcCEo9${|PShwA&lvW4PX=459m2%U0Zli=H9;k96zl+(&;_dm^(d*{_`-df?jjW z+}rH*ujW@##<{Fkjj>UbW1=yo)18aMIW59=sivHMmCZ5HoJpq--@yH=n5apo@!Zp> zG0q*vG0}b`J*D4h?&;?oj)~rTk)Af(8Y1^JzALqOG{;0^N>7Vc^E}cVdR@nGr_8-8 zrUd6+Z!1LZ#cPb?3X(MQ&ApwLvwbn=PPHFBR8Ts8>2%Kh=1%v{WT*5VsdQ?s*LJE^ zW9%}AW1=yo(_@c@bL!5$gO_kjiG4;K_wL`s{RifrMvd|QOF1SQQ+k^9thuM@S8+@< zXVO#Cm$f}<)fm?<1oQVJde(9>v^U2X_OKC3y&*P z`sXt4+}nB)$3$}`oi5+N{RiZpR*f;ah-0ELrKh)^wdXM!kBl$mu{MT>)YiFU`tAyj ziRMh^-jgqCd(x^gUV9bCL}SX_%Y2#Vks~U7D~7vdOp_LKOf+ZGQ-im-{{T-~HO6vF zI3^lXdU_dSn!eZ4Wd+AXb0$3<+pg_NtH#*!29Alwl%5W}$Maa)4&OtbEaxtD{NHu^ z{>1BYnltHX?dNv?Q9MsUP43%VV;nuDLS*!mil7px43a?=P!&`I)j(F?6mdwp`4<| zIC@GQkOJz0dZ0dN02+cupfN}VO+Zu73|R0eohCoV@%uS_3)^R!r*Hk6oznXrGEbNN z9Li~6jj`L)921Qx^Yn*b%$nOE9YH718Cd96I-RnanwFm$OF!#!%wETEcN+va`{>@>Z8D5t0~j>=C1U4dO=9F^Z4 zw|jt|ARY7qy+I$)7xV)bwn;i|u!H0GbNVT^&oobme-i98IW?5iz#3!LPL9dXX~kyd zPX9au{zrw?~BcY5kK z!A?Ku8p>%FcFja9!Y#R%_B@ce*R(K=66**$p{< zzxP^OPd9fuuL(O%>@%Xy(FdOpRBO9BwkZORr-k^HMDudG`ZSJ-#*|L;W}7=5*@>Of zoXOWR)h`a^)TuG%OfFet%$d9|k~4WfH~_|f!yX(HjVYaec11X+YTr>!og?iS$T88JNvEq8bN^~T zr6$jNb!&|CqZ|{BDLwUFV(w|}5RQrFOnREKOxu%Ijq$#0j)}&Uo@U;_^GI{(bsfW< zYTveiYRc1;T+Th3GwG@E9U*crN&OvT&g6|?1K0#qzS$#|eQDugnS0a5bNqgvt!i?Y zxzi<+T~1$iK0hGV)1m*;cB)ll>@bC6^80&^qj!gM>dw6*XL3w5XVU3Ik8=Nkxu;QM z?07E6L}SX_`}#?9PyH|CnCS10WbXa>w6-U$zhhi?3CBcZ%G{f}iRZDby*uXY+m`c7 zD)-Kr@5()&?`!O^IYjQoYm7OQlQi?q*_8N|+Af)U^{(Xj{hWS`?K3^@4OtZIwEXMZ zPPJ-`1OCA=`8oaTjc`ugx%cah923o%%)Mtn;Qj-1Pou_I=@yQO#+13Yi zKfse#jdAb;925QRq+BDDj+%SA{7H_9{`OOP>h+VhC#@ReH&1a)G^X_Q*e^Vf(vACP z@?<%8sx|Vt{~k=d*Ftk9J<@rhNmrBPkoxY!xY;FxGk z=`_7+GDgz>9EKJDZTt0J_PgvfvCoLlKvk+^_aDXc6x4j2qQ*EZuMS87bwNE)A2a|B zK_k!@q=F`(DQE^PbS#|?-@)U8dzgo`xVDTV@jt}x|lni_%l0Aod1eEt=~74 zQ`8uGz4XiO%DR+p^Pw6|o;`}0Hw(*nq7~tm zJf1vOi({fOWuBfl-rQ+ns>|t{_WOs@X^R=5oTA2@@LRtYYo0dS<9RRl7){c{%OgiesWNrPCkJ zGIx43&E>R<{rOwz^pT=aPEljb9yb}}gDGGtmg z@%#MWhg;{GJ8j+9<<$8f4DuZ5(85qo3llrz8~_KwA#fNR0r(Zq8sl?0uK0bN&b!sz>98^EG_ekd zJgvM&+o@KKv0g66L}O-(5Uk6%&0AvhXx(y|yQ<8slAOa!h{fY5t=;kFIGfbu)&0)OuwB)s&}k zmvHVS_5*P)d+H{;|0tfLpe8->-!W#5-5ALly8&zh`vEQ@;&U!L;6-hxS~bR2^EoCOGgIW=!I#20b?4rmB^(pYnLI|`y_Ne9%sq`7 zW3y!(6OAc7?b&ATX~c~j6U~`C?p6Ij+mlv}an-FH6OAc7<$lcbSk}HBbM|e^`6ZQm zv+m^FqdAkFTI~*zd+{1$*4QM?d~-G>ex(&;Dr&7HPE|9Kc!LGvq} z9(MXy`>3Lf_wcl8jOq7qOf;r+di+p0r$uV}(Uj9;k8w;iXVU2t|Kt8uOw{Chs(akK z>2Z#U#+05${b26t=mw67{?DEC^vLfaaxY2|+t+IT!stDPPbtDOkW$G zw&`$S?(O}Vui;6n#&}{I z#}uJjtvEk<=~SLannSPa817WL?e?_sGmgpcoO5nd?mxhjR*f-#XX%)vr$)`pJuTVI zG132zm22eCmfD`QYK+(IP+pI#eD zr+;=gcY4T&$Ej!38V@K?;H=Q8IsVyCnY%C)ycK`5sku-qh?I(Esmr&%h;L}SXecTddR=_hU3 zDb1P8)7#GrK{;ulE3j*fgL1m#b`Q`Kq=R0dH|PWUf_}jAh`&)sj-R$qI^B7p zxzpUVV5fD8LOBhrG2YOfWAbyFbA`Fn{C>es8!Zau6g9>{IRiij7zm0h1mDav@wq0W)A@GFT{gj+IC zJ7#iBG^Whcudg$AdSFzr)B9G1a*7(`pqvpP2aE)xz-TZAj0NLBF31Dp!2~c7SRV0j z8O`zgIlXSRxzp~G*lFT;Enc7exGq$ls@)^eyqvDj=a^_r>GZ6-&7Dp>GuUbUM?*P9 zjWIf6GROy0z*H~|Oa}!Z24;XlFcZuIvw?+~ko$D|vp9Y~r(Zp0?)2IDE~h@{y;p1w z<+Ly%6gRw_Zdt%F(RrD4dfhALP8Tf;b{c&*lvAh17#*<;F)arxz+O1p2lj&l;2<~z z4uc~Azv5YAtg@Wr_j9@x+h=-?v|%+nrFBrQy_bEa?NqDAn0hD2L}N;)pMMd~soHl` zi@(=uaZEI4@*L@jL)?Fg{nYrSe0{3>UhDn$a7^?WO?lok>#(_}yC3A3=rg9$Q^D8T zp0sL=#p^jH8dG{&^exY$YZ^=4jNu-&URgjj<*DcySMH^Ge`ce{Z+8DtJV!xIdg2;m z^o)&>=ouTpCV+f9gPv2?wS@=edRnlF`!y2H$NZjbabRzJh#<8swm^UN2|s- z=mn0+&uO`G_S?4Zyui?@8dmIzZnasVqb+tWd)fk`J!7=3bNe z+`l`&rBmJG-nG3rCK^-bUglNio}TQ-G5LAAaFMnrt-oXJIDliKF=g(3eGShel=`+9 z9#Q+Y1yobHcVyU?iT7G*&ZMV@ZVZuoQB`Bi7^arZzoW)DE5{XoN9Vgt?f3T+-_PIb zR&%Fyi`gmtt(wfekIGlqJ?_~Pr6$*DDktQ6a`bhMiN=&pAE{D3-h(?Ys89EG3_r+Y z#M9e2CcnSCy7W};-#vy$?rGH+kG@wrCYgJW)V1d^>J9+6<(M(tCu7S0gk$pid(%d# z+Mcv(jOTvFG0~XPQ^%$}k0PuRKYGQ~<`Bn}*bhYQ>TrARKfse#jd9;s9233Xk)H19 zV(w|zw;U6_-jVsVwwtymts3K=?>QzKQ+m3)C(mOEG2#dEWI6Y%HFDLTyhhTT$u%-} zkllY2&r?v7`!?4Y`{Tc=^v|jYDuK!%8B_sPK{Zev)BrU>El?X+=vb~N7bks{IF{4) zNvEf0n>)=(`HIg^=zjx>_s^q9xs!m^TRUavW-p2;!M znDQLy?MKX=Zn@ay)R{ARJiTsXD5t0~_8T$+!}sleyE^t_*g%xHy#4yo6BP@N&9v0mtO$G~*R>r|HXrogUv7$|-7$ zeKRM6d@uz}1=GNEPyk|J1}FqG!7MNvSeOIpbnuNFzn{~j56qnozctut^2ec^79xy9 z^K$y_YL3az>EoZ7JAH9ou+s(mLOFG6jD0gp))@O{?t{1e-~c!X4uQkq2vCz?0qOLo ze{%eO=Sa`&H+TBwJ;6@bAJ%rNRbyO!KgZnlrifR{WX! zPqCjGzm%^}b>C~9^dF9i#+2)6gX89&c5UF8=x;0JF>>wi+Mcv(jP;)7m}pFSjQsdd zo=4X-mbw|kJ!;>!fNILq_E%lG=kxmH=F0X<<0zh^pe8+Wjj>PW#z>#c4PX=459m2% zU0Zli=H88Ol#X9I9a*)8aee=@t?aaz{zh56k8o#AyMMKhD*nGU#_P6oOf;r+nw?_L zxjQc~bg34@J!;O1oJW+?+)p^B#6Bb5!>g0Z{kzAIPIYUHAMN6pXiVv8&1vSI{y_hE zh*3dvCUft3r+*cXq6|-3HOBUPI3^lXdits*&m)HPZ81C|b8qKS&OMqlxklcV79#iJ zHO4;JM7?}-Z>;5PU(C5v?MHpS;rJ8p$A~(|Z(YruuKeER)aN@H#`O%5dr@cOovR{T z%k|`uA2_CBpYLQir&l!%&f3=@d^UOVs?@Db}?kK;9a>jwW(1aaYd7DC>7V6YYECiTa;(s@;$3-#vzhC#@Re zEh!umjVV3Vs&DS;tOgtt&6)J{Wg~4*S~bQMjX5S7Q+le}l;_dD<$W2$-O7^%R8wnY zR@<)=Yb4E?^z=r1`}d=`Qc#ngxW<^CQ6Z9^Q4v%El|eG70;+;)pgO1lYJyszHn7mK z+P)Z2O>N(CY+n?&<2dVybUGK+0@K`E(mmK|h4fHP?E?z7S+yb{W7?n2G5I+y>=S=_ ziM+7yDR~*gkJ9Oej9{ld2ig5ZaiyT<;}kW2UXb2jC#vm0m0Zlbql;QR)yVp9JclUJ+KS-w; za9*>!d=CQd)PA=v5oo9+IixKdE_af%vaj{ze<4j2hWfzeJ~~GT$307w-zcWw#<+$(Zh2 z%`wrKGEZCHZa-g*S5}MRLDjznR8!}b)2(2qyYIDsKZ+{_H6N#_G4>cR8RUa0U@Djf zrh@_y12aG&mB0NWo!_l?#0CE;iuVYVxMu|@1fV6XKu9nkK#%}&Bv)zW9%`YWR0=MfPL_`9~=M& z!69%M9096N3rMGfH*x&5ebVVG&zUhhNlos#RlLx0z$|bDH{!ni2hTB(?9T zrtWs8|hTH#+dvL$3$aFPs`pl_tXIW=V4nFG-opR?r{32 zn95vFlT=6Cif~izdl}m~CK^-b-b?S>eW)?ZYB4-0*V7+&2Itex9}LpL~|x{@5J}^@2mdZV@RjEHOA5Z zDV}@r8e@~lRlW&aPdit)`=|Z1 zjP+FO?-*aG&N2Bp?O)5DU3Xq!8cMYo?oo4AK^w- zH+IED|L4M~1(T=kP0T&5Zsv-K{-2IhkD~rlT4;OfRANVV=1=Z>+08j7`hPDn_qMd; zd2|$bUd3>)%)JwxIQJ6o5s7oog=u#GQ9NHkO?rywUR2c>yZ1}NFZ~@g#*tk)e%d~{ zo^I=A?sWgYV5fx#wVi6!7_a@3WAbx)%GcqXx^r*b_Z$<=nasTpe&GHCa!;$q_!q{6 zdVBxy$-MvtP-?zo^h+HE-KIL0p z_nkSDo+eaOnPi`v1bEV_F}_#f+k_`tmt{VUshnhdEc-Lr6_fLQAkx!S)$IONJc=@o zWm+}HhpKW+e#f%5HFzG?eEPK*9*}F~^!ncho}cV)X!jq*^A*%Q*GSx1KGL;!1yB)G z0+m5Br~;~jYM?r(0cwI;pf<43u{=iH(}?5ubK1O#xzi7u20P7b9?EH8jj?V^j>*sI zn%3q{4|WK4I;(Rir>HS@?Og|?fV!X_s1F)|hM*B>3{pW8&=fQSUQXwyar}Nxe?Q&a z=`!@6hkZ#w^DFZ-xmzfwfi=cwx^YZ2rd&^Z^fY&Rc1Ez%ucD!xrk)l_>(v~z04+f) z&>FM>Z9zNG9&`X5K_}1|csZ>)&=tSWF>=KqbEmgvvr{@=NvE~X2<0@e#@Ol%j)}&U zPVdh#ce;B#JM}x4nI8Y|-}bs2Rr|BkeAZsn7}I*Cfv&)=F{btEj@vyzPmm6Jf!?4G z=nMJ*3;oKqci{w%pSDjPPfuX`Og{_oV1BUEHq$~m?M?Heu8TZkdSV*KbMU647*8q?K27)LU1O|glFa!(*Ss)t>1H*yk5r5TlIDS8;E6y`_TK9rr zr)w?>ZU<2rMvb8iWD zdVFOlr>HTerB4R=U<#NDrh)080K~uyPzYv%SztEsavEF7@zeQ)TzmJfHg|gGZ7!$I zcYVp@X~R21IV~ig>e|a`_8lCP{N5^hk7>(Y=1x!C=W;5(uaWv+_+TifPK_}wy=09s zEqx!n?FR?IL2w8h21kI3-vTmE`#;3-`#F8#VRNUSJ{s(F(i7TFwQ7vdKgluqIqmmU zIHzjgQBA$qx_A@EL~|zJM=1Ya?mxwTYWz~3Bk8`^+U5n0iN=(<_uxzBp3>2O9=1?H zb0%|dqtm~NM^Wbc2zL1RExQ%rO745Pn>i*LQ=ZH2c$w#s`trJtIsIGCgUVBlw}W%< zrfqirQ9MsUO?u)QW0#&ABVBrK0Gq&mK+h@b+QNe}{wJ}0QQWWabDH+9xzhvNgPqR& zAVltI)EIYvz%ltbo&J$M=V~7+tHto3nlrWUsHU9Wwwq(3Ig`0pZy)#X9z#0Stugl6 z!!gmAGWRxNOw-pKvkq`fG-opR4j$6>q*Y^_bC_eIF=g%@`I6_+HsF03!`;f01yoa> z(vJn_-p23k{-bz~f|~TiHO4M@w?Z%9s4sPG0hxOrWBa1GU*YF;!vD;jR`@a4>5`wd zoodw>D;?*U{G49*t3BuLyiijhTMT!|+}m94SmGE#b0%|dV0l%A(tQ71)xN5aZEI(ti4t#oJU7@ zb#6xO{$utds`g6Tf0sCaPRCx7)7Fkw{}H@SiJEKeMU=UnmPV@7emjOm+nj)`(6Ii1~2 zo0FEuxVsz2L}N-$voko46p!1rTTIJxIVQ@P zkYl2pNlqn$wK-{djOPvFm}pGNY5x$;qZ=Q(k2uBbJJcN6yXgB(3-G@ZKsf8`K?gV>+>%zRwa-qIZKd3+C#&qP_96#-I z%Q}7jTyv&-&tsgzG?yO3j|G3DHQ&L!qdAHI^AQqJVun{{;{rtlbZ z1`dD*LYBvvGjK3&4}pe4`A`8g3>prNfR2aUn2xxXSb|KON5(R-gnoqqd-In$yI4yN{dH6_!H&jex$k1=~dAyfp7f+Elf(23A! zs2D1NN}(~(Nzhoxjp?#y9r4p|e~b63c6-5`>GqAxbiw9k)_1WArsFpUVpcW%AoPk1ZX033Un$|4pl&v z&?IOwGzD^FTDXnlr+Gxy=?hps)9vY@-OQBcK{@wcwl@&dN(WL`KPq!C$3$aFrVo8( z&h%eDFjLBztkcsD1Y!!0G5ffwP!&`SO@pRGGoYDJ6q*IqK(nDa&|Juk>4pOwe`K3o zN1{#(4w*Ck{=dvLw8gznFZd-8(;7df5B`s1qA?}Yj9<-}PH*y`O$)FPN|ZCn^pm6} zc+@(MiNtSN7aqqlw#S%#+_4^G_Hmzs+b(D~^aZpB+6#RNsUBmHoTr{?_MgOg1X?~> zr^8d47}x2$ssBlw@1gw4I<07J^`D02Q>y12o|ebhp$*4GV@jq=+gUkRHnCfc4zPJMc6bJF^* z)L2iBiN=(idi3Eu+6Y{)qPSOaib1L=PLl`v*WUYsto|c-jS@A~fwc|K`FQyGAm@}O^(Vyvur)o3R`aQ<0D>x=Erbj0QW9qEEQ>r;8 z%9*Uax2JRezO|?EdyM<0b4;{dmbG_I)SOdg4aY?L6|(kr%+cngtM|J`wVn$FEAHB=$LJ8zJY@Ed!dy_m$K-s#MQDr#1bAYKS6bjTgV+aS_G+>Y2{k z`*AqOL^+d8FCNML`_!J6$Cxv!ZcK8!_qP+QJVvm*&L;PtqIgio^ykraW0IWO;MeWc zKCK2PEsyc>5{@a6M{%xg;7OcEXH4?8TTEx1$}!QpCpmpt!TtMi(()LS%j?D@Io(ic z&S}VGj)~?g$?2)nv^i;cjQLYJCK^-L)B0-8qh#a!pE$+rJJtTl_j7(o9G5571F8Yv2?rk3xk z(>Z?HkCsf&Jj9xjCIe0Q+?ZC~!|~HRC7FJN zI%+jDrJTt+eQ`}7rtlcEvIjr|Au!wjQ`;Kb>o*z=Y43-wCM-Tl;%OnbdlY^#_@^T@2#})#jo6$cKwKB zqA?}YzkF=Y^!+`|G_lTz{ocu61!4-1F*AEAR0UN-)1c|l3}_}4g=RrD&}?W9G#7GX zdih?CpO#NDJ&ffu-JU-9jX%?j{ekMV#*gXB{T!1Q)879vXFBtL{!DlN5{RkoF=l2T z>oI0#e-3WDpxw|H&>msFC0H@dnD6me=}!#(NPCekN52S&>%_wJc2sW zP@7eiBqojB*YHp~nMe(4bqsCE9&Fx>N{K)69Jl?Z&Ml0^$Ifgtw z)%6&2T60WZwfDESRvshqCFKh_W)u&}m`+XOn5YiqeENSKv^i;cj1P9=m}pEnpJt?U z9yy}AwOsoG0UZ+G&=8QeYj6Ul_8GY748=zefy{5kF z7#>tPk3y=c*sqS{K-3*S2#+0>pN7S6ts2Yxmawco<#W~uXv^>U* zr*lj+rmVf9vpA1x9rkKbJRocD=JUDsC})yWi;Du(UPO6}8NJo6*YDvmHoAo4r{$AO z7hY=4bjG-!c)RCOd!LR^*4^jS@)$Et{mFNq^TCQ_WKe%Tb=Kbg(>Nx|nPhriHTUmR zds-f2Xd1^vV@gg7W>|TQ#3SPiS?^Iiq}EesOhcj^6V-vNy{BrlIca%}E9Y=bG^VV* z-e+(gIik9^qPR=ORC_MRL^+e34xG>Z`*70o7Di)qM9z_+1wSQ@4Jc=l(}HWQ{v&w35;eJQ zv&Yyit4XL^R#PYmN`{(2&7l@h3X}@9gjzwZp*Bzq9joPwLaM3#r^m2-5!{Z8zQfx( z7c`RI`*PeubEY3$=g)M?V(r>fOnp7ZZHqZ3FQ(&eGH1H@4u7UeO9L^5$JjNq9h3&O zhdMwVp-xa|C=8`TU7)T|H>f)l13Ss|+PgS@uj7b@_n0#+`HO=oy>Cu<7q2W2#MIYg zj4bDvypAI_J!sDK;3{THIg@odZ%rVk@EE&hWR(y;rMC!_?(}g?CnLhssGo_r#Ivx30Ag1sbyJQqXMbIcH0-XSz2#tn{ zp%SPR8UvjKjfLEpj{1z_r)`g9`rW9AEDZ#IzKfkVLD+ExA2evWH`$ zF=d^${>q$b=?@O3c1)7#)}I0~g~!+>V;ocljfW;c6QNU}Q=xLG0;+^2L6e~=P|PL% z@Xs8-7t{L=nKLc>pFh(#ehI`>?LsG-8`Ix@<(RyfUUk%*>6?uYB=&nLXOiiJq-ODD zjNnpB=&o0`DC5` zjO8=+822?hz{fHk`$*@cSpBQx7$u)$nHoGL(cG9mkm88R9#ht7msVEJ)p+%_C>~Tf zi$SWXV};3`{F%NV4#d><7`ya1)?@6_<8yG^1?`5ufc8Lpp)Vn|JTXWz{Ta&_!Tn0K zZIDbaO*dzn)0LSfJ_987d;iv5o2l047<>2Nm}pGNbY*5RrfS_$O)>p$z7u}hEjsHb(%21wN#y{5kF7#@_h_xgz( zzZcV!OU#*mQR>fh&RA`xS{`HiIF8AS>HXt_F?H77*X0}&~RiN=(*H)=ZP5kq>mC?1iu zH}7=++B}&pd{YnILDvq=JNv7 zUc_E_`>Gb#ay}V-KF8$6bjyXon5uD9Q#m{GM~;bdCTnm0mE6BtPpQfIRCl}g%M~0G z?Q_f8yJEgMr>q4WQ{*-G@6LGmT5V2R9^+fra7;9&ti6fXaULm$Zr4%VDQj=htz3JQ zGs&sxk^r?AQ66I$wfFmYjQf^w{IniPrsv#Y&h+FtKl{$7ub~JB+L^+d8mtM^M`_!J6$M`(Pj9__{XiUjzf zvfg+9oH*A)Ig^}L-fQ(A!RwT$$#t7O#*XPtLLJkaLP=0E)C_74wSZEfRH!A?3Th3t zfnw-bZp+WVkK?E1lT5#Rz?|t{miaU7`d}cYz8>Qz4{=OhOsB6fXZrV5{!II=3B(j0 zW5@J%P#V-8>Hu|wIzgSGFq95;fx1H7pze?x)0%&9{9a6VJz>uDBJ^L0bxDcxTOrQ1 z{9yO5<{hPak0Tm{d_Bgip5&NlOj)PDJ!Q@`f1^Ls^_v1Q#Q}TAa0ZkKWkEfmUQlnS z50nk%K)Fy~s2|iHiXmUJPCvl%MR3287t<-5&6&2?;?MNvR|3^(u3A)TwYVW;O4`aX zc`;r5nmN;r|L4!NXh$HX@EALW2S5WM%VX>q9*o;VprKGcQ~(WwhC?Hu=-VDil9+Y1Udma5gH8@LnTltGzK~e8Vk8G{q|dqe-nLQjd;(_x!;>J?ezmQ_4=Ob z6+Z=HT8dRO(cJ2E&jF5!#*}mK+(YI}*Z=BZYUfNc%|9B5DLlpw;c-wIG#;7&O@vN? zPKC;$3aApA1WksfKrv)O&QoXp#_@YG{R+!x>PJ1-;9z2VnwZuXUwsB#vAR8#xCg{==J_IoL3lIaU=t^Ol;jS@AF{a$#C z9l}$gDySNo22F=%Kr^8zGz+SMWlE? z+n;IszS>N+JjSJcIVLZr9gYje)VZEcDBzeVXOiig!?}OwTp;T}_gw3+;f|R4x_`ge z)5n{0y10;I+SJ4SyZwF~rOippW9&AHW1=x-?JYZj^QhKguNK7vaz1_cWUjr4oioX) zV!YLV1g}@3CONUk*uL}nQ2Wm7pbgM2h+b3Qbqo*6+FQMV<6n^B&b04BbEa=!&rBnk z?o3a)L7SWpbkx+5kJrv1Bd|IRUF z&als^71Qb695H!t+S|j*W5k&t+?HcTai8RLQ>G&(kJ@YAD*&g44SYFWk>!ZV9#hud zFBnrbXAa|ch>IxxmoW_<;E2hC(^~v0pK7Xq=NK|)aZVaBop>t86!Q43p_eMmIXyX> zV_M*`EgN*YHm7Ov;2jsWxGm?%9cOV&G^XTKc`oPC(OsRJQM-RNj%sTEWcfuL6Xi_K zk=<*#e;-a-F;&$%VtU9m_{7K6zbUCGt3^l~O*Qa%8j+M6f94k4U z^GA*;k;nKsoBl=gdCPqmQ#EG}?JkeGisC<6Pd%^am=@SMlbjw|%>6sZs9R5nNi?-i z$e0G*$T4~Cb3A#oIj8Zra!j=Smz=i$NuN^#4Njjeam3^???vz6Jc=|O^KaD7naZ7N zs-Et7z!8(jyw_&sq-tRg;zm{X7V?lYWHFCWfi`8>f|9I3~)OocDTf<^Fv*X}wqJU?j)}JEa^CB_O`DU}dzCKP#xc>DazEmy?VLw}=9qtpQ_Q|s&3pYm z_;2D^i*hD8{ry9${|H{EL``m=_`OOELQSv--4sfKlA&f$bEpNB0;NJNp;l09s0|cD z$8uZt$-g*$T0Y5i`oGPY&iI6x(r2C}(@%E>V(R-|rC&egm}pGN^vci8nLhQ6Khq)m z12M&Wm2dJ9aQvY{L(7wQYC39CO8L&vgC4>tT?;`{;q#)hoZc}-dx&%GZt{a@mo2>pJb ztkbGyR{v^SqU7`bvs^qS(Q0w4PE5@>CK^*RotI*jyL0=M=+to|YWE+r?^AQ{W9|Q! zn0qN_lId}sto|c-of0(CQ#yw)nO@sF5L4gxDwXwe#6;(S#eUBleax9Q%wwjMGs*PY z!GW0Ky-E#3g-{VR3W`7{Kqo?@p<<{6Duu>CCqZK&H>Qsa;rMBtmP~sVm@|EK7&E1H zS~4ATd?2Q!w9cz*w>o`cB*#Q!$~r9^WzO{0VrEJ?lT1^`1Y(N!Dm4m?gUX=s&;)2A zbP9ATR1Q@@mCz(;GBgEpW13vT@ze52rZ-^uO!s@w8_P_|vy@Etj|;@K(vNAhjANoP zCDYF)m^1Bknm^Nfssb^^dzBi6rb1OvH8c&H4$XjOLQ!ZIR0GY1=0I~HH>QWC){S2> zy=D`wxQ`$$AOgmn#%~b2X zN+Yk}m}pGN^!clTF;#QCYHA-Tbs@);nA-)@Td(K-o%>;OA4&JUO3z@-2*!`ggVXRu z=9~uI;E2iNeJxMkq|Hg|y-J_nfLqYm-Fd|SU%Hjp-Tp{0rq0@H`j{goT4zM&K))L#6( zN{w*@p;vFtg^k(E7q#zHbHlQi9r1fG?e?lU(~n;BXIiyQo2k}&l}fieV)9_R^{rq` zowe8QJx5F)Oz-%B`}eIqjrS@w{=gBF2dC>kH0N~1za24o)ZQ5QG6M|-t(y;AG6ti9!5`PW|eeF17OqTYL=YR~yzrDNU}f=Aq240p@z-p+lF_&u1; z{LY-|hCzoD=jCYsPwsOT3~d$PuBvrZsh;z4S{~!3{KJWD1dS>8Wg^2{VI(up{-z?1 zDRG=4wtLM_;QoDTPwV>-@<-K;N$#Jl$C#%3Co@NLOmu#lIK6uH+|yL9mgCSx^{>H6 z%VV5b$}!QH#3?bRT4B+gIkfIM_A-ip)l+NjyVZ6jy_{o8tOqtH>c6_J^#Y2?emQE) zZmQ7G;>QMOA$aTG_@x?4)>F?)j)~rrPn>AXIT*~8)3eh#Ci+Z)1XoJbBq#P5o5Evk8vjee zWir$ZY7Vu4QlM0*CDaOP4Yh${=vXo>I-BG7Vmcpgfhp6;=QGog_-qQTGfR&P#MIiL z*hz9*Pp4eOG0~Wk>D|g8Kr><5>MDPx6AP{WBe+tc=D`#mV-h^ZBrH!7JjNt=jQFMt zs1wu~3Pb5o7pN=L4eAcX(6MB?9?KWO{c+L0hJ74CIX{TyGiCbeHU3PyofwFzugCcL zbsUoy(~J@Xjb_4h=@NgY@1J7zAHkIpH4mon7?a>JCc$IGudhQrpoM;52ggKXN~UQST3I%! z(}y-NQ_7iSy6ZBl{|K&>sCh7j$Cw0jBsWm2fd5oL-h zT6a`a$ERDH{E|3_MLCmo+H|Y+e6`Lv*Bi-H*JIp}^h<&h?e|Gehh8=3w5x?9Ch?wf znol#|(B`D&G2WfZG0}T<<$U_VcFv=9%l$HnyVbfKgH%(TCU*WMaUOwkCOQ4-L+kkw zTq#kLocQ|?lHoBX!(&W_$7t0Xy{5kF7#@_hcSaXS{2ue^qaT|yeV~VfsmC_*9%D1q-tXfvZaJOf_hQ6yk3c#(JV)D`Lmb%$bz zQ8G;&ed=H!rtlb3;W4Jd zV@$O@#?;VY+#UiAh4P^SXc#mc8UY;-#ZUvXP7jUX_`R4G{9?{D>3DypW9(tj{ z99_gQc`;ph#GL7ovHnbpnp-C#^2Oj}*VOcUpb#JPcqd4ZV1V@!p| zmjA<>FOEoq3cDsjTqMXTNnHi^X|0*VGa_-eV*SZm7M$m~8jVWvI2*xzs zMt<`E$3!`k^J(t%0JUd@kEOMm%AZ{KzFW>Q(U@{RJub?5q`us)qjvu>`$5I&(bfL7 z_vJZO{}H@SiJIiZ9%Cvz##DHWsqh%BdZX9WcOAonGX4kGIN~R7No*rOKhK=$Kc8Tx zv=1VgHoI7xsg}n$Z!O0}V@js$FA2ufS$hLslACG>+frMjG13JVxr$bvp>I2@6oDx#QHuFXI&r#by^hnD5lQZ`+1)uCi{3= z*51&+bN|jUBvaI$mdCj5hq^Jz+H3KomB$E{*V*KlQ9LMP+H!znqTi*Hwby8!HYY8Q zarGgNiN=(*w{HXI(HWDx?H1GAMn~$bdy>eFv+;W4&_$JiDgV_SHP%B^aPBZjuvgJ}zou`N8tw(uC+x}IxU z(vjn*?-i9y-^TKp9`C)C&P+FX9GAEHI1p1`kMX%~921Qxnf~&rIn#@CnJMK=GJW!! zKuqB=wu}Fz;j%r{0qO{Kf;vNCC>`nob%nY?-Juv(7PZbrA=T7&d2WA>pXMIPbj5yi zrtc16rWC)d({?`xV(RNL_RHs(XiUlU+=J#!cb&jYDQA*tX2Ztu97k}eM9rg4;W4&@ z$Jh=YV>@_^?cg!CgU8qo9%DOrjP2ktwu8sm4jyAWc#Q4fF}8!p=+3m|xVrI6rW0B; zHm=j#XE9T%8OijW46A>&Em5lHI6}?6z8+(Xxf~OXDVdJzW#!zt{i3`(ucP=!&b|LW zmzgHk8F8LFy?-F4@EFtJF{Z&|OtU@4G}mQOO>isdt%dowTgXIe8T5K~`|@v&Nt$&2ZCL(G}hEbwRgP$Upjc#LWA z7}MY}rom%OLv5$QV@!j`mPa=VJsENX$CUUjZE?&|dy+ZR@9*$uI-oKTQ+SMN z@EFtJF{Z&|OoPXm29Gff9%C9j#x!`0Y48}+aNZ;h9%C9j#x!`0?o9u3C&y2}RW9rF z6D*%;op!j_!PH|PY4X%SOe-yV)}I-UK+oY`@Op7S|8ZK zF)iq6*M{(;KEBhOQ>V{4Cd!%QblQX3oU}g2n7WH&qA?|>@egqx9cip{Gm3lUzU-F$ zTzix=$*Iv}0cx+I`mWRt@EAM5W9$Hru>B`O=6Xi^Ddj3OgPFf!0!(BKg8dGxG{W0eep?kI{9+9R(=9^(~1 zIbx#P5ViN*+F(qbF`fL2BPRPChGcrvbKJjky^%T7^%%2{){RMWI`c(yPNUI(C73CB z&5;Z3{#86m_0*o0$Jn(|XmbSpDAAa*_NH&)JmP7dEs96vy7z7K(B?!;v>u4#y?)!c ze-#ro7fxCpV}3hFOmr?p92?Ag*PK(dqa!Bz{ZuhW#y-%lCoPZh=CC6sk8Rnuk2sH% zL$~WF?v!(6b!KSu0^F}ebA+s?`*&IWNAMgaYLXLsjA3|;VT`4|K{E`GF$|9}439Ak zk5PT%Eeww_439Akk1-67F$|9}9Ezc1wR}-XH8qDd$a2K*!SsaP=1e#AVW#BW$T{-R zmw}l2dW^Zb921QxYwzrD%$e>P>d&;-!9YymF)9}^jJYR_vnXL~1;g+d!|)ix@EF7K zzjR!7fx1H7pzcr%93|7Y3pjpS=j43a`oHE(n~r3rG`C5nrN0JZ>gzFXD0IZ+QKyG~ zGiQ4CSbwIgnyE}%H5!TEvMxO86dq$39%C3DV;CM|IMfsB1@(sdK-o|ZlneER`a%7n z7`l~ApDlC5?@_0RQ<@r|KRfeOf2MzJWA(4GjnwiOvnDxW@?bigzGSJjW4}$9v!!_cCYt#|!7 zQ+SMFc#L6qjA3|;VQhoL@EF7J7{l-w!|)ix@EF7J7{l-w!|)ix@EF~h_PoduzX#Jf zdFD*3FZE}7|Ik28OYM@0U)ADLWiJ~4&)P>Q`-3AU52m*aGiTc5I)A1m#etZ@V+_M% z48vm#!($A?V+_M%48vm#!($A?V+_M%4C9y}439Akk1-67(Vgkg>mBiXFukF^lS;W4JeV@$_7n+}gLJyZkDhUP$Xp%}8DMv6kJscl2XGLGNtJ>|1zm^1z7qs)}P zi%ae!H9Ip9(;92(txGqi9acMHqVL`l=LRO9W6t#T^~{uVCXZ#BUlxd|?J=eck1-t{ zV>&#Kba;&E@EFtKF{Z;~Oozvq9#23Fmy&7qa~wZ?kG96qMv6kJ zspTu)!|~H^wMwSftuSZ$_ph00;+R%2{q}F#Otn15%lC6kG^VV*XV(N{>a4wSKXXi! zGg*5#ujBrGYfr;tJb*DHV5USdNlru7n{ztnup_4a?(eNx{j4@8Esrt%H;yUs8||X@ zs$bwdB6QCd#UtvOF-SGFZoik@VDkdpR-&9qPVN6`^&i1=l&HDZUfg3;)4yK5QD5ph z2C0#vkZNlAu4&f5m+59KpXqVr`)wK|&NVOStf-!a0 z-k2U7lNZy)pK<@bwWr}R9>$mvFjJzKWbKXk+?-P+hhw5Tko%kqzSicX^ z>s@jh@h#^Op?kI{9#PMXL8_^B`>6u1J<6G^y#t4={v&ve5;fP_iztt=D{Ale@fg1y z&haPCg$hrk-(hp67q)2VTYHahOVag?wLHc@v~5^tJ(WzKekUoOW@lYc-ksM`{G;eN zYp*2CF;UJW)9XLt{+(k;rn(;EHjEj;awySyBx|q5zpXr~=Qx`jGl~agOhd99F}>03 zrO*vWkILGs-L1_@%VRv;i(}ekk108g*volz#w2gM#k4k$W1^f%PCxy?{rhmz@)$P{ z=9m_|Zs$?dQ-cHMoVpF;m_qcORAN7J#(%XrX?cu`hjUCcrsVYM|2U75jq`uv6tnMC zbL5DUhKc$&>Hw;u2qd%$Dt0gtfi!uG2YwFQ(JGnlrt8mOs;HGXgO^W@o$B z&bi9HYO0Q|n8Pu7F@3J5In#m*{h3}iFc4FCj2ZF2Ok8F`J)vGuZ>SHH4dp<&P+zDY z)E|l=X0^^mA=Om;y)UjCzpT^K2bnYNb{RAE+CQC95QwSo=NKFPfn%aE<=i`Zm^stu z7BbVsIwQ`@{4zQaQ+SLS@E9}TF=p5vV+K6N40wzg@E9}TF=oJH%z($30go{Q9%BYP zMt7$D7uStnGCgmMInxnK985FZj}0$BB@k0zkFoj=M@;sZlIi^w=1d3P&rB2Rj9_|U zbs(nj7&GB9X2N64gvXePZEz+$#!PsOneZ4h;W1{yW6XrdmAyRm$x$NNW?`!g+y24Y%@MNKrfx%an+95Hz?Eu3x6bp2!gOb?zPh$%eA zOn8i$@E9}UF=oPJ%!J3736C)o9%Cjv#!PsOneZ4h;W1{yW6Xrd=+1P@;~YQDBa&&O zi_DoGddk6+_N&EyZ^5O3m{ul$;)Wa3>(+Bjw2vU`^yPWxOh>-NOetq_zxT>(12Kii zmQhhDVb({5say`_U;?th>7NFQF|YK&;9$>o`%PmHPjK42dCLT zn{#S}g1cJ60ULb4lta*<3J(&It%V&Dbap7WSO7EYL^XcPb zw3%vojF;TVG0~W^_STLK#?)DRxp#3)w0|b&)3YaW|IYPBGS%JgwY|p?Q(yPb@0Xuu z&gsJkIVO4!nB>&CMw^qC$N2gq921QxIW?cld8}`JkJ{^Y%zl!py@ii+?RmWiYRiQI zYA>QZ#$Kqs-^XLjeS+hs^+@i^oPCiw(~1d=d0)n3yLU&+=DPE#mdAKUWnsBY2$>HMwrH$CwR|F&pc7Hax~`c#PTb7_;FqX2WAt zzw(w1k1-o&TsAz$Y@EEgQkIN@NCzf=rbk!!GaYq$Af~<^@vcBj;W6gG zW6Xiam}7g4Iq(>B;4$XFW6Xiam;;Y72OeV%JjNV&j5+Wa-I@OV14sNGOuxO`oarT> z`!ikpU?8Tx9%GL^j+i`{Mpu|K{oz}Grg>`uF@?vN1CKEW9%BwX#vE*ebKo)Nz+=n_ zjfRS$5~vg!1Dynog<>x2^n?33e)hWEv;U@zzElm_DZn)Ly ziw8I+`aT$W9C`F9bEcPtnk4p-C}(nCcEhGXOyM!+!eh*Z$CwL`F&7?VEY^hv!EJi zHZ%vC3&oHOx$Rkz#_@YG-Gk*buG3EbOv4`rVp`+J^sRJ`$%|>LkIk7b?BmaL%a?(e z+8$%B@ECL9G3LVa$c4w43y(1u9%C*%#$0%ex$!i(F`YSr(JZzUD3BIZ^xB^|dG-RCS={c-7SLY0YGgiE<|A-iJDH|IRVw@u}{) z)|;ksO!WO~az1^%vz5n4d`bC2jv2*6GNu>Kw{JkBFWRQDFe6tf>voNoRj*B<3ea@scB>OX?lDN&O-bJFq{ci+h| z(U_7`)+Ej&LicP@Jfha^7^Ir2y$51kdz3TD>EmdC+KYdVQB5m)^=2)Jbs58zti6*~ za{Qa<3isb=}FeM>&(6rY{drdlBU^TATDn7^gARBy`jsvHq(V9+tKDA(k(K z`;};Jkn?Hhm^stV_cu)(8&dpoKAl>fqPx$jT;Ug4N%Ov&lp>p73knB;A@m}YI~m?&qG(}TBi|2~|wJjNd|W&{hT zL}N-$dAFH!!sqR|o;-fTWb*CWoU}Z~{P#E}FHZCB;yfaB&lbfaYTb)Ls;N10-)BuX zFTm}%Jig1l?}JwV5j;Td+VPH#1tN59z4c8_;Gpg81vvU=D}mkgU6T$k1-D(V;(%lJa~+G@EG&p zG3LQz%yVVBAIlfPN~A=~CzGxhF)3>pFrggd^jhRx-NTz#s1Y&BP3{>kNn%c*ZF)i=N zG0~Wk>CO+#nNH4fFs1kTi1!IE-5rQ2JjOhDjCq(%^Y9l64Z`JMXb3bE%7+S|VbE}B z1av$UbBTXaFOHwqY031iJ?2aosTItF4|Y4vVhx-o59#WB&CvQA6G=1enc9877Q5p(aX z%s@=xG3LQz%!9|62ahoi9%CLn#yoh8dGHwXLQ!ZIR0GY1=0J0y7}6lOJ#S$7BDg;; z+Y^v=nv!MCH1iAxQ;%brnm&P;)?jfH&5h~9XE|cB$CONW=a@5{aVaxRtTTe?vY~;P z+8*N|;V}+^$2bU{#~^r&gWxd^g2y-r9^)W*jDzAih~ZK)J&NUv;QqKM=b}zW<(o6z zcr`Ok9RG^B_sA%1rdl3jhif<{8dEZzd_pj$&bjB!TR5h~KA2$Iay<8+hWt{KbDOTm zc*(6C6OAcrZ!N|&-ItC1nPZ}y$@%oNQ?)s1d5p{Na`vJ8LoB9yP@AY|(duz;@ zUbB*!Zu0Q1HlMD|RLf)R^H)bq9`Bbsr+Y2;?^}Bs9^-eDI ze-)2Xz3=^x*ejWRrSd2Dxo-M~W1=zTcJK97oX2B(Jodk+-G9u!TdmtwKRRlUz7JAt z_wIW#KtUAXD282qiIaZbYGTr8eXkK^|dG-RO^fyM>WOt(sMW_%9)%`*Y)N8onyG{b83B# z@sG)CHzYixZkMV)49Wl{&I*B>*V~lCKf3o2Lj)~r@CpjIO zrp-yqV=P?8G0~W^p01j~d8|u^?;%bx`z}>ahyIqF@GcVdD(1+7v#tIkc%2e8xo)$^ zm=BLJAM1HOJjQ%@jQQ{w^Wib(!(+^c$CwX~F&`ddK0L;Jc#Qe*81r4vwY;>3cla|Ma91Fv@EFxMXXe9W z%nxNjJ)vGuZ>SHH4XIDQD7Z@zdv*#P;;mHReqB{J>1gzEMIKVN{ zn3CxQPnk2_eUzCd=61m}Yf~Vm@E8l=F&4mMEP%&YfNgLAJjMcej0Nx*3*a#pz+)_c z8CL+0u>c-p0X#-`rcE0(tFwPD>$G&UIn(CNnk9}osAeS7lm8irX(?9YM04AoE^omx z(U_9y&TZyQ%R4sn-AB6pgFsB-F&4mMEP%&Y0FSW%9%BJK#sYYZ1@IUP;4v1!V=REj zSOAZ)03KrjJVtk>KV$hK$dD4vBa-RRf0;Aw-Nm2j=^qDTT8TwXG&iPwx^qlkOwZV9 z&h)cff2KY51!4-1aTq+tVelA-!DAc-k8v10#$oUnhrweU7K%c%pc-g4GzXds#gGZP zkN8tRj^B&v;Qi)IGxPkJ*8C8NX-xtsZn!aBJ&0rSV!H1~bEY*#{!AY_5{RkoF%ABkxb*m=f!Z*q(Oi!2PS3 zsLA6~U61kl$s7}X$CKpr3dS_umwlp&W1{a@lbn7CYje`_7*|f`m}pGNX>V7~BjwQT zI*L0Lrx>J~I*%~(EUrDunLOrPo@4bN!E2PLNlyGZ#^LZ7hr?qW4v%p->TNi^q~7Zo z9+mTH?KvDj`7n~{Q+>^u-g*Hu_3{|E571_+)iXzG zd5rhn;E0Ld&t#u#r7`bQD=eBbht@sEUPke+ti7|AIBHLDqW;gaHhb~9i#WP;t-ZL% zI2=BQUcEWGbKRH8yo=+fxrb_xmM^oNm2>B^sea}1MRA{szZOzWt*1lKe9` zSp7%vdL?R-6MKw>@E8j*Rv|pbLU@dY@E8l>F&4sOEQH5c2#>K49%CUq#zJ_Eh42^) zUH4B;SyeZFIY*w7ZO-)S$C&9R`W|Gl-MhM9Ag1=-oRy_oT*>X;6;E(XG^VV*D+ZV| z&3}QJCe|7IxSZ-B|M);m;V~A%V=TmcS_qG^5FTS8JjOzJjD_$R3*j*q!ecCi$5;rD zu@D|(Av{KRroCU}`04%Tl4k#Aw0%Hc#MVc7z^Ps7Q$mx-_TeHkFgLQV<9}o zLU@esOdIUr_`R4mC^u(1@?ZW;M@|mJ)YoII{g`9&Vp>~e&b0Ikf2O51ftbQ$EP}^a z1dmaD>P>l!MerDl;4v1#V=RKlsGO=IoCz($5o8heW{co47P-#7zhe0!=p!!iSsJRN zU$K0q+tUtT`!nruMj)oX9%K7&IVLZr?awx6y8Vzp)9sfAVhWG32vt`U{~LwN2y_B; zA~YH*hDxAPXbf}`G!}}1o!s`^@+-$r+XgxJ-g3D))9V_vNE~y}woM*$Tz7RKrlklY z(cHGDiyO5_tfw@loO>5vW6tz1Em|b@ktknRB z7QtgIg2z|{kFf|IV-e1q6v1OGg2z|{kI|iJla?GmEuUoC-Hv1OVw(MDbEZ4H`7_=5Kp>{@7>nRB7QtgIg2z|{kFf|IV-Y;YB6y5Np(r#9 zs)1%hbD+6U3^|Z>x<8ZS_hPy~X3n%zAAhEuRs>>N9~c#K8x7>nRB7QtgIg2z}CPlFrN@L-PLi)r`?bEfMHm}z1k zOdQLsU#HDf%VQio!Vwegmx}Y}gP#t@RLuvfsq;PGl{jLe^Auvg_q#3Jf135u_@#9( zZZ@>;)IHa_q_l2Kaz0)1vN@+`PUe_sA4F~=pLtE2la|N$+<1YJn_wQSK8Xn_^7jR6pp32($aKAaHPPH7Ixxm$i4p05UrdpFfWv2uD*jA!C|y1IOgWbV^ezsk%(n zII5}nwAGy)6Xi@YZPk|hca9;M>TdTMFLlI3=R(CC**MM0Vbs(UMnyJYR%{V3O7Vh$GDy}Nr^{YUV6 zC2BHf>@h~-<=6;M{Qv!~)UQ`@{PH)zX}7CtG_Vnjd=X!d^-yAWC-vFnW&gjGa`_!J+=NLPza>QhhDd)%z*;XDS z@yPf>u18TkBx`TvV~&{m*uS+Zjtxfk)8?e*F%Ejd5tBWp@1o!X5Ny}sW_C=0~<`c>3+d^|r!(OW!lbj=mm1=X+@)&P=gJYsOLUOw4WX@w< zI(!dtirIImZQ0BnDT(uElry<4n^|u4AHnOCsL6GkJ;q{qjKx^bi{UXA!(%Ll$5;%H zu^1j>F+9d%c#OsH7>nUC7QE=vx_A^uZK19hh=bS)HeLcn}zvq}} zOv&`g^URrE^b0dhtTTe?MSl#$6dq$SJjP;pjK%O6i{UXA!(%Ll$5;%Hu^1ks`lYvG zc#OsH7>nUC7QAnPyyW&h)Fssk|>Eesh7g`(Irfh^eo~*gGk8a|Dx} zk{8q7*PAo_ciYs&+)Fu=bML>G1Y!!0u>>At2|Pyi?U~ABEP=;Z0*|o-9%BhSM)ire z5_pUy@EA+rF_yq%EODKC7q)Z6Px~d-I+r*vv+&R6OrPlJU`qQ{V!!8!y8h$zS0x^ZhSOSkxxrik=>Mz0iSOSl+1Ri4vJjN1K zWJ&z56qjS5lc2Fs4E*J>@ziXNpT2Wh*6Gxh=1gDi$4u$B66D-75#ftbQ$EP=;Z0*|o-9%BhS#u9jpCGZ$a;4zlK zV=RHkSOSl+1Ri4vJjN1ujP6Ve3psvTKFPH3Idi7?uEWIKOZk;dC%+hoX=MT^Zn!ah zxP)V(F(uQ7x0o}%c)UN;i?;=03XicA9%Csy#!`5UrSKR_;W3uNV=RToSQ?5#v!EJi zHZ%vC3&mX4>8=wvelMn7-!Nx7rre+Dn70Elt?^@8I*DWQVp{sHInyIif2K!14aC&; z7)yo6SPGA^6rM*ZJjPOZjHU1xOW`q=!eg|iD>tS`YB+w{Hpn_X@|ii)m8UaP+V7Wj zy7CKcrdl53n`b&=^4Olfxi=V7H6N&^j!&dRIwSUFuj$&zQXR`Lb8xo-Q;vVCeP(#gn zb1rGjUcRV(r&^Eh+`#eE@=2z54mD@`@^k)7UmmW_RO@q$n>KPxUQ9QQ493)1dzZb= zF;UJW)5}ic{(Wmt5rkwlt;iTm;p16}^qIq9(I&r!=r@Ozb8FF zk7ABocoyfeE*-vyIK}L{)b_vprKq*XNJsOh0PcD#4U;CYgS8 zT_C3L7|TNKpfspG)B)-Ub%HuWVJIEy0(FJDLEWJkxJjnhCb#lsdhH@}rjMnxN^JKM z?-v)x@Q>XTh^eo~xT+<`L}N;(t8Ou8dS=+4>6!NgVhWG33?5?{JjOD3jAif`%iuAV z!DB3g$5;lBu?!w#89c@^c#LK67|Y->x-%Wyo8zZ-PS)wzN6eZ2xr~{T-zV$z&#wn! z>gzG4oysxMn38GQTjor6o#xMU*ZYB(!ecCh$5;lBQT@`J@)*nDF_yt&EQ7~b29HsF zJ7XC<#xi(}W$+lw;4!*0J!J;RPwTW~ddkP~8`wg~wP1k5PT%tqdMx8McLG@EFVB zF_yt&EQ80WoT@UM-7dq?Nf|uGGI)&cOc!6k@zZzwNT!STn=}3756qOlGfmd%CkF%7 zX(_NLS}ktL?Md@1IVKuY)@k#@=1l*+keO1>B-4L4P)lX)r$pkntP78QBzTPDvBxtW zl*Y&ZCg5@+bP9ATR1Q@@mCz(;GBgE>p<5aM#OpYIdY_nNI<9(#pZg4QA?@ShT z`dU+~f6Y3rbfhSLUQ@=j>Sm59@twn>PFFRva<0a#uSM~odS(n#P3>3K-0fgW-!mtU zBWv1Q{YUT`C2Af_;W3Vf$2cAy<9K+Cn zg<|Mf#=jHG7s35XUQBml`AqkFd;W!)(q~j;o%T!*#I!~&DmAw{9lV@lqA_Ki4(@8s zbl)m}ru(u3F||F$@xo&q507y?Jdg447{|k791o9iJUqtn@EFI(QxLr~fc ze0np-L}SYN^yyLNoc6xLF;UKB?d=_{%}L8+%zd3>qA_Ld<(|ZOv*)Fh{P?ZrLD3899X z^+tWE>lma)ibATXnXk=M%VYcqV@4345{)V6 z(~mHwYRTdT|w&s{sqGyx zdDPz2JG41zd5kA_a>V3OdnYgDJPI_&{2Rr8>X|V}HMMRx>DhYo0^C-joXOg2@{rYk z1kX{TCOO4xFQPogiKxBb$77t-hvS#OOGWR^pR~f9>0=)=Q~E78x!rrLD(QFi7|-3! zG0~W^_RgJ^6i>6WE-3HL>nQ$Fbey#}Y9Gf$Ig?CBoyGk-$B;}>ds-gj^!*$Ytw*x< zrk`WwF@oiFHaTV#56YNs{effh+CRDV0&PxO9%GxI95H#+UYmla|Lgs$rYNyzj+n)B23d*p_*5diOeQPFf!0Rm~kSd2qVw2F{~o zT`ApBXT-cGB(tIN4$P4cZ#MIYg z>>lQrXiParcE87*>3hBWnZEaMAg1sb%i%GWV}Gd}9%DH?#&UR!zXoFJ>oGpkpJSpiCDTV% zn=_p^l$j>h8F5Z@-r7J+;W1XgW2}J3SOJf*0v=-pJjM!mj1}-0E8sC!z+u}r1w6(I*E;Qx&+*gpNv0j1GH1HH$e-!*=L0eI^%(n|z%h9-?f0TN(>-PWO!vGV zh$%eA3V4ha@E9v>kFf$CV+B0M3V4ha@EFyvyj8%AtANK?0gtf)9-}+cRpU8+FQ%)u znKOOkRA%b6J$>V?Kumo-#{Gzj9-`^$L!O#*|FA{?DB0)r*-aSac zGF||F$O5rh9!egw2=TQldu@W9*B|OGTc#M_s7%St;6T_us zx@>vf_+_0g>uS#Q#fO>cf}ZZ*hxB5GHd8H+@!6Fe6OAdEKHD=GQ?>4>rkKuql4DA& zGjhLoAouTFZ)Bb7o@<@|6vsq!gXA=SkU6J+JY6>?S$qG;*XE?_ z#qyb+!~66Hf2N;a5TN$df;w6)Zp&@?CkHqtFQ%Vd9E_UnRyFzUf>nY_-GQDd) z_pjDdYNp%0vIcE^Ih9>)&S_OMj)`(6Yj4$JZBAMq+)i|cw7#l147c{v+5f9`Z&##UVveMo$vJY@Myvk_UZ+G&uG{P} zPKC!f73;)Qc#KowF;0cYI29h_RCtV2;W18y$2b)p<5YNzQ{gdAg~vG6^<2ws6F7ca zKFRd9H_VwHo$Sx_=#D^4eLco0r*TYPOsBkW&a~wmf2J*W1!4-1u?ikz6}Ayo@EEJ$ zF;>B2tb)f_1&^@`9%B_e#wvJ>RqzRqzJjN<`jP6Xw{J{}FZNsePOMI{9n1kj_U%Jwt z=}U(LG4=Hr=UnZG$%E;f-^`hIx!Ip-muAi5(`^KoO4K~&UU-aE@EEJ$F;>|gV--Bc zDtL@l@EEJ$F;>B2tb)f_1&^@`9%B_eMt7!%uzV2=sI-9UNH9Hw7^~nhR>5Peg2$-7p|J`cV--BcDtL_UOvfze_`R5p z>1xh&?+Rub>gUdMZ&o0trOw3H+BsLbS5581OkKq>(U_9y)NFI6$35xK^tge6n8IVM zhR0Y9k5PT%tr{L@c#PHX7^~qiR>NadPE|FIIIH0?R>NbgcHN$SgyoAM7fKYr z+@5}fuMf$e;eoGR@5647f zN={AAH|I3?0LMf*lbi-$tj$TwW4!9W921QxIbAi6^XN!potshIBlmm8h0-=J!2L>; zGs$V(`~bDrPQCAN{Ye3I#R*P1i^4gFVQ zTqVk{Wcr)kzgkC?>e-jo@))}%b4)a*WZG>}Fs8LwF4a`+z1NOoqMS*l@BNwkS20m@ ztvwBoab6n7L}N-$^KLiiw6YV&L^+e3RxS-tdm0|&L+Kn7jVU=jbT8+Ta_Dv)#htSD zX7=%~y_qWl)Lz_UoEB=RS#QqejM>We={>+s2DC@=&1so?myYG!qcM}m z$V)e6$URFr#!HZUUyNhCWIV@D`zM)Rvc;TfrM7qVyjMM5i=QE`tnL1VI>uRN_3m&k zmrQ4E=#CLIbBx2z<(O#9B-3HP<@Qr@Ps=gx9?vn+IYM&Uy(Jh&t35J)kmuSw-cs{4 zdOSJ&LXN5GQ3R*M+q5}pImY)d=9s8Y$?5%B>!aE$eEjP-Dg^>B>!aE$eE zjP-Dg^>B>!aE$eEjPP+J+nV7;c+Hj0E9HX*`Htx{bxLaVuG1_p9HqI?JR=IZjzXm)`L7j?P z!AQtCed^9g{J#i~jUrD^^~{;h`h=Ob-XDMLopnVfrgjx5Uc@mSxSM05K5GTjfmfO{ zZQHX?^;#wuj+wlcX}cy9)6g;6!ZF%#j5eHy4aaE1G1_p9HXNf3#~2Jl9Mi$w`&5s; zw0|;B2QM&ZdfwiB_24f}CSNlb58oQjr*nB3(MCWChd(BUqbGr4cNK6T9nOiq#bJF^IjHiu`#FVg>Ic+14 zBaLC)a~>Pj+^(RiqB!k5FOqxVeM!k_=N~fUUb|y#falQ5w_s0##|oZg?ln$`#GkO1 zY20ScbmvrNN_ilUr#t_u%~Z=V`VPlLeahph|MzT6qq%o{iDOF2z2o2K_EU3D!!hng zpBDJ3N`1=Q+l@X=uMIz%!!gmANlqVqsLe^sG1mAT6ZI)M)$HPNRG}x8Jl>GG_vH1F z+)G$flB|dRyNlZW99E^E1FCxuWU*^O1RX?hz*$spS~m3ppn0Q|6xAX3puS6FDXtGnsooeOa56mSbExnPZ|pW$rC~g~u@< z5dWCRW;G9@oW{=Jm}tx-r?LOw_ER`%ImQu1jwxwyx(KLHiayuPPOpPwW^Q;TRjyS0fx_ zBOGHR9AhIKV+N^Mb}b`kcoXlIg@B zMVQi>R@^_ExKGf&h0m)>C4ng%V*!q_fcOh=j0HHx0vuxjj3d5f@h32Sua`N~J#J2Cx<~I!Oj8}>ke@_iN?A*}( z;TQ{Wj0HHx0vuxjji*y&$Mz!B>n`Zl|klA zH{PAjbmQPmOj8}>3-?B1N?`iJVdhM)U6s!C+7mJ{g<~whF&5w$3!!5yz%dr!7z=QW z1vth69Ag2Fu>i+dfMYDcF~&1p^Jpaggloe!Cz&(-&###&twH4Z^grLu#5DDHrJlcr zW1>FgvG@E_%$fFlHo}z7*W%dQb7Ur_aEuNdqXWn2z%e>FUORA%4jiKc$LPQ@I&h2* z9HRrr=)f^LaEwmuv3JELj-S?LaxJ@Jv^mo)ze{JjWo#yOz2eEN3DoatR%`mUXe z9Z;3VOkQ)|H7^s>&@no~F*v3$ig)b4L|*Y#*{e$3$Z$nGU&$ z+wT>8wEa6itn8|g|!^^cfY5g4I_Cq)(>Qi#sUg2?! z3}c6vd2Er_oU4xH+@mp*oL1eFA@^#OW1J4hI3130IvnG4Z$!l zQDZiIILAa|CYcU@g4R&!L3LuKEV|;XH$C!u{^*Q_aU>vRXmia;Una5i)rf1N89k#1ly+;t{9<@I| zY@cH4gp-zIeClJ4iTb46qdu=bN$rpsr`g>OsK!*C2Vw3}`$JFX_ElU|7l;TT;wMi-9Jg=2K#7~R-BU5Wj((4ndnzsys&Y|iwxGb2pJ-*u<)t<25D zG}SS_Ix-Sd*rz=9-ZozatbdNIw10PSzFIn-nbMfawaoc91|P8Sq$-sJrf`fd9HR@z z=!TBbg=2K#7+p9<7mm?|V|3vdT{uP;j?sl?6qCO?lZ`>S=vPquyZ;UV%j*-UfPj>|ETX<5HN&-_jMi-9Jg=2K# z7+rkEg=2K#7+p9<7mm?|V|3vdT{uP;j?sl%4v9+{^{-EGcvxtq>(;(eKz zj-c^T&mO8=_r2K6F(onm@yehT6Q*}wna;Ffb<7Pha( zSJjj?l4`12JiL-jz3+2O)ThkT6Q2y4Q2ljQ@_19VUqMwxT`L^(!*r(aJR5w!g(p?1 zBrt_zY=UEKf@5rgV{C$BY=UEKf@5rgV{FRhQR`7{)CSZks8dlZXjsPo0`||sc2$#@ z-uRq3(@%bs&h+u$X3A4r?JAWxrn_(An39-2u_b81gz2NVr!$@XO3=QACsnB=Fby4J zlW>epaEwiG9!+qJO>m4&aEwiGj7@NiP3=uq@FoQeyM-`Q)-PdqTG-h&*^!!J`_pA1!eMqLdj`7&1I3`+`$#dk6 zPs};pvOW?M{cav{zvsd|_RzoPtO??$M>T$O?ycJxi7D(;9#4PJH5jqz7*dn_j`uz6SQyPbE;C2oZ9arAg0Z^nQ)9V;TUJaG0sH3g%?ot!Gz}u zw#)c)TRX-tnYLp8Os_eQeJR3}*2;qEj$YbKwH)Kwe~!dNYfW*@*}ZQzrfTk}qL_Z^ z%}7i%X9Uv?U+4Ct^F}gl&pi#tcrE(0(7&qk_u}s6tOFdAySDmNS zr#zkxJS`j3Xzumdn`25k@3oEQ_EU3D!!cgJFULfE%46hNW6e3;(T8KAF_WC^?`d<= za*Uh%aZJ>w`!0VljzO!7=6Nyd;j1mmCs|qlNvA7TISWZ_1d) zzr``pn91DR?=WpnT8{C_cQ_{MQ|8`PNANgCW0J4qV!G^Oj)}%haysE8Za;;S*3U7% z@kz&+WIo;fO><6DKI52L#sBA~bLHSuv^i-x#@aplSI=eCr{vV-R31mkCi*pTs)QTW z`sA}7{j0~w>O2tZ$fwQ<+PCmIRjJ6i&5qH7WArf3Jvc@Wj?sf-^xzmhI7SbS(Su|3 z;21qPMh}kBgJbk!*C%azbNsn)gukCwCU0)Ojlo)i76bT2gm5aF?w)}9vq_w$LPT^dT@*$9HR%v=)p01aEu-tqX)+r z&-CZt;`o!8&hX5co;fU?Y1b<)h>rdmDl9*o8V$Srcv(uRlzb+F~I7SbS(Su|3 zLdWRAF?w)}9vq_w$LPT^dT@*$9HR%v=)p0@Gd=XX9Dfqi?btul`!X+_%S`FqBiB7Q z-jIoDs$)E7JjX{9hf@3VfF_z#MOK^-O zIK~njV+re$5*%X*jYcny0V=Tcjmf#pmaEv85#u6N3368M@$5_hc zQR`7{)CSZks8dlZ7zvrDlNWIOw11N6!1d-#7cWX@I_}v_OzkRAyoh7Ec`?V7#B|YS zbEeCer8AwlH51d&F_wg5EWt6B;5>sF3GiD~X- zbEfB@eU(_M()h~r>E2=cz3@G%cJhA#v>c;*JI6$Q$~+zNN;ak*_DdCYeR}8v921S1 z%+u{}a{DSKD)RbN*D-EFpB5TXmHL#qcf&u-IraE}W1=yWoHiZXMfbj(*3U7H-^DRe zpOVvlL%Sg2&wJYT4dNk>uhrbHpsJ!c_3v`v+PQeGDvg=s^rzuL`xd@ORVtDbJI2{? zjI-ewXTvehM!wCak97K6!Mif|dUrc8mFZS17;{UsF841VwjZ6RC-yn8ntQEuk5H_8 zJ{YIXRLe15*Dn%Ng1Z`dem17jn8qCvi7C7{BAI?|61Sh4dm4`Mv2Sop^6!PyT4RoF z&gs1)BQf3m`JeTs_8*?6%}L8K_8h`7wT6Al+}rH%IEv}_xi4w%Rl=<*_g+4UbC1SM za{9@vpnVIUQQm-k&jmb=2tBdn@s2$2)l7)wUO2ZUr>B1$v~S__s#1x~ zJxe*pE0B9%jALxU{-McEnVxc!In$b62UX8|b03Ij`t&(nb=NXlj?wLV5XThuDVYwb z>x!uL*D}%E8#X8sQv%c77jye5xu^BJQh$R!E$pwVNx663#9$oN_e6`FM|r%d=4mvh z_Xl%K*3aWP{W7o3Ny{;IKb&KtJ|(B;8+aU}G0E3?Y>+WMa{|XiVfA)PvMxTPsyonHjkrZ6aAVvRl<#G zee&Ir2UV{PXv`$19`l3tEqqQ@DspbKV{CzAY{8spfn#ieV{CzAY=L8Jfn#ieV{CzA zY=L8Jfn#ieV{CzAY>8c;ti}FW=ulPKKgo0+_RsXZH>$`?>Do(P?|tRoOiWW9sWjMw%9Ag=du?)vphGQ(lF_z&N z%W#ZkIL2};(+_=)KZ)t1kC`*=epNct=fn2ZaYxlo?zN~qO?8ZapT{vJG5y&ZbEc~n zq%$q8&%_jtu?)vphGQ(lF_z&N%W#ZkIL0y@V;PRI498f8V=Tilmf;x7aE$RxPg%(E zCo$cH{WHze+kO~fdQbd0a`JPT@-)>k&R@(iSz(_tPir@uGaa@fo$2mBW?~A*ScYRP z!!eda$5@7AEWSluS?l$eiif>zFBxnPl1>D;`y>u&URp zB&?C(7=1WKACA$7WAxz|eK^x+tNI7T17z=vb>;TU~5#(1W$Y~=W9PRljY zimu&^kG=mw`*ny#RXPqzrYpnt)wxvFl=G=-s#-j}l1%$;;+UvU$@JwtgE3eAbyo6t zQ?*|~RYlF2wr$Lm#!NC@x?d)yaEv}2qYuaE!!i1Bj6NKr569@kG5VOZJ{+T;vr!vR zr=U(ntze&I{MY=E<4-!Dey5i?)BFA$VVdBLr}quoSL3T{3R4^3QY~>zfA%WJl(a@_ z>~GHWqPLhSjhSTH@32fvL&xX~$LPZ``fwgT9HS4%=)*DkaEv}2qu)LT6+B9&hyIJ> zr~Q+8y8Q@qrb|9eXFC35ZKhg|aZ}BJ>h)O?(;J3oW2)wkDk@Kx?=_%$?4dD}Oec=u z_SHP4B9Fbgj`7I7IVQU1mYn`M+MJVx_Uo{ds?xm|c|6UXt<6cxF;3r?W1>Fg@$|^C zJdQMmanE^dl*iM-0|u;}i|wk?m`P55n-H{b;d@l2A~~^R^x+tNI7T0iF~~RiOlQv( zyeV_?W)o|l1vv~WX|*thcMHmd#y_*X*1PwjPD&9i7DY;>%;Zgm_~E&{^KGs zCERPhw8-tJ=AMRQyn86eL{30*ns%8vr{jimOyq`S?!7xlo0FDf9CJFyM19KK>*@12 zVu~h~Jl>JH*L4i%9*vpIy>-`T$i4QTW4tO?le;Q$Ka$?4g!`8dzd;?tZ^r&v_`1E4 zTN2kC7c4Mm`q(&TN{&@BowG=rsg`5>LmkINeM+WF{yQ7fXzne{b4*E0M=$60Q*%$l zG45I9n5a*gd%wBIoYUeG$3$Z$IgNWro0FDf{B$ VzlzUw#p^Tn3L5K%*U_T-_<#4V+JOK7 literal 0 HcmV?d00001 diff --git a/wireshark_dumps/g810-spectrum/set_fx_color_00ff00.pcapng b/wireshark_dumps/g810-spectrum/set_fx_color_00ff00.pcapng new file mode 100644 index 0000000000000000000000000000000000000000..2a171a3490e7c14ea9e94804d87b455b4a20a38d GIT binary patch literal 293528 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.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 LZiMw!jq(2glUeq) literal 0 HcmV?d00001 diff --git a/wireshark_dumps/g810-spectrum/set_fx_color_cycle_slow_00ff00.pcapng b/wireshark_dumps/g810-spectrum/set_fx_color_cycle_slow_00ff00.pcapng new file mode 100644 index 0000000000000000000000000000000000000000..5433a4533c00dc7e8664fa96d84bc7c9b49d48fd GIT binary patch literal 180492 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 Hs^k9wf>}Tg literal 0 HcmV?d00001 diff --git a/wireshark_dumps/g810-spectrum/set_fx_color_wave_horizontal_slow.pcapng b/wireshark_dumps/g810-spectrum/set_fx_color_wave_horizontal_slow.pcapng new file mode 100644 index 0000000000000000000000000000000000000000..43f9a3eba5b4c6f632caf304834b323563dadfcc GIT binary patch literal 180384 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≪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 literal 0 HcmV?d00001 From d89fc9f2d718d040dcfa5a059a01ac3574ff8cba Mon Sep 17 00:00:00 2001 From: MatMoul Date: Thu, 5 Jan 2017 01:40:13 +0100 Subject: [PATCH 026/187] Add pictures --- pictures/logitech_g810-2.jpg | Bin 43215 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 pictures/logitech_g810-2.jpg diff --git a/pictures/logitech_g810-2.jpg b/pictures/logitech_g810-2.jpg deleted file mode 100644 index 0cb5d34d997fe33daae321536dee1112d721b5e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43215 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 Date: Thu, 5 Jan 2017 01:42:14 +0100 Subject: [PATCH 027/187] Add pictures --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 417632e..e219ea3 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,10 @@ Linux LED controller for the Logitech G810 Orion Spectrum Keyboard -Other compatible keyboard :
+**Compatible keyboards :**
G410 Atlas Spectrum
-G610 Orion
+G610 Orion (Brown and Red)
+G810 Orion Spectrum
G910 Orion Spark
G910 Orion Spectrum From 7c61069c627193b5e6becb8c5082af7e5b51a5a8 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Thu, 5 Jan 2017 01:43:29 +0100 Subject: [PATCH 028/187] Add pictures --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e219ea3..1bee61c 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,10 @@ G810 Orion Spectrum
G910 Orion Spark
G910 Orion Spectrum -![jj](https://raw.githubusercontent.com/MatMoul/g810-led/master/pictures/logitech_g810-2.jpg) +![jj](https://raw.githubusercontent.com/MatMoul/g810-led/master/pictures/g410.png) +![jj](https://raw.githubusercontent.com/MatMoul/g810-led/master/pictures/g610.png) +![jj](https://raw.githubusercontent.com/MatMoul/g810-led/master/pictures/g810.jpg) +![jj](https://raw.githubusercontent.com/MatMoul/g810-led/master/pictures/g910.jpg) Install and use :
- look at the wiki : https://github.com/MatMoul/g810-led/wiki From 89ad400c62c54c1da4d78044f542da9187bc3bc9 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Thu, 5 Jan 2017 01:55:33 +0100 Subject: [PATCH 029/187] Add pictures --- README.md | 40 +++++++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 1bee61c..c3da05e 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,25 @@ -# g810-led +# g810-led
-Linux LED controller for the Logitech G810 Orion Spectrum Keyboard +Linux LED controller for Logitech Led Keyboards.
-**Compatible keyboards :**
-G410 Atlas Spectrum
-G610 Orion (Brown and Red)
-G810 Orion Spectrum
-G910 Orion Spark
-G910 Orion Spectrum +#Install and use :
+- look at the wiki : https://github.com/MatMoul/g810-led/wiki
-![jj](https://raw.githubusercontent.com/MatMoul/g810-led/master/pictures/g410.png) -![jj](https://raw.githubusercontent.com/MatMoul/g810-led/master/pictures/g610.png) -![jj](https://raw.githubusercontent.com/MatMoul/g810-led/master/pictures/g810.jpg) -![jj](https://raw.githubusercontent.com/MatMoul/g810-led/master/pictures/g910.jpg) +#Compatible keyboards :
-Install and use :
-- look at the wiki : https://github.com/MatMoul/g810-led/wiki +**G410 Atlas Spectrum :**
+![jj](https://raw.githubusercontent.com/MatMoul/g810-led/master/pictures/g410.png)
-Samples :
+**G610 Orion (Brown and Red) :**
+![jj](https://raw.githubusercontent.com/MatMoul/g810-led/master/pictures/g610.png)
+ +**G810 Orion Spectrum :**
+![jj](https://raw.githubusercontent.com/MatMoul/g810-led/master/pictures/g810.jpg)
+ +**G910 Orion (Spark and Spectrum) :**
+![jj](https://raw.githubusercontent.com/MatMoul/g810-led/master/pictures/g910.jpg)
+ +#Samples :
`g810-led -p /etc/g810/profile # Set a profile`
`g810-led -k logo ff0000 # Set color of a key`
`g810-led -a 00ff00 # Set color of all keys`
@@ -30,8 +32,7 @@ Samples :
`g810-led -fx-vwave 0a # Set vertical wave effect`
`g810-led -fx-cwave 0a # Set center wave effect`
- -Samples with no commit :
+#Samples with no commit :
`g810-led -an 000000 # Set color of all key with no action`
`g810-led -gn modifiers ff0000 # Set color of a group with no action`
`g810-led -kn w ff0000 # Set color of a key with no action`
@@ -39,3 +40,8 @@ Samples with no commit :
`g810-led -kn s ff0000 # Set color of a key with no action`
`g810-led -kn d ff0000 # Set color of a key with no action`
`g810-led -c # Commit all changes`
+ +#Samples for g610 :
+`g610-led -a 60 # Set intensity of all keys`
+`g610-led -k logo ff # Set intensity of a key`
+`g610-led -g fkeys aa # Set intensity of a group of keys`
From 838831276dec78182b80b416d56ec3274811732c Mon Sep 17 00:00:00 2001 From: MatMoul Date: Thu, 5 Jan 2017 01:57:48 +0100 Subject: [PATCH 030/187] Add pictures --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index c3da05e..d2656fa 100644 --- a/README.md +++ b/README.md @@ -2,10 +2,10 @@ Linux LED controller for Logitech Led Keyboards.
-#Install and use :
+##Install and use :
- look at the wiki : https://github.com/MatMoul/g810-led/wiki
-#Compatible keyboards :
+##Compatible keyboards :
**G410 Atlas Spectrum :**
![jj](https://raw.githubusercontent.com/MatMoul/g810-led/master/pictures/g410.png)
@@ -19,7 +19,7 @@ Linux LED controller for Logitech Led Keyboards.
**G910 Orion (Spark and Spectrum) :**
![jj](https://raw.githubusercontent.com/MatMoul/g810-led/master/pictures/g910.jpg)
-#Samples :
+##Samples :
`g810-led -p /etc/g810/profile # Set a profile`
`g810-led -k logo ff0000 # Set color of a key`
`g810-led -a 00ff00 # Set color of all keys`
@@ -32,7 +32,7 @@ Linux LED controller for Logitech Led Keyboards.
`g810-led -fx-vwave 0a # Set vertical wave effect`
`g810-led -fx-cwave 0a # Set center wave effect`
-#Samples with no commit :
+##Samples with no commit :
`g810-led -an 000000 # Set color of all key with no action`
`g810-led -gn modifiers ff0000 # Set color of a group with no action`
`g810-led -kn w ff0000 # Set color of a key with no action`
@@ -41,7 +41,7 @@ Linux LED controller for Logitech Led Keyboards.
`g810-led -kn d ff0000 # Set color of a key with no action`
`g810-led -c # Commit all changes`
-#Samples for g610 :
+##Samples for g610 :
`g610-led -a 60 # Set intensity of all keys`
`g610-led -k logo ff # Set intensity of a key`
`g610-led -g fkeys aa # Set intensity of a group of keys`
From 0ecd800b418769e05827d07663695cc1cd90d817 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Thu, 5 Jan 2017 21:59:03 +0100 Subject: [PATCH 031/187] Add new product ID for G610 --- src/classes/Keyboard.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index 02bc2c5..58e68ab 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -43,6 +43,7 @@ bool Keyboard::attach() { if (desc.idProduct == 0xc337) { pid = desc.idProduct; break; } // G810 spectrum if (desc.idProduct == 0xc330) { pid = desc.idProduct; break; } // G410 spectrum if (desc.idProduct == 0xc333) { pid = desc.idProduct; break; } // G610 spectrum + if (desc.idProduct == 0xc338) { pid = desc.idProduct; break; } // G610 spectrum if (desc.idProduct == 0xc32b) { // G910 spark pid = desc.idProduct; kbdProtocol = KeyboardProtocol::g910; From 338876a006d42a1a633ba679a89396423fa7d681 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Thu, 5 Jan 2017 22:00:27 +0100 Subject: [PATCH 032/187] Add new product ID for G610 --- udev/g810-led.rules | 1 + 1 file changed, 1 insertion(+) diff --git a/udev/g810-led.rules b/udev/g810-led.rules index de8dd79..e4c5401 100644 --- a/udev/g810-led.rules +++ b/udev/g810-led.rules @@ -2,5 +2,6 @@ ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c3 ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c337", MODE="660", GROUP="users" ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c330", MODE="660", GROUP="users" ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c333", MODE="660", GROUP="users" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c338", MODE="660", GROUP="users" ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c32b", MODE="660", GROUP="users" ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c335", MODE="660", GROUP="users" From 3596a85315e61d162a9c583dd053eb0468968b4d Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 6 Jan 2017 06:08:09 +0100 Subject: [PATCH 033/187] Add profile pipe support --- src/main.cpp | 349 ++++++++++++++++++++++++++------------------------- 1 file changed, 180 insertions(+), 169 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 241659e..f184cc6 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,7 +1,9 @@ #include #include #include +#include #include "classes/Keyboard.h" +#include using namespace std; @@ -29,7 +31,8 @@ void usage() { cout<<" -fx-vwave speed :\t\tSet vertical color wave effect\n"; cout<<" -fx-cwave speed :\t\tSet center color wave effect\n"; cout<<"\n"; - cout<<" -p profilefile :\t\tLoad a profile\n"; + cout<<" -p profilefile :\t\tLoad a profile from a file\n"; + cout<<" -pp profilepipe :\t\tLoad a profile from stdin\n"; cout<<"\n"; cout<<" -h | --help :\t\t\tthis help message\n"; cout<<" -lk | --list-keys :\t\tList keys in groups\n"; @@ -325,194 +328,201 @@ int setFXCWave(string speed) { return 1; } -int loadProfile(string profileFile) { - ifstream file; +int parseProfile(istream &is) { + string line; + int lineCount = 1; + int ind; - file.open(profileFile); - if (file.is_open()) { + Keyboard lg_kbd; + Keyboard::KeyGroup keyGroup; + Keyboard::KeyAddress keyAddress; + Keyboard::KeyValue keyValue; + Keyboard::KeyColors colors; + uint8_t speedValue; + + map var; + vector keys; + + lg_kbd.attach(); + + while (!is.eof()) { + getline(is, line); - string line; - int lineCount = 1; - int ind; - - Keyboard lg_kbd; - Keyboard::KeyGroup keyGroup; - Keyboard::KeyAddress keyAddress; - Keyboard::KeyValue keyValue; - Keyboard::KeyColors colors; - uint8_t speedValue; - - map var; - vector keys; - - lg_kbd.attach(); - - while (!file.eof()) { - getline(file, line); - - if (line.substr(0, 3) == "var") { - line = line.substr(4); + if (line.substr(0, 3) == "var") { + line = line.substr(4); + ind = line.find(" "); + var[line.substr(0, ind)] = line.substr(ind + 1, 6); + } else if (line.substr(0, 1) == "a") { + line = line.substr(2); + if (line.substr(0, 1) == "$") { ind = line.find(" "); - var[line.substr(0, ind)] = line.substr(ind + 1, 6); - } else if (line.substr(0, 1) == "a") { - line = line.substr(2); - if (line.substr(0, 1) == "$") { - ind = line.find(" "); - line = var[line.substr(1, ind - 1)]; - } else line = line.substr(0, 6); - if (lg_kbd.parseColor(line, colors) == true) { - keys.clear(); - lg_kbd.setAllKeys(colors); - } else cout<<"Error on line "< Date: Fri, 6 Jan 2017 06:31:42 +0100 Subject: [PATCH 034/187] Clean code --- src/main.cpp | 267 ++++++++++++++++++++++++++------------------------- 1 file changed, 136 insertions(+), 131 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index f184cc6..d513509 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2,144 +2,149 @@ #include #include #include -#include "classes/Keyboard.h" #include +#include "classes/Keyboard.h" using namespace std; +string appname = "g810-led"; + void usage() { - string appname = "g810-led"; - cout< 1) { string argCmd = argv[1]; if (argCmd == "-h" || argCmd == "--help") { usage(); return 0; } From f6f851b8c71d8919deb95a9e6075cb9e8da262ae Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 6 Jan 2017 06:43:14 +0100 Subject: [PATCH 035/187] Update README --- README.md | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index d2656fa..9254394 100644 --- a/README.md +++ b/README.md @@ -6,21 +6,13 @@ Linux LED controller for Logitech Led Keyboards.
- look at the wiki : https://github.com/MatMoul/g810-led/wiki
##Compatible keyboards :
- **G410 Atlas Spectrum :**
-![jj](https://raw.githubusercontent.com/MatMoul/g810-led/master/pictures/g410.png)
- **G610 Orion (Brown and Red) :**
-![jj](https://raw.githubusercontent.com/MatMoul/g810-led/master/pictures/g610.png)
- **G810 Orion Spectrum :**
-![jj](https://raw.githubusercontent.com/MatMoul/g810-led/master/pictures/g810.jpg)
- **G910 Orion (Spark and Spectrum) :**
-![jj](https://raw.githubusercontent.com/MatMoul/g810-led/master/pictures/g910.jpg)
##Samples :
-`g810-led -p /etc/g810/profile # Set a profile`
+`g810-led -p /etc/g810/profile # Load a profile`
`g810-led -k logo ff0000 # Set color of a key`
`g810-led -a 00ff00 # Set color of all keys`
`g810-led -g fkeys ff00ff # Set color of a group of keys`
@@ -45,3 +37,7 @@ Linux LED controller for Logitech Led Keyboards.
`g610-led -a 60 # Set intensity of all keys`
`g610-led -k logo ff # Set intensity of a key`
`g610-led -g fkeys aa # Set intensity of a group of keys`
+ +##Samples with pipe :
+`g810-led -pp < profilefile # Load a profile`
+`echo -e "k w ff0000\nk a ff0000\nk s ff0000\nk d ff0000\nc" | g810-led -pp # Set multiple keys`
From 5fcf267de55bb0570a6d3bedc33624d3dfbd2d42 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 6 Jan 2017 06:44:39 +0100 Subject: [PATCH 036/187] Update README --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 9254394..53481ae 100644 --- a/README.md +++ b/README.md @@ -6,10 +6,10 @@ Linux LED controller for Logitech Led Keyboards.
- look at the wiki : https://github.com/MatMoul/g810-led/wiki
##Compatible keyboards :
-**G410 Atlas Spectrum :**
-**G610 Orion (Brown and Red) :**
-**G810 Orion Spectrum :**
-**G910 Orion (Spark and Spectrum) :**
+- **G410 Atlas Spectrum :**
+- **G610 Orion (Brown and Red) :**
+- **G810 Orion Spectrum :**
+- **G910 Orion (Spark and Spectrum) :**
##Samples :
`g810-led -p /etc/g810/profile # Load a profile`
From ce14d3e9ea451bb2835022eb1ffe6d5ba8efdb4e Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 6 Jan 2017 06:51:58 +0100 Subject: [PATCH 037/187] Update README --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 53481ae..71b1ec2 100644 --- a/README.md +++ b/README.md @@ -2,15 +2,15 @@ Linux LED controller for Logitech Led Keyboards.
-##Install and use :
-- look at the wiki : https://github.com/MatMoul/g810-led/wiki
- ##Compatible keyboards :
- **G410 Atlas Spectrum :**
- **G610 Orion (Brown and Red) :**
- **G810 Orion Spectrum :**
- **G910 Orion (Spark and Spectrum) :**
+##Install and use :
+- look at the wiki : https://github.com/MatMoul/g810-led/wiki
+ ##Samples :
`g810-led -p /etc/g810/profile # Load a profile`
`g810-led -k logo ff0000 # Set color of a key`
From f4ea0405cd2005b7681536af4e3d447d43f949f6 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sun, 8 Jan 2017 03:23:13 +0100 Subject: [PATCH 038/187] Add FX features --- sample_profiles/all_blue_fxl_breathing_red | 5 + src/classes/Keyboard.cpp | 90 +++---- src/classes/Keyboard.h | 15 +- src/main.cpp | 269 +++++++++------------ 4 files changed, 165 insertions(+), 214 deletions(-) create mode 100644 sample_profiles/all_blue_fxl_breathing_red diff --git a/sample_profiles/all_blue_fxl_breathing_red b/sample_profiles/all_blue_fxl_breathing_red new file mode 100644 index 0000000..0898d67 --- /dev/null +++ b/sample_profiles/all_blue_fxl_breathing_red @@ -0,0 +1,5 @@ +a 0000ff # Set all keys blue + +c # Commit changes + +fxl-breathing ff0000 10 # Set breathing effect with red color and speed 10 diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index 58e68ab..f107cd5 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -883,7 +883,7 @@ bool Keyboard::setGroupKeys(KeyGroup keyGroup, KeyColors colors) { return true; } -bool Keyboard::setFXColor(KeyColors colors) { +bool Keyboard::setFXColorKeys(KeyColors colors) { bool retval = false; int data_size = 20; unsigned char *data = new unsigned char[data_size]; @@ -899,6 +899,15 @@ bool Keyboard::setFXColor(KeyColors colors) { for(int i = 10; i < data_size; i++) data[i] = 0x00; retval = sendDataInternal(data, data_size); + delete[] data; + return retval; +} + +bool Keyboard::setFXColorLogo(KeyColors colors) { + bool retval = false; + int data_size = 20; + unsigned char *data = new unsigned char[data_size]; + // Logo populateFXAddressInternal(data); data[4] = 0x01; // Logo @@ -914,7 +923,7 @@ bool Keyboard::setFXColor(KeyColors colors) { return retval; } -bool Keyboard::setFXBreathing(KeyColors colors, uint8_t speed) { +bool Keyboard::setFXBreathingKeys(KeyColors colors, uint8_t speed) { bool retval = false; int data_size = 20; unsigned char *data = new unsigned char[data_size]; @@ -933,6 +942,15 @@ bool Keyboard::setFXBreathing(KeyColors colors, uint8_t speed) { for(int i = 13; i < data_size; i++) data[i] = 0x00; retval = sendDataInternal(data, data_size); + delete[] data; + return retval; +} + +bool Keyboard::setFXBreathingLogo(KeyColors colors, uint8_t speed) { + bool retval = false; + int data_size = 20; + unsigned char *data = new unsigned char[data_size]; + // Logo populateFXAddressInternal(data); data[4] = 0x01; // Logo @@ -951,7 +969,7 @@ bool Keyboard::setFXBreathing(KeyColors colors, uint8_t speed) { return retval; } -bool Keyboard::setFXColorCycle(uint8_t speed) { +bool Keyboard::setFXColorCycleKeys(uint8_t speed) { bool retval = false; int data_size = 20; unsigned char *data = new unsigned char[data_size]; @@ -972,6 +990,15 @@ bool Keyboard::setFXColorCycle(uint8_t speed) { for(int i = 15; i < data_size; i++) data[i] = 0x00; retval = sendDataInternal(data, data_size); + delete[] data; + return retval; +} + +bool Keyboard::setFXColorCycleLogo(uint8_t speed) { + bool retval = false; + int data_size = 20; + unsigned char *data = new unsigned char[data_size]; + // Logo populateFXAddressInternal(data); data[4] = 0x01; // Logo @@ -992,7 +1019,7 @@ bool Keyboard::setFXColorCycle(uint8_t speed) { return retval; } -bool Keyboard::setFXHWave(uint8_t speed) { +bool Keyboard::setFXHWaveKeys(uint8_t speed) { bool retval = false; int data_size = 20; unsigned char *data = new unsigned char[data_size]; @@ -1014,28 +1041,11 @@ bool Keyboard::setFXHWave(uint8_t speed) { for(int i = 16; i < data_size; i++) data[i] = 0x00; retval = sendDataInternal(data, data_size); - // Logo - populateFXAddressInternal(data); - data[4] = 0x01; // Logo - data[5] = 0x03; // Effect - data[6] = 0x00; - data[7] = 0x00; - data[8] = 0x00; - data[9] = 0x00; - data[10] = 0x00; - data[11] = speed; // Speed - data[12] = 0x88; - data[13] = 0x64; - data[14] = 0x00; - data[15] = 0x00; - for(int i = 16; i < data_size; i++) data[i] = 0x00; - retval = sendDataInternal(data, data_size); - delete[] data; return retval; } -bool Keyboard::setFXVWave(uint8_t speed) { +bool Keyboard::setFXVWaveKeys(uint8_t speed) { bool retval = false; int data_size = 20; unsigned char *data = new unsigned char[data_size]; @@ -1057,28 +1067,11 @@ bool Keyboard::setFXVWave(uint8_t speed) { for(int i = 16; i < data_size; i++) data[i] = 0x00; retval = sendDataInternal(data, data_size); - // Logo - populateFXAddressInternal(data); - data[4] = 0x01; // Logo - data[5] = 0x03; // Effect - data[6] = 0x00; - data[7] = 0x00; - data[8] = 0x00; - data[9] = 0x00; - data[10] = 0x00; - data[11] = speed; // Speed - data[12] = 0x88; - data[13] = 0x64; - data[14] = 0x00; - data[15] = 0x00; - for(int i = 16; i < data_size; i++) data[i] = 0x00; - retval = sendDataInternal(data, data_size); - delete[] data; return retval; } -bool Keyboard::setFXCWave(uint8_t speed) { +bool Keyboard::setFXCWaveKeys(uint8_t speed) { bool retval = false; int data_size = 20; unsigned char *data = new unsigned char[data_size]; @@ -1100,23 +1093,6 @@ bool Keyboard::setFXCWave(uint8_t speed) { for(int i = 16; i < data_size; i++) data[i] = 0x00; retval = sendDataInternal(data, data_size); - // Logo - populateFXAddressInternal(data); - data[4] = 0x01; // Logo - data[5] = 0x03; // Effect - data[6] = 0x00; - data[7] = 0x00; - data[8] = 0x00; - data[9] = 0x00; - data[10] = 0x00; - data[11] = speed; // Speed - data[12] = 0x88; - data[13] = 0x64; - data[14] = 0x00; - data[15] = 0x00; - for(int i = 16; i < data_size; i++) data[i] = 0x00; - retval = sendDataInternal(data, data_size); - delete[] data; return retval; } diff --git a/src/classes/Keyboard.h b/src/classes/Keyboard.h index 80c7107..5571e4e 100644 --- a/src/classes/Keyboard.h +++ b/src/classes/Keyboard.h @@ -52,12 +52,15 @@ class Keyboard { bool setKeys(KeyValue keyValue[], size_t keyValueCount); bool setAllKeys(KeyColors colors); bool setGroupKeys(KeyGroup keyGroup, KeyColors colors); - bool setFXColor(KeyColors colors); - bool setFXBreathing(KeyColors colors, uint8_t speed); - bool setFXColorCycle(uint8_t speed); - bool setFXHWave(uint8_t speed); - bool setFXVWave(uint8_t speed); - bool setFXCWave(uint8_t speed); + bool setFXColorKeys(KeyColors colors); + bool setFXColorLogo(KeyColors colors); + bool setFXBreathingKeys(KeyColors colors, uint8_t speed); + bool setFXBreathingLogo(KeyColors colors, uint8_t speed); + bool setFXColorCycleKeys(uint8_t speed); + bool setFXColorCycleLogo(uint8_t speed); + bool setFXHWaveKeys(uint8_t speed); + bool setFXVWaveKeys(uint8_t speed); + bool setFXCWaveKeys(uint8_t speed); private: diff --git a/src/main.cpp b/src/main.cpp index d513509..3c2c9f0 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -22,7 +22,6 @@ void usage() { cout<<" -an color :\t\t\tSet all keys without commit"< Date: Sun, 8 Jan 2017 03:26:22 +0100 Subject: [PATCH 039/187] Update README --- README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 71b1ec2..8fbd111 100644 --- a/README.md +++ b/README.md @@ -3,10 +3,12 @@ Linux LED controller for Logitech Led Keyboards.
##Compatible keyboards :
-- **G410 Atlas Spectrum :**
-- **G610 Orion (Brown and Red) :**
-- **G810 Orion Spectrum :**
-- **G910 Orion (Spark and Spectrum) :**
+- **G410 Atlas Spectrum**
+- **G610 Orion Brown**
+- **G610 Orion Red**
+- **G810 Orion Spectrum**
+- **G910 Orion Spark**
+- **G910 Orion Spectrum**
##Install and use :
- look at the wiki : https://github.com/MatMoul/g810-led/wiki
From 0c3c8c63715b689137c0c137c9971fdf9e9753e5 Mon Sep 17 00:00:00 2001 From: Jens Dagerbo Date: Sun, 8 Jan 2017 21:12:48 +0100 Subject: [PATCH 040/187] Refactored key address handling Rewrote a bunch of stuff to get rid of the big switch and if blocks. Removed all explicit allocation. Using std::vector instead of arrays to transport keys around. --- .gitignore | 3 + src/classes/Keyboard.cpp | 1514 ++++++++++++-------------------------- src/classes/Keyboard.h | 442 +++++++++-- src/main.cpp | 18 +- 4 files changed, 855 insertions(+), 1122 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e31e806 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +g810-led.* +bin/* +. diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index f107cd5..e6aadb9 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -1,1098 +1,534 @@ #include "Keyboard.h" -#include -#include -#include + #include "libusb.h" +#include +#include +#include +#include +#include -bool Keyboard::isAttached() { - return m_isAttached; +namespace helper +{ + uint8_t keyToByte(Keyboard::Key key) + { + return static_cast(static_cast(key) & 0x00ff); + } + + Keyboard::KeyAddressGroup keyToKeyAddressGroup(Keyboard::Key key) + { + return static_cast(static_cast(key) >> 8 ); + } + + Keyboard::byte_buffer_t keyValuesToBytes(const Keyboard::KeyValueArray& keyValues) + { + Keyboard::byte_buffer_t buf; + for (const auto& keyValue : keyValues) + { + buf.push_back(keyToByte(keyValue.key)); + buf.push_back(keyValue.colors.red); + buf.push_back(keyValue.colors.green); + buf.push_back(keyValue.colors.blue); + } + return buf; + } + + void append(Keyboard::byte_buffer_t& target, const Keyboard::byte_buffer_t& source) + { + target.insert(std::end(target), std::begin(source), std::end(source)); + } } -bool Keyboard::attach() { - if (m_isAttached == true) return false; - int r; - r = libusb_init(&ctx); - if (r < 0) return false; - - libusb_device **devs; - ssize_t cnt = libusb_get_device_list(ctx, &devs); - if(cnt < 0) return false; - int pid = 0; - for(ssize_t i = 0; i < cnt; i++) { - libusb_device *device = devs[i]; - libusb_device_descriptor desc = { - 0, // bLength - 0, // bDescriptorType - 0, // bcdUSB - 0, // bDeviceClass - 0, // bDeviceSubClass - 0, // bDeviceProtocol - 0, // bMaxPacketSize0 - 0, // idVendor - 0, // idProduct - 0, // bcdDevice - 0, // iManufacturer - 0, // iProduct - 0, // iSerialNumber - 0 // bNumConfigurations - }; - libusb_get_device_descriptor(device, &desc); - if (desc.idVendor == 0x046d) { - if (desc.idProduct == 0xc331) { pid = desc.idProduct; break; } // G810 spectrum - if (desc.idProduct == 0xc337) { pid = desc.idProduct; break; } // G810 spectrum - if (desc.idProduct == 0xc330) { pid = desc.idProduct; break; } // G410 spectrum - if (desc.idProduct == 0xc333) { pid = desc.idProduct; break; } // G610 spectrum - if (desc.idProduct == 0xc338) { pid = desc.idProduct; break; } // G610 spectrum - if (desc.idProduct == 0xc32b) { // G910 spark - pid = desc.idProduct; - kbdProtocol = KeyboardProtocol::g910; - break; - } - if (desc.idProduct == 0xc335) { // G910 spectrum - pid = desc.idProduct; - kbdProtocol = KeyboardProtocol::g910; - break; - } - } - } - libusb_free_device_list(devs, 1); - if (pid == 0) { - libusb_exit(ctx); - ctx = NULL; - return false; - } - - dev_handle = libusb_open_device_with_vid_pid(ctx, 0x046d, pid); - if (dev_handle == NULL) { - libusb_exit(ctx); - ctx = NULL; - return false; - } - if(libusb_kernel_driver_active(dev_handle, 1) == 1) { - libusb_detach_kernel_driver(dev_handle, 1); - m_isKernellDetached = true; - } - r = libusb_claim_interface(dev_handle, 1); - if(r < 0) return false; - m_isAttached = true; - return true; +bool Keyboard::isAttached() +{ + return m_isAttached; } -bool Keyboard::detach() { - if (m_isAttached == false) return false; - int r; - r = libusb_release_interface(dev_handle, 1); - if(r!=0) return false; - if(m_isKernellDetached==true) { - libusb_attach_kernel_driver(dev_handle, 1); - m_isKernellDetached = false; - } - libusb_close(dev_handle); - dev_handle = NULL; - libusb_exit(ctx); - ctx = NULL; - m_isAttached = false; - return true; +//libusb_device_descriptor desc = { +// 0, // bLength +// 0, // bDescriptorType +// 0, // bcdUSB +// 0, // bDeviceClass +// 0, // bDeviceSubClass +// 0, // bDeviceProtocol +// 0, // bMaxPacketSize0 +// 0, // idVendor +// 0, // idProduct +// 0, // bcdDevice +// 0, // iManufacturer +// 0, // iProduct +// 0, // iSerialNumber +// 0 // bNumConfigurations +//}; + +bool Keyboard::attach() +{ + static const u_int16_t LOGITECH_VID = 0x046d; + + if (m_isAttached == true) + return false; + int r; + r = libusb_init(&ctx); + if (r < 0) + return false; + + libusb_device** devs; + ssize_t cnt = libusb_get_device_list(ctx, &devs); + if (cnt < 0) + return false; + u_int16_t pid = 0; + for (ssize_t i = 0; i < cnt; i++) + { + libusb_device_descriptor desc = {}; + libusb_get_device_descriptor(devs[i], &desc); + + if (desc.idVendor == LOGITECH_VID) + { + bool found_supported_keyboard = false; + switch (desc.idProduct) + { + case 0xc331: // G810 spectrum + case 0xc337: // G810 spectrum + case 0xc330: // G410 spectrum + case 0xc333: // G610 spectrum + case 0xc338: // G610 spectrum + case 0xc32b: // G910 spark + case 0xc335: // G910 spectrum + pid = desc.idProduct; + found_supported_keyboard = true; + break; + default:; + } + if (found_supported_keyboard) + { + kbdProtocol = (0xc32b == pid || 0xc335 == pid) ? KeyboardProtocol::g910 : KeyboardProtocol::generic; + break; + } + } + } + libusb_free_device_list(devs, 1); + if (pid == 0) + { + libusb_exit(ctx); + ctx = nullptr; + return false; + } + + dev_handle = libusb_open_device_with_vid_pid(ctx, LOGITECH_VID, pid); + if (dev_handle == nullptr) + { + libusb_exit(ctx); + ctx = nullptr; + return false; + } + if (libusb_kernel_driver_active(dev_handle, 1) == 1) + { + libusb_detach_kernel_driver(dev_handle, 1); + m_isKernellDetached = true; + } + r = libusb_claim_interface(dev_handle, 1); + if (r < 0) + return false; + m_isAttached = true; + return true; } -bool Keyboard::commit() { - if (m_isAttached == false) return false; - bool retval = false; - unsigned char *data = new unsigned char[20]; - switch (kbdProtocol) { - case KeyboardProtocol::generic: - data[0] = 0x11; - data[1] = 0xff; - data[2] = 0x0c; - data[3] = 0x5a; - break; - case KeyboardProtocol::g910: - data[0] = 0x11; - data[1] = 0xff; - data[2] = 0x0f; - data[3] = 0x5d; - break; - default: - return false; - break; - } - for(int i = 4; i < 20; i++) data[i] = 0x00; - retval = sendDataInternal(data, 20); - delete[] data; - return retval; +bool Keyboard::detach() +{ + if (m_isAttached == false) + return false; + int r; + r = libusb_release_interface(dev_handle, 1); + if (r != 0) + return false; + if (m_isKernellDetached == true) + { + libusb_attach_kernel_driver(dev_handle, 1); + m_isKernellDetached = false; + } + libusb_close(dev_handle); + dev_handle = nullptr; + libusb_exit(ctx); + ctx = nullptr; + m_isAttached = false; + return true; } -bool Keyboard::getKeyAddress(Key key, KeyAddress &keyAddress) { - switch (key) { - case Key::logo: - keyAddress.addressGroup = KeyAddressGroup::logo; - keyAddress.id = 0x01; - break; - case Key::logo2: - keyAddress.addressGroup = KeyAddressGroup::logo; - keyAddress.id = 0x02; - break; - case Key::backlight: - keyAddress.addressGroup = KeyAddressGroup::indicators; - keyAddress.id = 0x01; - break; - case Key::game: - keyAddress.addressGroup = KeyAddressGroup::indicators; - keyAddress.id = 0x02; - break; - case Key::caps: - keyAddress.addressGroup = KeyAddressGroup::indicators; - keyAddress.id = 0x03; - break; - case Key::scroll: - keyAddress.addressGroup = KeyAddressGroup::indicators; - keyAddress.id = 0x04; - break; - case Key::num: - keyAddress.addressGroup = KeyAddressGroup::indicators; - keyAddress.id = 0x05; - break; - case Key::next: - keyAddress.addressGroup = KeyAddressGroup::multimedia; - keyAddress.id = 0xb5; - break; - case Key::prev: - keyAddress.addressGroup = KeyAddressGroup::multimedia; - keyAddress.id = 0xb6; - break; - case Key::stop: - keyAddress.addressGroup = KeyAddressGroup::multimedia; - keyAddress.id = 0xb7; - break; - case Key::play: - keyAddress.addressGroup = KeyAddressGroup::multimedia; - keyAddress.id = 0xcd; - break; - case Key::mute: - keyAddress.addressGroup = KeyAddressGroup::multimedia; - keyAddress.id = 0xe2; - break; - case Key::g1: - keyAddress.addressGroup = KeyAddressGroup::gkeys; - keyAddress.id = 0x01; - break; - case Key::g2: - keyAddress.addressGroup = KeyAddressGroup::gkeys; - keyAddress.id = 0x02; - break; - case Key::g3: - keyAddress.addressGroup = KeyAddressGroup::gkeys; - keyAddress.id = 0x03; - break; - case Key::g4: - keyAddress.addressGroup = KeyAddressGroup::gkeys; - keyAddress.id = 0x04; - break; - case Key::g5: - keyAddress.addressGroup = KeyAddressGroup::gkeys; - keyAddress.id = 0x05; - break; - case Key::g6: - keyAddress.addressGroup = KeyAddressGroup::gkeys; - keyAddress.id = 0x06; - break; - case Key::g7: - keyAddress.addressGroup = KeyAddressGroup::gkeys; - keyAddress.id = 0x07; - break; - case Key::g8: - keyAddress.addressGroup = KeyAddressGroup::gkeys; - keyAddress.id = 0x08; - break; - case Key::g9: - keyAddress.addressGroup = KeyAddressGroup::gkeys; - keyAddress.id = 0x09; - break; - default: - keyAddress.addressGroup = KeyAddressGroup::keys; - switch (key) { - case Key::a: keyAddress.id = 0x04; break; - case Key::b: keyAddress.id = 0x05; break; - case Key::c: keyAddress.id = 0x06; break; - case Key::d: keyAddress.id = 0x07; break; - case Key::e: keyAddress.id = 0x08; break; - case Key::f: keyAddress.id = 0x09; break; - case Key::g: keyAddress.id = 0x0a; break; - case Key::h: keyAddress.id = 0x0b; break; - case Key::i: keyAddress.id = 0x0c; break; - case Key::j: keyAddress.id = 0x0d; break; - case Key::k: keyAddress.id = 0x0e; break; - case Key::l: keyAddress.id = 0x0f; break; - case Key::m: keyAddress.id = 0x10; break; - case Key::n: keyAddress.id = 0x11; break; - case Key::o: keyAddress.id = 0x12; break; - case Key::p: keyAddress.id = 0x13; break; - case Key::q: keyAddress.id = 0x14; break; - case Key::r: keyAddress.id = 0x15; break; - case Key::s: keyAddress.id = 0x16; break; - case Key::t: keyAddress.id = 0x17; break; - case Key::u: keyAddress.id = 0x18; break; - case Key::v: keyAddress.id = 0x19; break; - case Key::w: keyAddress.id = 0x1a; break; - case Key::x: keyAddress.id = 0x1b; break; - case Key::y: keyAddress.id = 0x1c; break; - case Key::z: keyAddress.id = 0x1d; break; - case Key::n1: keyAddress.id = 0x1e; break; - case Key::n2: keyAddress.id = 0x1f; break; - case Key::n3: keyAddress.id = 0x20; break; - case Key::n4: keyAddress.id = 0x21; break; - case Key::n5: keyAddress.id = 0x22; break; - case Key::n6: keyAddress.id = 0x23; break; - case Key::n7: keyAddress.id = 0x24; break; - case Key::n8: keyAddress.id = 0x25; break; - case Key::n9: keyAddress.id = 0x26; break; - case Key::n0: keyAddress.id = 0x27; break; - case Key::enter: keyAddress.id = 0x28; break; - case Key::esc: keyAddress.id = 0x29; break; - case Key::backspace: keyAddress.id = 0x2a; break; - case Key::tab: keyAddress.id = 0x2b; break; - case Key::space: keyAddress.id = 0x2c; break; - case Key::minus: keyAddress.id = 0x2d; break; - case Key::equal: keyAddress.id = 0x2e; break; - case Key::open_bracket: keyAddress.id = 0x2f; break; - case Key::close_bracket: keyAddress.id = 0x30; break; - case Key::backslash: keyAddress.id = 0x31; break; - case Key::dollar: keyAddress.id = 0x32; break; - case Key::semicolon: keyAddress.id = 0x33; break; - case Key::quote: keyAddress.id = 0x34; break; - case Key::tilde: keyAddress.id = 0x35; break; - case Key::comma: keyAddress.id = 0x36; break; - case Key::period: keyAddress.id = 0x37; break; - case Key::slash: keyAddress.id = 0x38; break; - case Key::caps_lock: keyAddress.id = 0x39; break; - case Key::f1: keyAddress.id = 0x3a; break; - case Key::f2: keyAddress.id = 0x3b; break; - case Key::f3: keyAddress.id = 0x3c; break; - case Key::f4: keyAddress.id = 0x3d; break; - case Key::f5: keyAddress.id = 0x3e; break; - case Key::f6: keyAddress.id = 0x3f; break; - case Key::f7: keyAddress.id = 0x40; break; - case Key::f8: keyAddress.id = 0x41; break; - case Key::f9: keyAddress.id = 0x42; break; - case Key::f10: keyAddress.id = 0x43; break; - case Key::f11: keyAddress.id = 0x44; break; - case Key::f12: keyAddress.id = 0x45; break; - case Key::print_screen: keyAddress.id = 0x46; break; - case Key::scroll_lock: keyAddress.id = 0x47; break; - case Key::pause_break: keyAddress.id = 0x48; break; - case Key::insert: keyAddress.id = 0x49; break; - case Key::home: keyAddress.id = 0x4a; break; - case Key::page_up: keyAddress.id = 0x4b; break; - case Key::del: keyAddress.id = 0x4c; break; - case Key::end: keyAddress.id = 0x4d; break; - case Key::page_down: keyAddress.id = 0x4e; break; - case Key::arrow_right: keyAddress.id = 0x4f; break; - case Key::arrow_left: keyAddress.id = 0x50; break; - case Key::arrow_bottom: keyAddress.id = 0x51; break; - case Key::arrow_top: keyAddress.id = 0x52; break; - case Key::num_lock: keyAddress.id = 0x53; break; - case Key::num_slash: keyAddress.id = 0x54; break; - case Key::num_asterisk: keyAddress.id = 0x55; break; - case Key::num_minus: keyAddress.id = 0x56; break; - case Key::num_plus: keyAddress.id = 0x57; break; - case Key::num_enter: keyAddress.id = 0x58; break; - case Key::num_1: keyAddress.id = 0x59; break; - case Key::num_2: keyAddress.id = 0x5a; break; - case Key::num_3: keyAddress.id = 0x5b; break; - case Key::num_4: keyAddress.id = 0x5c; break; - case Key::num_5: keyAddress.id = 0x5d; break; - case Key::num_6: keyAddress.id = 0x5e; break; - case Key::num_7: keyAddress.id = 0x5f; break; - case Key::num_8: keyAddress.id = 0x60; break; - case Key::num_9: keyAddress.id = 0x61; break; - case Key::num_0: keyAddress.id = 0x62; break; - case Key::num_dot: keyAddress.id = 0x63; break; - case Key::intl_backslash: keyAddress.id = 0x64; break; - case Key::menu: keyAddress.id = 0x65; break; - case Key::ctrl_left: keyAddress.id = 0xe0; break; - case Key::shift_left: keyAddress.id = 0xe1; break; - case Key::alt_left: keyAddress.id = 0xe2; break; - case Key::win_left: keyAddress.id = 0xe3; break; - case Key::ctrl_right: keyAddress.id = 0xe4; break; - case Key::shift_right: keyAddress.id = 0xe5; break; - case Key::alt_right: keyAddress.id = 0xe6; break; - case Key::win_right: keyAddress.id = 0xe7; break; - default: break; - } - break; - } - return true; +bool Keyboard::commit() +{ + if (!m_isAttached) + { + return false; + } + + static const Keyboard::byte_buffer_t CommitGeneric = { 0x11, 0xff, 0x0c, 0x5a }; + static const Keyboard::byte_buffer_t CommitG910 = { 0x11, 0xff, 0x0f, 0x5d }; + + byte_buffer_t data = kbdProtocol == KeyboardProtocol::g910 ? CommitG910 : CommitGeneric; + data.resize(20, 0x00); + + return sendDataInternal(data); } -bool Keyboard::parsePowerOnEffect(std::string effect, PowerOnEffect &powerOnEffect) { - if (effect == "rainbow") powerOnEffect = PowerOnEffect::rainbow; - else if (effect == "color") powerOnEffect = PowerOnEffect::color; - else return false; - return true; +bool Keyboard::parsePowerOnEffect(const std::string& effect, PowerOnEffect& powerOnEffect) +{ + if (effect == "rainbow") + powerOnEffect = PowerOnEffect::rainbow; + else if (effect == "color") + powerOnEffect = PowerOnEffect::color; + else + return false; + return true; } -bool Keyboard::parseKey(std::string key, KeyAddress &keyAddress) { - std::transform(key.begin(), key.end(), key.begin(), ::tolower); - Key parsedKey; - if (key == "logo") parsedKey = Key::logo; - else if (key == "logo2") parsedKey = Key::logo2; - else if (key == "back_light" || key == "backlight" || key == "light") parsedKey = Key::backlight; - else if (key == "game_mode" || key == "gamemode" || key == "game") parsedKey = Key::game; - else if (key == "caps_indicator" || key == "capsindicator" || key == "caps") parsedKey = Key::caps; - else if (key == "scroll_indicator" || key == "scrollindicator" || key == "scroll") parsedKey = Key::scroll; - else if (key == "num_indicator" || key == "numindicator" || key == "num") parsedKey = Key::num; - else if (key == "next") parsedKey = Key::next; - else if (key == "prev" || key == "previous") parsedKey = Key::prev; - else if (key == "stop") parsedKey = Key::stop; - else if (key == "play_pause" || key == "playpause" || key == "play") parsedKey = Key::play; - else if (key == "mute") parsedKey = Key::mute; - else if (key == "a") parsedKey = Key::a; - else if (key == "b") parsedKey = Key::b; - else if (key == "c") parsedKey = Key::c; - else if (key == "d") parsedKey = Key::d; - else if (key == "e") parsedKey = Key::e; - else if (key == "f") parsedKey = Key::f; - else if (key == "g") parsedKey = Key::g; - else if (key == "h") parsedKey = Key::h; - else if (key == "i") parsedKey = Key::i; - else if (key == "j") parsedKey = Key::j; - else if (key == "k") parsedKey = Key::k; - else if (key == "l") parsedKey = Key::l; - else if (key == "m") parsedKey = Key::m; - else if (key == "n") parsedKey = Key::n; - else if (key == "o") parsedKey = Key::o; - else if (key == "p") parsedKey = Key::p; - else if (key == "q") parsedKey = Key::q; - else if (key == "r") parsedKey = Key::r; - else if (key == "s") parsedKey = Key::s; - else if (key == "t") parsedKey = Key::t; - else if (key == "u") parsedKey = Key::u; - else if (key == "v") parsedKey = Key::v; - else if (key == "w") parsedKey = Key::w; - else if (key == "x") parsedKey = Key::x; - else if (key == "z") parsedKey = Key::z; - else if (key == "y") parsedKey = Key::y; - else if (key == "1" || key == "one") parsedKey = Key::n1; - else if (key == "2" || key == "two") parsedKey = Key::n2; - else if (key == "3" || key == "three") parsedKey = Key::n3; - else if (key == "4" || key == "four") parsedKey = Key::n4; - else if (key == "5" || key == "five") parsedKey = Key::n5; - else if (key == "6" || key == "six") parsedKey = Key::n6; - else if (key == "7" || key == "seven") parsedKey = Key::n7; - else if (key == "8" || key == "eight") parsedKey = Key::n8; - else if (key == "9" || key == "nine") parsedKey = Key::n9; - else if (key == "0" || key == "zero") parsedKey = Key::n0; - else if (key == "enter") parsedKey = Key::enter; - else if (key == "esc" || key == "escape") parsedKey = Key::esc; - else if (key == "back" || key == "backspace") parsedKey = Key::backspace; - else if (key == "tab") parsedKey = Key::tab; - else if (key == "space") parsedKey = Key::space; - else if (key == "tilde" || key == "~") parsedKey = Key::tilde; - else if (key == "minus" || key == "-") parsedKey = Key::minus; - else if (key == "equal" || key == "=") parsedKey = Key::equal; - else if (key == "open_bracket" || key == "[") parsedKey = Key::open_bracket; - else if (key == "close_bracket" || key == "]") parsedKey = Key::close_bracket; - else if (key == "backslash" || key == "\\") parsedKey = Key::backslash; - else if (key == "semicolon" || key == ";") parsedKey = Key::semicolon; - else if (key == "quote" || key == "\"") parsedKey = Key::quote; - else if (key == "dollar" || key == "$") parsedKey = Key::dollar; - else if (key == "comma" || key == ",") parsedKey = Key::comma; - else if (key == "period" || key == ".") parsedKey = Key::period; - else if (key == "slash" || key == "/") parsedKey = Key::slash; - else if (key == "caps_lock" || key == "capslock") parsedKey = Key::caps_lock; - else if (key == "f1") parsedKey = Key::f1; - else if (key == "f2") parsedKey = Key::f2; - else if (key == "f3") parsedKey = Key::f3; - else if (key == "f4") parsedKey = Key::f4; - else if (key == "f5") parsedKey = Key::f5; - else if (key == "f6") parsedKey = Key::f6; - else if (key == "f7") parsedKey = Key::f7; - else if (key == "f8") parsedKey = Key::f8; - else if (key == "f9") parsedKey = Key::f9; - else if (key == "f10") parsedKey = Key::f10; - else if (key == "f11") parsedKey = Key::f11; - else if (key == "f12") parsedKey = Key::f12; - else if (key == "print_screen" || key == "printscreen" || key == "printscr" || key == "print") parsedKey = Key::print_screen; - else if (key == "scroll_lock" || key == "scrolllock") parsedKey = Key::scroll_lock; - else if (key == "pause_break" || key == "pausebreak" || key == "pause" || key == "break") parsedKey = Key::pause_break; - else if (key == "insert" || key == "ins") parsedKey = Key::insert; - else if (key == "home") parsedKey = Key::home; - else if (key == "page_up" || key == "pageup") parsedKey = Key::page_up; - else if (key == "delete" || key == "del") parsedKey = Key::del; - else if (key == "end") parsedKey = Key::end; - else if (key == "page_down" || key == "pagedown") parsedKey = Key::page_down; - else if (key == "arrow_right" || key == "arrowright" || key == "right") parsedKey = Key::arrow_right; - else if (key == "arrow_left" || key == "arrowleft" || key == "left") parsedKey = Key::arrow_left; - else if (key == "arrow_bottom" || key == "arrowbottom" || key == "bottom") parsedKey = Key::arrow_bottom; - else if (key == "arrow_top" || key == "arrowtop" || key == "top") parsedKey = Key::arrow_top; - else if (key == "num_lock" || key == "numlock") parsedKey = Key::num_lock; - else if (key == "num/" || key == "num_slash" || key == "numslash") parsedKey = Key::num_slash; - else if (key == "num*" || key == "num_asterisk" || key == "numasterisk") parsedKey = Key::num_asterisk; - else if (key == "num-" || key == "num_minus" || key == "numminus") parsedKey = Key::num_minus; - else if (key == "num+" || key == "num_plus" || key == "numplus") parsedKey = Key::num_plus; - else if (key == "numenter") parsedKey = Key::num_enter; - else if (key == "num1") parsedKey = Key::num_1; - else if (key == "num2") parsedKey = Key::num_2; - else if (key == "num3") parsedKey = Key::num_3; - else if (key == "num4") parsedKey = Key::num_4; - else if (key == "num5") parsedKey = Key::num_5; - else if (key == "num6") parsedKey = Key::num_6; - else if (key == "num7") parsedKey = Key::num_7; - else if (key == "num8") parsedKey = Key::num_8; - else if (key == "num9") parsedKey = Key::num_9; - else if (key == "num0") parsedKey = Key::num_0; - else if (key == "num." || key == "num_period" || key == "numperiod") parsedKey = Key::num_dot; - else if (key == "intl_backslash" || key == "<") parsedKey = Key::intl_backslash; - else if (key == "menu") parsedKey = Key::menu; - else if (key == "ctrl_left" || key == "ctrlleft" || key == "ctrll") parsedKey = Key::ctrl_left; - else if (key == "shift_left" || key == "shiftleft" || key == "shiftl") parsedKey = Key::shift_left; - else if (key == "alt_left" || key == "altleft" || key == "altl") parsedKey = Key::alt_left; - else if (key == "win_left" || key == "winleft" || key == "winl") parsedKey = Key::win_left; - else if (key == "meta_left" || key == "metaleft" || key == "metal") parsedKey = Key::win_left; - else if (key == "ctrl_right" || key == "ctrlright" || key == "ctrlr") parsedKey = Key::ctrl_right; - else if (key == "shift_right" || key == "shiftright" || key == "shiftr") parsedKey = Key::shift_right; - else if (key == "alt_right" || key == "altright" || key == "altr" || key == "altgr") parsedKey = Key::alt_right; - else if (key == "win_right" || key == "winright" || key == "winr") parsedKey = Key::win_right; - else if (key == "meta_right" || key == "metaright" || key == "metar") parsedKey = Key::win_right; - else if (key == "g1") parsedKey = Key::g1; - else if (key == "g2") parsedKey = Key::g2; - else if (key == "g3") parsedKey = Key::g3; - else if (key == "g4") parsedKey = Key::g4; - else if (key == "g5") parsedKey = Key::g5; - else if (key == "g6") parsedKey = Key::g6; - else if (key == "g7") parsedKey = Key::g7; - else if (key == "g8") parsedKey = Key::g8; - else if (key == "g9") parsedKey = Key::g9; - else return false; - return getKeyAddress(parsedKey, keyAddress); +bool Keyboard::parseKey(const std::string& key_string, Key& key) +{ + auto it = keyNameMap.find(key_string); + if (it != std::end(keyNameMap)) + { + key = it->second; + return true; + } + return false; } -bool Keyboard::parseKeyGroup(std::string key, KeyGroup &keyGroup) { - if (key == "logo") keyGroup = KeyGroup::logo; - else if (key == "indicators") keyGroup = KeyGroup::indicators; - else if (key == "multimedia") keyGroup = KeyGroup::multimedia; - else if (key == "fkeys") keyGroup = KeyGroup::fkeys; - else if (key == "modifiers") keyGroup = KeyGroup::modifiers; - else if (key == "arrows") keyGroup = KeyGroup::arrows; - else if (key == "numeric") keyGroup = KeyGroup::numeric; - else if (key == "functions") keyGroup = KeyGroup::functions; - else if (key == "keys") keyGroup = KeyGroup::keys; - else if (key == "gkeys") keyGroup = KeyGroup::gkeys; - else return false; - return true; +bool Keyboard::parseKeyGroup(const std::string& key, KeyGroup& keyGroup) +{ + if (key == "logo") + keyGroup = KeyGroup::logo; + else if (key == "indicators") + keyGroup = KeyGroup::indicators; + else if (key == "multimedia") + keyGroup = KeyGroup::multimedia; + else if (key == "fkeys") + keyGroup = KeyGroup::fkeys; + else if (key == "modifiers") + keyGroup = KeyGroup::modifiers; + else if (key == "arrows") + keyGroup = KeyGroup::arrows; + else if (key == "numeric") + keyGroup = KeyGroup::numeric; + else if (key == "functions") + keyGroup = KeyGroup::functions; + else if (key == "keys") + keyGroup = KeyGroup::keys; + else if (key == "gkeys") + keyGroup = KeyGroup::gkeys; + else + return false; + return true; } -bool Keyboard::parseColor(std::string color, KeyColors &colors) { - if (color.length() == 2) color = color + "0000"; // For G610 - if (color.length() != 6) return false; - colors.red = std::stoul("0x"+color.substr(0,2), nullptr, 16); - colors.green = std::stoul("0x"+color.substr(2,2), nullptr, 16); - colors.blue = std::stoul("0x"+color.substr(4,2), nullptr, 16); - return true; +bool Keyboard::parseColor(const std::string& color_text, KeyColors& color) +{ + std::string color_text_internal = color_text; + if (color_text_internal.length() == 2) + color_text_internal = color_text_internal + "0000"; // For G610 + if (color_text_internal.length() != 6) + return false; + color.red = std::stoul("0x" + color_text_internal.substr(0, 2), nullptr, 16); + color.green = std::stoul("0x" + color_text_internal.substr(2, 2), nullptr, 16); + color.blue = std::stoul("0x" + color_text_internal.substr(4, 2), nullptr, 16); + return true; } -bool Keyboard::parseSpeed(std::string speed, uint8_t &speedValue) { - if (speed.length() == 1) speed = speed + "0"; - if (speed.length() != 2) return false; - speedValue = std::stoul("0x"+speed, nullptr, 16); - return true; +bool Keyboard::parseSpeed(const std::string& speed, uint8_t& speedValue) +{ + std::string speed_internal = speed; + if (speed_internal.length() == 1) + speed_internal = speed_internal + "0"; + if (speed_internal.length() != 2) + return false; + speedValue = std::stoul("0x" + speed_internal, nullptr, 16); + return true; } -bool Keyboard::sendDataInternal(unsigned char *data, uint16_t data_size) { - if (m_isAttached == false) return false; - int r; - if (data_size > 20) r = libusb_control_transfer(dev_handle, 0x21, 0x09, 0x0212, 1, data, data_size, 2000); - else r = libusb_control_transfer(dev_handle, 0x21, 0x09, 0x0211, 1, data, data_size, 2000); - usleep(1000); - if (r < 0) return false; - return true; +bool Keyboard::sendDataInternal(const byte_buffer_t& data) +{ + if (m_isAttached == false) + return false; + int r; + if (data.size() > 20) + r = libusb_control_transfer(dev_handle, 0x21, 0x09, 0x0212, 1, const_cast(data.data()), data.size(), 2000); + else + r = libusb_control_transfer(dev_handle, 0x21, 0x09, 0x0211, 1, const_cast(data.data()), data.size(), 2000); + usleep(1000); + if (r < 0) + return false; + return true; } -bool Keyboard::populateAddressGroupInternal(KeyAddressGroup addressGroup, unsigned char *data) { - switch (kbdProtocol) { - case KeyboardProtocol::generic: - switch (addressGroup) { - case KeyAddressGroup::logo: - data[0] = 0x11; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0c; // Base address - data[3] = 0x3a; // Base address - data[4] = 0x00; // Base address - data[5] = 0x10; // Base address - data[6] = 0x00; // Base address - data[7] = 0x01; // Base address - break; - case KeyAddressGroup::indicators: - data[0] = 0x12; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0c; // Base address - data[3] = 0x3a; // Base address - data[4] = 0x00; // Base address - data[5] = 0x40; // Base address - data[6] = 0x00; // Base address - data[7] = 0x05; // Base address - break; - case KeyAddressGroup::multimedia: - data[0] = 0x12; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0c; // Base address - data[3] = 0x3a; // Base address - data[4] = 0x00; // Base address - data[5] = 0x02; // Base address - data[6] = 0x00; // Base address - data[7] = 0x05; // Base address - break; - case KeyAddressGroup::keys: - data[0] = 0x12; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0c; // Base address - data[3] = 0x3a; // Base address - data[4] = 0x00; // Base address - data[5] = 0x01; // Base address - data[6] = 0x00; // Base address - data[7] = 0x0e; // Base address - break; - default: - return false; - break; - } - break; - case KeyboardProtocol::g910: // gkeys and mkeys seem not changeable - switch (addressGroup) { - case KeyAddressGroup::logo: - data[0] = 0x11; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0f; // Base address - data[3] = 0x3a; // Base address - data[4] = 0x00; // Base address - data[5] = 0x10; // Base address - data[6] = 0x00; // Base address - data[7] = 0x02; // Base address - break; - case KeyAddressGroup::indicators: - data[0] = 0x12; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0c; // Base address - data[3] = 0x3a; // Base address - data[4] = 0x00; // Base address - data[5] = 0x40; // Base address - data[6] = 0x00; // Base address - data[7] = 0x05; // Base address - break; - case KeyAddressGroup::keys: - data[0] = 0x12; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0f; // Base address - data[3] = 0x3d; // Base address - data[4] = 0x00; // Base address - data[5] = 0x01; // Base address - data[6] = 0x00; // Base address - data[7] = 0x0e; // Base address - break; - case KeyAddressGroup::gkeys: - data[0] = 0x12; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0f; // Base address - data[3] = 0x3e; // Base address - data[4] = 0x00; // Base address - data[5] = 0x04; // Base address - data[6] = 0x00; // Base address - data[7] = 0x09; // Base address - break; - default: - return false; - break; - } - break; - default: - return false; - break; - } - return true; +Keyboard::byte_buffer_t Keyboard::getKeyGroupAddress(KeyboardProtocol kbdProtocol, KeyAddressGroup addressGroup) +{ + switch (kbdProtocol) + { + case KeyboardProtocol::generic: + switch (addressGroup) + { + case KeyAddressGroup::logo: + return { 0x11, 0xff, 0x0c, 0x3a, 0x00, 0x10, 0x00, 0x01 }; + case KeyAddressGroup::indicators: + return { 0x12, 0xff, 0x0c, 0x3a, 0x00, 0x40, 0x00, 0x05 }; + case KeyAddressGroup::multimedia: + return { 0x12, 0xff, 0x0c, 0x3a, 0x00, 0x02, 0x00, 0x05 }; + case KeyAddressGroup::keys: + return { 0x12, 0xff, 0x0c, 0x3a, 0x00, 0x01, 0x00, 0x0e }; + case KeyAddressGroup::gkeys: + return { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; // weird, but this is what happens with the original code + } + + case KeyboardProtocol::g910: // gkeys and mkeys seem not changeable + switch (addressGroup) + { + case KeyAddressGroup::logo: + return { 0x11, 0xff, 0x0f, 0x3a, 0x00, 0x10, 0x00, 0x02 }; + case KeyAddressGroup::indicators: + return { 0x12, 0xff, 0x0c, 0x3a, 0x00, 0x40, 0x00, 0x05 }; + case KeyAddressGroup::keys: + return { 0x12, 0xff, 0x0f, 0x3d, 0x00, 0x01, 0x00, 0x0e }; + case KeyAddressGroup::gkeys: + return { 0x12, 0xff, 0x0f, 0x3e, 0x00, 0x04, 0x00, 0x09 }; + case KeyAddressGroup::multimedia: + return { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; // weird, but this is what happens with the original code + } + } + + assert(false); // can't get to here + + return { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; } -bool Keyboard::populateFXAddressInternal(unsigned char *data) { - switch (kbdProtocol) { - case KeyboardProtocol::generic: - data[0] = 0x11; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0d; // Base address - data[3] = 0x3c; // Base address - break; - case KeyboardProtocol::g910: - data[0] = 0x11; // Base address - data[1] = 0xff; // Base address - data[2] = 0x10; // Base address - data[3] = 0x3c; // Base address - break; - default: - return false; - break; - } - return true; +Keyboard::byte_buffer_t Keyboard::getFxAddress(KeyboardProtocol protocol) +{ + switch (protocol) + { + case KeyboardProtocol::generic: + return { 0x11, 0xff, 0x0d, 0x3c }; + case KeyboardProtocol::g910: + return { 0x11, 0xff, 0x10, 0x3c }; + default:; + } + return {}; } -bool Keyboard::setKeysInternal(KeyAddressGroup addressGroup, KeyValue keyValues[], size_t keyValueCount) { - bool retval = false; - int data_size; - if (addressGroup == KeyAddressGroup::logo) data_size = 20; - else data_size = 64; - unsigned char *data = new unsigned char[data_size]; - const size_t maxKeyValueCount = (data_size - 8) / 4; - populateAddressGroupInternal(addressGroup, data); - for(size_t i = 0; i < maxKeyValueCount; i++) { - if (i < keyValueCount) { - data[8 + i * 4 + 0] = keyValues[i].key.id; - data[8 + i * 4 + 1] = keyValues[i].colors.red; - data[8 + i * 4 + 2] = keyValues[i].colors.green; - data[8 + i * 4 + 3] = keyValues[i].colors.blue; - } else { - data[8 + i * 4 + 0] = 0x00; - data[8 + i * 4 + 1] = 0x00; - data[8 + i * 4 + 2] = 0x00; - data[8 + i * 4 + 3] = 0x00; - } - } - retval = sendDataInternal(data, data_size); - delete[] data; - return retval; +// this method should only be called with keys of the same address group.. assert below +bool Keyboard::setKeysInternal(const KeyValueArray& keyValues) +{ + if (keyValues.empty()) + { + return false; + } + + + for ( const auto& keyValue : keyValues) + { + assert( helper::keyToKeyAddressGroup(keyValue.key) == helper::keyToKeyAddressGroup(keyValues.front().key) ); + } + + auto split = [](const byte_buffer_t& buf, unsigned int batch_size) -> std::vector { + std::vector buffers; + auto remaining_bytes = buf.size(); + auto it = std::begin(buf); + while (remaining_bytes > 0) + { + auto current_batch_size = remaining_bytes > batch_size ? batch_size : remaining_bytes; + buffers.push_back({ it, std::next(it, current_batch_size) }); + it += current_batch_size; + remaining_bytes -= current_batch_size; + } + return buffers; + }; + + KeyAddressGroup addressGroup = helper::keyToKeyAddressGroup(keyValues.front().key); + byte_buffer_t header{ getKeyGroupAddress(kbdProtocol, addressGroup) }; + byte_buffer_t key_stream{ helper::keyValuesToBytes(keyValues) }; + + const auto send_size = addressGroup == KeyAddressGroup::logo ? 20 : 64; + const auto batch_size = send_size - header.size(); + const auto batches = split(key_stream, batch_size); + for (auto batch : batches) + { + batch.insert(std::begin(batch), std::begin(header), std::end(header)); + batch.resize(send_size, 0x00); // pad to size + sendDataInternal(batch); + } + + return true; +} +bool Keyboard::setPowerOnEffect(PowerOnEffect powerOnEffect) +{ + auto powerOnEffectCommand = [this](uint8_t effect) -> byte_buffer_t { + switch (kbdProtocol) + { + case KeyboardProtocol::generic: + return { 0x11, 0xff, 0x0d, 0x5a, 0x00, 0x01, effect }; + case KeyboardProtocol::g910: + return { 0x11, 0xff, 0x10, 0x5e, 0x00, 0x01, effect }; + } + return {}; + }; + + byte_buffer_t data{ powerOnEffectCommand(static_cast(powerOnEffect)) }; + data.resize(20, 0x00); + + return sendDataInternal(data); } -bool Keyboard::setPowerOnEffect(PowerOnEffect powerOnEffect) { - bool retval = false; - int data_size = 20; - unsigned char *data = new unsigned char[data_size]; - switch (kbdProtocol) { - case KeyboardProtocol::generic: - data[0] = 0x11; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0d; // Base address - data[3] = 0x5a; // Base address - data[4] = 0x00; // Base address - data[5] = 0x01; // Base address - case KeyboardProtocol::g910: - data[0] = 0x11; // Base address - data[1] = 0xff; // Base address - data[2] = 0x10; // Base address - data[3] = 0x5e; // Base address - data[4] = 0x00; // Base address - data[5] = 0x01; // Base address - } - switch (powerOnEffect) { - case PowerOnEffect::rainbow: - data[6] = 0x01; - break; - case PowerOnEffect::color: - data[6] = 0x02; - break; - } - for(int i = 7; i < data_size; i++) data[i] = 0x00; - retval = sendDataInternal(data, data_size); - delete[] data; - return retval; +bool Keyboard::setKey(KeyValue keyValue) +{ + return setKeysInternal(KeyValueArray{ keyValue }); } -bool Keyboard::setKey(KeyValue keyValue) { - bool retval = false; - unsigned char *data; - int data_size; - if (keyValue.key.addressGroup == KeyAddressGroup::logo) { - data_size = 20; - data = new unsigned char[data_size]; - populateAddressGroupInternal(keyValue.key.addressGroup, data); - } else { - data_size = 64; - data = new unsigned char[data_size]; - populateAddressGroupInternal(keyValue.key.addressGroup, data); - } - data[8] = keyValue.key.id; - data[9] = keyValue.colors.red; - data[10] = keyValue.colors.green; - data[11] = keyValue.colors.blue; - for(int i = 12; i < data_size; i++) data[i] = 0x00; - retval = sendDataInternal(data, data_size); - delete[] data; - return retval; +bool Keyboard::setKeys(const KeyValueArray& keyValues) +{ + std::map valuesMap; + for (const auto& keyValue : keyValues) + { + valuesMap[helper::keyToKeyAddressGroup(keyValue.key)].push_back(keyValue); + } + for (const auto& x : valuesMap) + { + setKeysInternal(x.second); + } + return true; } -bool Keyboard::setKey(Key key, KeyColors colors) { - KeyValue keyValue; - getKeyAddress(key, keyValue.key); - keyValue.colors = colors; - return setKey(keyValue); +bool Keyboard::setAllKeys(KeyColors color) // shouldn't this function simply call fx-color instead? +{ + // return setFx(FxType::Color, color); // alternative to below + + // clang-format off + return setGroupKeys(KeyGroup::arrows, color) && + setGroupKeys(KeyGroup::fkeys, color) && + setGroupKeys(KeyGroup::functions, color) && + setGroupKeys(KeyGroup::gkeys, color) && + setGroupKeys(KeyGroup::indicators, color) && + setGroupKeys(KeyGroup::keys, color) && + setGroupKeys(KeyGroup::logo, color) && + setGroupKeys(KeyGroup::modifiers, color) && + setGroupKeys(KeyGroup::multimedia, color) && + setGroupKeys(KeyGroup::numeric, color); + // clang-format on } -bool Keyboard::setKeys(KeyValue keyValue[], size_t keyValueCount) { - const size_t maxLogoKeys = 5; - const size_t maxIndicatorsKeys = 25; - const size_t maxMultimediaKeys = 25; - const size_t maxKeys = 200; - const size_t maxGKeys = 25; - size_t logoCount = 0; - size_t indicatorsCount = 0; - size_t multimediaCount = 0; - size_t keysCount = 0; - size_t gkeysCount = 0; - KeyValue logo[maxLogoKeys]; - KeyValue indicators[maxIndicatorsKeys]; - KeyValue multimedia[maxMultimediaKeys]; - KeyValue keys[maxKeys]; - KeyValue gkeys[maxGKeys]; - - for (size_t i = 0; i < keyValueCount; i++) { - if(keyValue[i].key.addressGroup == KeyAddressGroup::logo && logoCount <= maxLogoKeys) { - logo[logoCount] = keyValue[i]; - logoCount++; - } else if(keyValue[i].key.addressGroup == KeyAddressGroup::indicators && indicatorsCount <= maxIndicatorsKeys) { - indicators[indicatorsCount] = keyValue[i]; - indicatorsCount++; - } else if(keyValue[i].key.addressGroup == KeyAddressGroup::multimedia && multimediaCount <= maxMultimediaKeys) { - multimedia[multimediaCount] = keyValue[i]; - multimediaCount++; - } else if(keyValue[i].key.addressGroup == KeyAddressGroup::keys && keysCount <= maxKeys) { - keys[keysCount] = keyValue[i]; - keysCount++; - } else if(keyValue[i].key.addressGroup == KeyAddressGroup::gkeys && gkeysCount <= maxGKeys) { - gkeys[gkeysCount] = keyValue[i]; - gkeysCount++; - } - } - - if (logoCount > 0) setKeysInternal(KeyAddressGroup::logo, logo, logoCount); - - if (indicatorsCount > 0) setKeysInternal(KeyAddressGroup::indicators, indicators, indicatorsCount); - - if (multimediaCount > 0) setKeysInternal(KeyAddressGroup::multimedia, multimedia, multimediaCount); - - if (keysCount > 0) { - const size_t maxKeyValueCount = 14; - for (size_t i = 0; i < keysCount; i = i + maxKeyValueCount) { - KeyValue keysBlock[maxKeyValueCount]; - size_t keysBlockCount = 0; - for (size_t j = 0; j < maxKeyValueCount; j++) { - if((i + j) < keysCount ) { - keysBlock[j] = keys[i + j]; - keysBlockCount++; - } - } - setKeysInternal(KeyAddressGroup::keys, keysBlock, keysBlockCount); - } - } - - if (gkeysCount > 0) setKeysInternal(KeyAddressGroup::gkeys, gkeys, gkeysCount); - - return true; +bool Keyboard::setGroupKeys(KeyGroup keyGroup, KeyColors color) +{ + KeyValueArray keyValues; + const KeyArray& keyAddressArray = keyGroupArrayMap.find(keyGroup)->second; + for (auto& key : keyAddressArray) + { + keyValues.push_back({ key, color }); + } + return setKeysInternal(keyValues); } -bool Keyboard::setAllKeys(KeyColors colors) { - KeyValue keyValues[127]; - for (int i = 0; i < 127; i++) { - getKeyAddress((Key)i, keyValues[i].key); - keyValues[i].colors = colors; - } - setKeys(keyValues, 127); - return true; +bool Keyboard::setFx(FxType fxType, uint8_t speed, KeyColors color) +{ + byte_buffer_t buf{ getFxAddress(kbdProtocol) }; + + switch (fxType) + { + case FxType::BreathingKeys: + { + helper::append(buf, { 0x00, 0x02, color.red, color.green, color.blue, speed, 0x10, 0x00, 0x64 }); + } + break; + + case FxType::BreathingLogo: + { + helper::append(buf, { 0x01, 0x02, color.red, color.green, color.blue, speed, 0x10, 0x00, 0x64 }); + } + break; + + case FxType::ColorKeys: + { + helper::append(buf, { 0x00, 0x01, color.red, color.green, color.blue, 0x02 }); + } + break; + + case FxType::ColorLogo: + { + helper::append(buf, { 0x01, 0x01, color.red, color.green, color.blue, 0x02 }); + } + break; + + case FxType::ColorCycleKeys: + { + helper::append(buf, { 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, speed, 0x00, 0x00, 0x64 }); + } + break; + + case FxType::ColorCycleLogo: + { + helper::append(buf, { 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, speed, 0x00, 0x00, 0x64 }); + } + break; + + case FxType::CWaveKeys: + { + helper::append(buf, { 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x03, 0x64, speed }); + } + break; + + case FxType::HWaveKeys: + { + helper::append(buf, { 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x01, 0x64, speed }); + } + break; + + case FxType::VWaveKeys: + { + helper::append(buf, { 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x02, 0x64, speed }); + } + break; + } + + buf.resize(20, 0x00); + + return sendDataInternal(buf); } -bool Keyboard::setGroupKeys(KeyGroup keyGroup, KeyColors colors) { - KeyValue keyValues[54]; - int keyValuesCount = 0; - switch (keyGroup) { - case KeyGroup::logo: - for (int i = 0; i < 2; i++) { - getKeyAddress((Key)i, keyValues[i].key); - keyValues[i].colors = colors; - keyValuesCount++; - } - setKeys(keyValues, keyValuesCount); - break; - case KeyGroup::indicators: - for (int i = 2; i < 7; i++) { - getKeyAddress((Key)i, keyValues[i - 2].key); - keyValues[i - 2].colors = colors; - keyValuesCount++; - } - setKeys(keyValues, keyValuesCount); - break; - case KeyGroup::multimedia: - for (int i = 7; i < 12; i++) { - getKeyAddress((Key)i, keyValues[i - 7].key); - keyValues[i - 7].colors = colors; - keyValuesCount++; - } - setKeys(keyValues, keyValuesCount); - break; - case KeyGroup::fkeys: - for (int i = 12; i < 24; i++) { - getKeyAddress((Key)i, keyValues[i - 12].key); - keyValues[i - 12].colors = colors; - keyValuesCount++; - } - setKeys(keyValues, keyValuesCount); - break; - case KeyGroup::modifiers: - for (int i = 24; i < 33; i++) { - getKeyAddress((Key)i, keyValues[i - 24].key); - keyValues[i - 24].colors = colors; - keyValuesCount++; - } - setKeys(keyValues, keyValuesCount); - break; - case KeyGroup::arrows: - for (int i = 33; i < 37; i++) { - getKeyAddress((Key)i, keyValues[i - 33].key); - keyValues[i - 33].colors = colors; - keyValuesCount++; - } - setKeys(keyValues, keyValuesCount); - break; - case KeyGroup::numeric: - for (int i = 37; i < 54; i++) { - getKeyAddress((Key)i, keyValues[i - 37].key); - keyValues[i - 37].colors = colors; - keyValuesCount++; - } - setKeys(keyValues, keyValuesCount); - break; - case KeyGroup::functions: - for (int i = 54; i < 64; i++) { - getKeyAddress((Key)i, keyValues[i - 54].key); - keyValues[i - 54].colors = colors; - keyValuesCount++; - } - setKeys(keyValues, keyValuesCount); - break; - case KeyGroup::keys: - for (int i = 64; i < 118; i++) { - getKeyAddress((Key)i, keyValues[i - 64].key); - keyValues[i - 64].colors = colors; - keyValuesCount++; - } - setKeys(keyValues, keyValuesCount); - break; - case KeyGroup::gkeys: - for (int i = 118; i < 127; i++) { - getKeyAddress((Key)i, keyValues[i - 118].key); - keyValues[i - 118].colors = colors; - keyValuesCount++; - } - setKeys(keyValues, keyValuesCount); - break; - } - return true; +bool Keyboard::setFXColorKeys(KeyColors color) +{ + return setFx(FxType::ColorKeys, 0, color); } -bool Keyboard::setFXColorKeys(KeyColors colors) { - bool retval = false; - int data_size = 20; - unsigned char *data = new unsigned char[data_size]; - - // Keys - populateFXAddressInternal(data); - data[4] = 0x00; // Keys - data[5] = 0x01; // Effect - data[6] = colors.red; - data[7] = colors.green; - data[8] = colors.blue; - data[9] = 0x02; - for(int i = 10; i < data_size; i++) data[i] = 0x00; - retval = sendDataInternal(data, data_size); - - delete[] data; - return retval; +bool Keyboard::setFXColorLogo(KeyColors color) +{ + return setFx(FxType::ColorLogo, 0, color); } -bool Keyboard::setFXColorLogo(KeyColors colors) { - bool retval = false; - int data_size = 20; - unsigned char *data = new unsigned char[data_size]; - - // Logo - populateFXAddressInternal(data); - data[4] = 0x01; // Logo - data[5] = 0x01; // Effect - data[6] = colors.red; - data[7] = colors.green; - data[8] = colors.blue; - data[9] = 0x02; - for(int i = 10; i < data_size; i++) data[i] = 0x00; - retval = sendDataInternal(data, data_size); - - delete[] data; - return retval; +bool Keyboard::setFXBreathingKeys(KeyColors color, uint8_t speed) +{ + return setFx(FxType::BreathingKeys, speed, color); } -bool Keyboard::setFXBreathingKeys(KeyColors colors, uint8_t speed) { - bool retval = false; - int data_size = 20; - unsigned char *data = new unsigned char[data_size]; - - // Keys - populateFXAddressInternal(data); - data[4] = 0x00; // Keys - data[5] = 0x02; // Effect - data[6] = colors.red; - data[7] = colors.green; - data[8] = colors.blue; - data[9] = speed; // Speed - data[10] = 0x10; // ??? - data[11] = 0x00; - data[12] = 0x64; - for(int i = 13; i < data_size; i++) data[i] = 0x00; - retval = sendDataInternal(data, data_size); - - delete[] data; - return retval; +bool Keyboard::setFXBreathingLogo(KeyColors color, uint8_t speed) +{ + return setFx(FxType::BreathingLogo, speed, color); } -bool Keyboard::setFXBreathingLogo(KeyColors colors, uint8_t speed) { - bool retval = false; - int data_size = 20; - unsigned char *data = new unsigned char[data_size]; - - // Logo - populateFXAddressInternal(data); - data[4] = 0x01; // Logo - data[5] = 0x02; // Effect - data[6] = colors.red; - data[7] = colors.green; - data[8] = colors.blue; - data[9] = speed; // Speed - data[10] = 0x10; // ??? - data[11] = 0x00; - data[12] = 0x64; - for(int i = 13; i < data_size; i++) data[i] = 0x00; - retval = sendDataInternal(data, data_size); - - delete[] data; - return retval; +bool Keyboard::setFXColorCycleKeys(uint8_t speed) +{ + return setFx(FxType::ColorCycleKeys, speed); } -bool Keyboard::setFXColorCycleKeys(uint8_t speed) { - bool retval = false; - int data_size = 20; - unsigned char *data = new unsigned char[data_size]; - - // Keys - populateFXAddressInternal(data); - data[4] = 0x00; // Keys - data[5] = 0x03; // Effect - data[6] = 0x00; - data[7] = 0x00; - data[8] = 0x00; - data[9] = 0x00; - data[10] = 0x00; - data[11] = speed; // Speed - data[12] = 0x00; // ??? - data[13] = 0x00; - data[14] = 0x64; - for(int i = 15; i < data_size; i++) data[i] = 0x00; - retval = sendDataInternal(data, data_size); - - delete[] data; - return retval; +bool Keyboard::setFXColorCycleLogo(uint8_t speed) +{ + return setFx(FxType::ColorCycleLogo, speed); } -bool Keyboard::setFXColorCycleLogo(uint8_t speed) { - bool retval = false; - int data_size = 20; - unsigned char *data = new unsigned char[data_size]; - - // Logo - populateFXAddressInternal(data); - data[4] = 0x01; // Logo - data[5] = 0x03; // Effect - data[6] = 0x00; - data[7] = 0x00; - data[8] = 0x00; - data[9] = 0x00; - data[10] = 0x00; - data[11] = speed; // Speed - data[12] = 0x00; // ??? - data[13] = 0x00; - data[14] = 0x64; - for(int i = 15; i < data_size; i++) data[i] = 0x00; - retval = sendDataInternal(data, data_size); - - delete[] data; - return retval; +bool Keyboard::setFXHWaveKeys(uint8_t speed) +{ + return setFx(FxType::HWaveKeys, speed); } -bool Keyboard::setFXHWaveKeys(uint8_t speed) { - bool retval = false; - int data_size = 20; - unsigned char *data = new unsigned char[data_size]; - - // Keys - populateFXAddressInternal(data); - data[4] = 0x00; // Keys - data[5] = 0x04; // Effect - data[6] = 0x00; - data[7] = 0x00; - data[8] = 0x00; - data[9] = 0x00; - data[10] = 0x00; - data[11] = 0x00; - data[12] = 0x88; - data[13] = 0x01; - data[14] = 0x64; - data[15] = speed; // Speed - for(int i = 16; i < data_size; i++) data[i] = 0x00; - retval = sendDataInternal(data, data_size); - - delete[] data; - return retval; +bool Keyboard::setFXVWaveKeys(uint8_t speed) +{ + return setFx(FxType::VWaveKeys, speed); } -bool Keyboard::setFXVWaveKeys(uint8_t speed) { - bool retval = false; - int data_size = 20; - unsigned char *data = new unsigned char[data_size]; - - // Keys - populateFXAddressInternal(data); - data[4] = 0x00; // Keys - data[5] = 0x04; // Effect - data[6] = 0x00; - data[7] = 0x00; - data[8] = 0x00; - data[9] = 0x00; - data[10] = 0x00; - data[11] = 0x00; - data[12] = 0x88; - data[13] = 0x02; - data[14] = 0x64; - data[15] = speed; // Speed - for(int i = 16; i < data_size; i++) data[i] = 0x00; - retval = sendDataInternal(data, data_size); - - delete[] data; - return retval; -} - -bool Keyboard::setFXCWaveKeys(uint8_t speed) { - bool retval = false; - int data_size = 20; - unsigned char *data = new unsigned char[data_size]; - - // Keys - populateFXAddressInternal(data); - data[4] = 0x00; // Keys - data[5] = 0x04; // Effect - data[6] = 0x00; - data[7] = 0x00; - data[8] = 0x00; - data[9] = 0x00; - data[10] = 0x00; - data[11] = 0x00; - data[12] = 0x88; - data[13] = 0x03; - data[14] = 0x64; - data[15] = speed; // Speed - for(int i = 16; i < data_size; i++) data[i] = 0x00; - retval = sendDataInternal(data, data_size); - - delete[] data; - return retval; +bool Keyboard::setFXCWaveKeys(uint8_t speed) +{ + return setFx(FxType::CWaveKeys, speed); } diff --git a/src/classes/Keyboard.h b/src/classes/Keyboard.h index 5571e4e..58a197c 100644 --- a/src/classes/Keyboard.h +++ b/src/classes/Keyboard.h @@ -1,82 +1,376 @@ #ifndef DEF_KEYBOARD #define DEF_KEYBOARD -#include #include -class Keyboard { - - public: - - enum class KeyboardProtocol { generic, g910 }; - enum class PowerOnEffect { rainbow, color }; - enum class KeyAddressGroup { logo, indicators, multimedia, keys, gkeys }; - enum class Key { // 127 items - logo, logo2, - caps, num, scroll, game, backlight, - mute, play, stop, prev, next, - f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, - shift_left, ctrl_left, win_left, alt_left, alt_right, win_right, ctrl_right, shift_right, menu, - arrow_top, arrow_left, arrow_bottom, arrow_right, - num_1, num_2, num_3, num_4, num_5, num_6, num_7, num_8, num_9, num_0, num_dot, num_enter, num_plus, num_minus, num_asterisk, num_slash, num_lock, - esc, scroll_lock, - insert, del, home, end, page_up, page_down, print_screen, pause_break, - n1, n2, n3, n4, n5, n6, n7, n8, n9, n0, - tab, caps_lock, space, backspace, enter, - a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, - tilde, minus, equal, - open_bracket, close_bracket, backslash, - semicolon, quote, dollar, - intl_backslash, comma, period, slash, - g1, g2, g3, g4, g5, g6, g7, g8, g9 - }; - enum class KeyGroup { logo, indicators, multimedia, fkeys, modifiers, arrows, numeric, functions, keys, gkeys}; - - struct KeyColors { uint8_t red; uint8_t green; uint8_t blue; }; - struct KeyAddress { KeyAddressGroup addressGroup; uint8_t id; }; - struct KeyValue { KeyAddress key; KeyColors colors; }; - - bool isAttached(); - bool attach(); - bool detach(); - bool commit(); - bool getKeyAddress(Key key, KeyAddress &keyAddress); - bool parsePowerOnEffect(std::string effect, PowerOnEffect &powerOnEffect); - bool parseKey(std::string key, KeyAddress &keyAddress); - bool parseKeyGroup(std::string key, KeyGroup &keyGroup); - bool parseColor(std::string color, KeyColors &colors); - bool parseSpeed(std::string speed, uint8_t &speedValue); - bool setPowerOnEffect(PowerOnEffect powerOnEffect); - bool setKey(KeyValue keyValue); - bool setKey(Key key, KeyColors colors); - bool setKeys(KeyValue keyValue[], size_t keyValueCount); - bool setAllKeys(KeyColors colors); - bool setGroupKeys(KeyGroup keyGroup, KeyColors colors); - bool setFXColorKeys(KeyColors colors); - bool setFXColorLogo(KeyColors colors); - bool setFXBreathingKeys(KeyColors colors, uint8_t speed); - bool setFXBreathingLogo(KeyColors colors, uint8_t speed); - bool setFXColorCycleKeys(uint8_t speed); - bool setFXColorCycleLogo(uint8_t speed); - bool setFXHWaveKeys(uint8_t speed); - bool setFXVWaveKeys(uint8_t speed); - bool setFXCWaveKeys(uint8_t speed); - - - private: - - bool m_isAttached = false; - bool m_isKernellDetached = false; - KeyboardProtocol kbdProtocol = KeyboardProtocol::generic; - libusb_device **devs; - libusb_device_handle *dev_handle; - libusb_context *ctx = NULL; - - bool populateAddressGroupInternal(KeyAddressGroup addressGroup, unsigned char *data); - bool populateFXAddressInternal(unsigned char *data); - bool sendDataInternal(unsigned char *data, uint16_t data_size); - bool setKeysInternal(KeyAddressGroup addressGroup, KeyValue keyValues[], size_t keyValueCount); - +#include +#include +#include +#include +#include + + + +class Keyboard +{ +public: + // clang-format off + enum class KeyboardProtocol { generic, g910 }; + enum class PowerOnEffect : uint8_t { rainbow = 0x01, color }; + + enum class FxType { BreathingKeys, BreathingLogo, ColorKeys, ColorLogo, ColorCycleKeys, ColorCycleLogo, CWaveKeys, HWaveKeys, VWaveKeys }; + + enum class KeyAddressGroup : uint8_t + { + logo = 0x00, + indicators, multimedia, gkeys, keys + }; + + enum class Key : uint16_t + { + // logo + logo = static_cast(KeyAddressGroup::logo) << 8 | 0x01, + logo2, + + // indicators + backlight = static_cast(KeyAddressGroup::indicators) << 8| 0x01, + game, caps, scroll, num, + + // multimedia + next = static_cast(KeyAddressGroup::multimedia) << 8 | 0xb5, + prev, stop, + play = static_cast(KeyAddressGroup::multimedia) << 8 | 0xcd, + mute = static_cast(KeyAddressGroup::multimedia) << 8 | 0xe2, + + // gkeys + g1 = static_cast(KeyAddressGroup::gkeys) << 8 | 0x01, + g2, g3, g4, g5, g6, g7, g8, g9, + + // keys + a = static_cast(KeyAddressGroup::keys) << 8 | 0x04, + b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, + n1, n2, n3, n4, n5, n6, n7, n8, n9, n0, + enter, esc, backspace, tab, space, minus, equal, open_bracket, close_bracket, + backslash, dollar, semicolon, quote, tilde, comma, period, slash, caps_lock, + f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, + print_screen, scroll_lock, pause_break, insert, home, page_up, del, end, page_down, + arrow_right, arrow_left, arrow_bottom, arrow_top, num_lock, num_slash, num_asterisk, + num_minus, num_plus, num_enter, + num_1, num_2, num_3, num_4, num_5, num_6, num_7, num_8, num_9, num_0, + num_dot, intl_backslash, menu, + + ctrl_left = static_cast(KeyAddressGroup::keys) << 8 | 0xe0, + shift_left, alt_left, win_left, + ctrl_right, shift_right, alt_right, win_right + }; + + + using KeyNameMap_t = std::map; + const KeyNameMap_t keyNameMap = { + { "logo", Key::logo }, + { "logo2", Key::logo2 }, + { "back_light", Key::backlight }, + { "backlight", Key::backlight }, + { "light", Key::backlight }, + { "game_mode", Key::game }, + { "gamemode", Key::game }, + { "game", Key::game }, + { "caps_indicator", Key::caps }, + { "capsindicator", Key::caps }, + { "caps", Key::caps }, + { "scroll_indicator", Key::scroll }, + { "scrollindicator", Key::scroll }, + { "scroll", Key::scroll }, + { "num_indicator", Key::num }, + { "numindicator", Key::num }, + { "num", Key::num }, + { "next", Key::next }, + { "prev", Key::prev }, + { "previous", Key::prev }, + { "stop", Key::stop }, + { "play_pause", Key::play }, + { "playpause", Key::play }, + { "play", Key::play }, + { "mute", Key::mute }, + { "a", Key::a }, + { "b", Key::b }, + { "c", Key::c }, + { "d", Key::d }, + { "e", Key::e }, + { "f", Key::f }, + { "g", Key::g }, + { "h", Key::h }, + { "i", Key::i }, + { "j", Key::j }, + { "k", Key::k }, + { "l", Key::l }, + { "m", Key::m }, + { "n", Key::n }, + { "o", Key::o }, + { "p", Key::p }, + { "q", Key::q }, + { "r", Key::r }, + { "s", Key::s }, + { "t", Key::t }, + { "u", Key::u }, + { "v", Key::v }, + { "w", Key::w }, + { "x", Key::x }, + { "z", Key::z }, + { "y", Key::y }, + { "1", Key::n1 }, + { "one", Key::n1 }, + { "2", Key::n2 }, + { "two", Key::n2 }, + { "3", Key::n3 }, + { "three", Key::n3 }, + { "4", Key::n4 }, + { "four", Key::n4 }, + { "5", Key::n5 }, + { "five", Key::n5 }, + { "6", Key::n6 }, + { "six", Key::n6 }, + { "7", Key::n7 }, + { "seven", Key::n7 }, + { "8", Key::n8 }, + { "eight", Key::n8 }, + { "9", Key::n9 }, + { "nine", Key::n9 }, + { "0", Key::n0 }, + { "zero", Key::n0 }, + { "enter", Key::enter }, + { "esc", Key::esc }, + { "escape", Key::esc }, + { "back", Key::backspace }, + { "backspace", Key::backspace }, + { "tab", Key::tab }, + { "space", Key::space }, + { "tilde", Key::tilde }, + { "~", Key::tilde }, + { "minus", Key::minus }, + { "-", Key::minus }, + { "equal", Key::equal }, + { "=", Key::equal }, + { "open_bracket", Key::open_bracket }, + { "[", Key::open_bracket }, + { "close_bracket", Key::close_bracket }, + { "]", Key::close_bracket }, + { "backslash", Key::backslash }, + { "\\", Key::backslash }, + { "semicolon", Key::semicolon }, + { ";", Key::semicolon }, + { "quote", Key::quote }, + { "\"", Key::quote }, + { "dollar", Key::dollar }, + { "$", Key::dollar }, + { "comma", Key::comma }, + { ",", Key::comma }, + { "period", Key::period }, + { ".", Key::period }, + { "slash", Key::slash }, + { "/", Key::slash }, + { "caps_lock", Key::caps_lock }, + { "capslock", Key::caps_lock }, + { "f1", Key::f1 }, + { "f2", Key::f2 }, + { "f3", Key::f3 }, + { "f4", Key::f4 }, + { "f5", Key::f5 }, + { "f6", Key::f6 }, + { "f7", Key::f7 }, + { "f8", Key::f8 }, + { "f9", Key::f9 }, + { "f10", Key::f10 }, + { "f11", Key::f11 }, + { "f12", Key::f12 }, + { "print_screen", Key::print_screen }, + { "printscreen", Key::print_screen }, + { "printscr", Key::print_screen }, + { "print", Key::print_screen }, + { "scroll_lock", Key::scroll_lock }, + { "scrolllock", Key::scroll_lock }, + { "pause_break", Key::pause_break }, + { "pausebreak", Key::pause_break }, + { "pause", Key::pause_break }, + { "break", Key::pause_break }, + { "insert", Key::insert }, + { "ins", Key::insert }, + { "home", Key::home }, + { "page_up", Key::page_up }, + { "pageup", Key::page_up }, + { "delete", Key::del }, + { "del", Key::del }, + { "end", Key::end }, + { "page_down", Key::page_down }, + { "pagedown", Key::page_down }, + { "arrow_right", Key::arrow_right }, + { "arrowright", Key::arrow_right }, + { "right", Key::arrow_right }, + { "arrow_left", Key::arrow_left }, + { "arrowleft", Key::arrow_left }, + { "left", Key::arrow_left }, + { "arrow_bottom", Key::arrow_bottom }, + { "arrowbottom", Key::arrow_bottom }, + { "bottom", Key::arrow_bottom }, + { "arrow_top", Key::arrow_top }, + { "arrowtop", Key::arrow_top }, + { "top", Key::arrow_top }, + { "num_lock", Key::num_lock }, + { "numlock", Key::num_lock }, + { "num/", Key::num_slash }, + { "num_slash", Key::num_slash }, + { "numslash", Key::num_slash }, + { "num*", Key::num_asterisk }, + { "num_asterisk", Key::num_asterisk }, + { "numasterisk", Key::num_asterisk }, + { "num-", Key::num_minus }, + { "num_minus", Key::num_minus }, + { "numminus", Key::num_minus }, + { "num+", Key::num_plus }, + { "num_plus", Key::num_plus }, + { "numplus", Key::num_plus }, + { "numenter", Key::num_enter }, + { "num1", Key::num_1 }, + { "num2", Key::num_2 }, + { "num3", Key::num_3 }, + { "num4", Key::num_4 }, + { "num5", Key::num_5 }, + { "num6", Key::num_6 }, + { "num7", Key::num_7 }, + { "num8", Key::num_8 }, + { "num9", Key::num_9 }, + { "num0", Key::num_0 }, + { "num.", Key::num_dot }, + { "num_period", Key::num_dot }, + { "numperiod", Key::num_dot }, + { "intl_backslash", Key::intl_backslash }, + { "<", Key::intl_backslash }, + { "menu", Key::menu }, + { "ctrl_left", Key::ctrl_left }, + { "ctrlleft", Key::ctrl_left }, + { "ctrll", Key::ctrl_left }, + { "shift_left", Key::shift_left }, + { "shiftleft", Key::shift_left }, + { "shiftl", Key::shift_left }, + { "alt_left", Key::alt_left }, + { "altleft", Key::alt_left }, + { "altl", Key::alt_left }, + { "win_left", Key::win_left }, + { "winleft", Key::win_left }, + { "winl", Key::win_left }, + { "meta_left", Key::win_left }, + { "metaleft", Key::win_left }, + { "metal", Key::win_left }, + { "ctrl_right", Key::ctrl_right }, + { "ctrlright", Key::ctrl_right }, + { "ctrlr", Key::ctrl_right }, + { "shift_right", Key::shift_right }, + { "shiftright", Key::shift_right }, + { "shiftr", Key::shift_right }, + { "alt_right", Key::alt_right }, + { "altright", Key::alt_right }, + { "altr", Key::alt_right }, + { "altgr", Key::alt_right }, + { "win_right", Key::win_right }, + { "winright", Key::win_right }, + { "winr", Key::win_right }, + { "meta_right", Key::win_right }, + { "metaright", Key::win_right }, + { "metar", Key::win_right }, + { "g1", Key::g1 }, + { "g2", Key::g2 }, + { "g3", Key::g3 }, + { "g4", Key::g4 }, + { "g5", Key::g5 }, + { "g6", Key::g6 }, + { "g7", Key::g7 }, + { "g8", Key::g8 }, + { "g9", Key::g9 }, + }; + + enum class KeyGroup { logo, indicators, multimedia, fkeys, modifiers, arrows, numeric, functions, keys, gkeys }; + + struct KeyColors { uint8_t red; uint8_t green; uint8_t blue; }; + struct KeyValue { Key key; KeyColors colors; }; + + typedef std::vector byte_buffer_t; + typedef std::vector KeyValueArray; + typedef std::vector KeyArray; + + // clang-format on + + const KeyArray keyGroupLogo = { Key::logo, Key::logo2 }; + const KeyArray keyGroupIndicators = { Key::caps, Key::num, Key::scroll, Key::game, Key::backlight }; + const KeyArray keyGroupMultimedia = { Key::next, Key::prev, Key::stop, Key::play, Key::mute }; + const KeyArray keyGroupFKeys = { Key::f1, Key::f2, Key::f3, Key::f4, Key::f5, Key::f6, Key::f7, Key::f8, Key::f9, Key::f10, Key::f11, Key::f12 }; + const KeyArray keyGroupModifiers = { Key::shift_left, Key::ctrl_left, Key::win_left, Key::alt_left, Key::alt_right, Key::win_right, Key::ctrl_right, Key::shift_right, Key::menu }; + const KeyArray keyGroupArrows = { Key::arrow_top, Key::arrow_left, Key::arrow_bottom, Key::arrow_right }; + const KeyArray keyGroupNumeric = { Key::num_1, Key::num_2, Key::num_3, Key::num_4, Key::num_5, Key::num_6, Key::num_7, Key::num_8, Key::num_9, Key::num_0, Key::num_dot, Key::num_enter, Key::num_plus, Key::num_minus, Key::num_asterisk, Key::num_slash, Key::num_lock }; + const KeyArray keyGroupFunctions = { Key::esc, Key::scroll_lock, + Key::insert, Key::del, Key::home, Key::end, Key::page_up, Key::page_down, Key::print_screen, Key::pause_break, + Key::n1, Key::n2, Key::n3, Key::n4, Key::n5, Key::n6, Key::n7, Key::n8, Key::n9, Key::n0, + Key::tab, Key::caps_lock, Key::space, Key::backspace, Key::enter }; + const KeyArray keyGroupKeys = { Key::a, Key::b, Key::c, Key::d, Key::e, Key::f, Key::g, Key::h, Key::i, Key::j, Key::k, Key::l, Key::m, Key::n, Key::o, Key::p, Key::q, Key::r, Key::s, Key::t, Key::u, Key::v, Key::w, Key::x, Key::y, Key::z, + Key::tilde, Key::minus, Key::equal, + Key::open_bracket, Key::close_bracket, Key::backslash, + Key::semicolon, Key::quote, Key::dollar, + Key::intl_backslash, Key::comma, Key::period, Key::slash }; + const KeyArray keyGroupGKeys = { Key::g1, Key::g2, Key::g3, Key::g4, Key::g5, Key::g6, Key::g7, Key::g8, Key::g9 }; + + const std::map> keyGroupArrayMap = + { + {KeyGroup::logo, std::cref(keyGroupLogo)}, + {KeyGroup::indicators, std::cref(keyGroupIndicators)}, + {KeyGroup::multimedia, std::cref(keyGroupMultimedia)}, + {KeyGroup::fkeys, std::cref(keyGroupFKeys)}, + {KeyGroup::modifiers, std::cref(keyGroupModifiers)}, + {KeyGroup::arrows, std::cref(keyGroupArrows)}, + {KeyGroup::numeric, std::cref(keyGroupNumeric)}, + {KeyGroup::functions, std::cref(keyGroupFunctions)}, + {KeyGroup::keys, std::cref(keyGroupKeys)}, + {KeyGroup::gkeys, std::cref(keyGroupGKeys)} + }; + + bool isAttached(); + bool attach(); + bool detach(); + bool commit(); + + bool parsePowerOnEffect(const std::string& effect, PowerOnEffect& powerOnEffect); + bool parseKey(const std::string& key_string, Key& key); + bool parseKeyGroup(const std::string& key, KeyGroup& keyGroup); + bool parseColor(const std::string& color_text, KeyColors& color); + bool parseSpeed(const std::string& speed, uint8_t& speedValue); + + bool setPowerOnEffect(PowerOnEffect powerOnEffect); + bool setKey(KeyValue keyValue); + bool setKeys(const KeyValueArray& keyValues); + bool setAllKeys(KeyColors color); + bool setGroupKeys(KeyGroup keyGroup, KeyColors color); + bool setFXColorKeys(KeyColors colors); + bool setFXColorLogo(KeyColors colors); + bool setFXBreathingKeys(KeyColors colors, uint8_t speed); + bool setFXBreathingLogo(KeyColors colors, uint8_t speed); + bool setFXColorCycleKeys(uint8_t speed); + bool setFXColorCycleLogo(uint8_t speed); + bool setFXHWaveKeys(uint8_t speed); + bool setFXVWaveKeys(uint8_t speed); + bool setFXCWaveKeys(uint8_t speed); + +private: + bool m_isAttached = false; + bool m_isKernellDetached = false; + KeyboardProtocol kbdProtocol = KeyboardProtocol::generic; + libusb_device** devs; + libusb_device_handle* dev_handle; + libusb_context* ctx = nullptr; + + byte_buffer_t getKeyGroupAddress(KeyboardProtocol kbdProtocol, KeyAddressGroup addressGroup); + byte_buffer_t getFxAddress(KeyboardProtocol protocol); + + bool setFx(FxType fxType, uint8_t speed = 0, KeyColors color = {0,0,0} ); + bool sendDataInternal(const byte_buffer_t& data); + bool setKeysInternal(const KeyValueArray& keyValues); }; #endif diff --git a/src/main.cpp b/src/main.cpp index 3c2c9f0..9e3fcbd 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -20,7 +20,7 @@ void usage() { cout<<" -k key, color :\t\tSet a key"< Date: Wed, 11 Jan 2017 20:25:37 +0100 Subject: [PATCH 041/187] Bug correction in sendDataInternal --- src/classes/Keyboard.cpp | 5 ++++- src/main.cpp | 14 -------------- 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index f107cd5..f5fe9b2 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -504,8 +504,11 @@ bool Keyboard::sendDataInternal(unsigned char *data, uint16_t data_size) { int r; if (data_size > 20) r = libusb_control_transfer(dev_handle, 0x21, 0x09, 0x0212, 1, data, data_size, 2000); else r = libusb_control_transfer(dev_handle, 0x21, 0x09, 0x0211, 1, data, data_size, 2000); - usleep(1000); + usleep(1); if (r < 0) return false; + unsigned char buffer[64]; + int len = 0; + r = libusb_interrupt_transfer(dev_handle, 0x82, buffer, sizeof(buffer), &len, 1); return true; } diff --git a/src/main.cpp b/src/main.cpp index 3c2c9f0..4c2c8ee 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -234,8 +234,6 @@ int setFXColor(string color, bool keys, bool logo) { lg_kbd.attach(); lg_kbd.setGroupKeys(Keyboard::KeyGroup::indicators, colors); lg_kbd.commit(); - lg_kbd.detach(); - lg_kbd.attach(); if(keys) lg_kbd.setFXColorKeys(colors); if(logo) lg_kbd.setFXColorLogo(colors); lg_kbd.detach(); @@ -401,8 +399,6 @@ int parseProfile(istream &is) { if (lg_kbd.parseColor(line, colors) == true) { lg_kbd.setGroupKeys(Keyboard::KeyGroup::indicators, colors); lg_kbd.commit(); - lg_kbd.detach(); - lg_kbd.attach(); if(fxkeys) lg_kbd.setFXColorKeys(colors); if(fxlogo) lg_kbd.setFXColorLogo(colors); } else cout<<"Error on line "< Date: Wed, 11 Jan 2017 20:56:19 +0100 Subject: [PATCH 042/187] possible bug --- src/classes/Keyboard.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index f5fe9b2..b52636c 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -504,7 +504,7 @@ bool Keyboard::sendDataInternal(unsigned char *data, uint16_t data_size) { int r; if (data_size > 20) r = libusb_control_transfer(dev_handle, 0x21, 0x09, 0x0212, 1, data, data_size, 2000); else r = libusb_control_transfer(dev_handle, 0x21, 0x09, 0x0211, 1, data, data_size, 2000); - usleep(1); + usleep(1000); if (r < 0) return false; unsigned char buffer[64]; int len = 0; From 3a19ba6163c95a6bf73566b6a4bb4710db45a960 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sun, 15 Jan 2017 00:33:12 +0100 Subject: [PATCH 043/187] Update systemd service --- systemd/g810-led.service | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/systemd/g810-led.service b/systemd/g810-led.service index f90830a..6013066 100644 --- a/systemd/g810-led.service +++ b/systemd/g810-led.service @@ -3,8 +3,8 @@ Description=Set Logitech G810 Led Profile [Service] ExecStart=/usr/bin/g810-led -p /etc/g810-led/profile +Type=oneshot +RemainAfterExit=yes [Install] WantedBy=multi-user.target -Type=oneshot -RemainAfterExit=yes From 17c206422702d831c657bd01f973f007b8b35bfb Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sun, 15 Jan 2017 02:09:26 +0100 Subject: [PATCH 044/187] Add INSTALL.md --- INSTALL.md | 38 ++++++++++++++++++++++++++++++++++++++ README.md | 5 ++++- 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 INSTALL.md diff --git a/INSTALL.md b/INSTALL.md new file mode 100644 index 0000000..88237ac --- /dev/null +++ b/INSTALL.md @@ -0,0 +1,38 @@ +# Installation :
+ +## Build dependencies :
+* git +* g++ +* make + +## Dependencies :
+* libusb + +## Installation of dependencies :
+ArchLinux :
+`sudo pacman -S git gcc make libusb`
+Debian :
+`sudo apt-get install git g++ make libusb-1.0-0-dev`
+OpenSUSE :
+`zypper in git make gcc-c++ libstdc++-devel libusb-1_0-devel`
+CentOS :
+`sudo yum install git make gcc-c++ libstdc++-devel libusb-devel`
+ +## Installation :
+`git clone https://github.com/MatMoul/g810-led.git`
+`cd g810-led`
+`make`
+`sudo make install`
+ +## Update :
+Same as install, but your profile and reboot files are preserved.
+ +## Uninstall :
+`sudo make uninstall`
+ +## Boot profile :
+g810-led has 2 systemd units (g810-led and g810-led-reboot).
+These 2 units set the keyboard profile on boot and reboot.
+Profiles are stored in /etc/g810 :
+* /etc/g810/profile +* /etc/g810/reboot diff --git a/README.md b/README.md index 8fbd111..a3d1258 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,10 @@ Linux LED controller for Logitech Led Keyboards.
- **G910 Orion Spectrum**
##Install and use :
-- look at the wiki : https://github.com/MatMoul/g810-led/wiki
+* INSTALL.md
+ +##Help :
+`g810-led --help`
##Samples :
`g810-led -p /etc/g810/profile # Load a profile`
From b03ac07ae4df7d8a43865820ee5039360a21dfaf Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sun, 15 Jan 2017 02:10:50 +0100 Subject: [PATCH 045/187] Add INSTALL.md --- INSTALL.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index 88237ac..e5c4a81 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -14,7 +14,7 @@ ArchLinux :
Debian :
`sudo apt-get install git g++ make libusb-1.0-0-dev`
OpenSUSE :
-`zypper in git make gcc-c++ libstdc++-devel libusb-1_0-devel`
+`sudo zypper in git make gcc-c++ libstdc++-devel libusb-1_0-devel`
CentOS :
`sudo yum install git make gcc-c++ libstdc++-devel libusb-devel`
@@ -30,7 +30,7 @@ Same as install, but your profile and reboot files are preserved.
## Uninstall :
`sudo make uninstall`
-## Boot profile :
+## Boot profiles :
g810-led has 2 systemd units (g810-led and g810-led-reboot).
These 2 units set the keyboard profile on boot and reboot.
Profiles are stored in /etc/g810 :
From 2a7c1b0cd88d3161221fc1272d73983c60496d11 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sun, 15 Jan 2017 02:17:03 +0100 Subject: [PATCH 046/187] Add INSTALL.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a3d1258..81e261d 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Linux LED controller for Logitech Led Keyboards.
- **G910 Orion Spectrum**
##Install and use :
-* INSTALL.md
+* https://github.com/MatMoul/g810-led/blob/master/INSTALL.md ##Help :
`g810-led --help`
From 754cfdf8bcbdc6fed065c94c744c8fbb6515c0f0 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sun, 15 Jan 2017 02:20:02 +0100 Subject: [PATCH 047/187] Add INSTALL.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 81e261d..3b196cc 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,10 @@ Linux LED controller for Logitech Led Keyboards.
* https://github.com/MatMoul/g810-led/blob/master/INSTALL.md ##Help :
+`g410-led --help`
+`g610-led --help`
`g810-led --help`
+`g910-led --help`
##Samples :
`g810-led -p /etc/g810/profile # Load a profile`
From cb93f9c9a064a3f8cc24abc2c6eb473cdfc6ab76 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sun, 15 Jan 2017 03:14:33 +0100 Subject: [PATCH 048/187] Update udev rules --- udev/g810-led.rules | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/udev/g810-led.rules b/udev/g810-led.rules index e4c5401..24cf502 100644 --- a/udev/g810-led.rules +++ b/udev/g810-led.rules @@ -1,7 +1,7 @@ -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c331", MODE="660", GROUP="users" -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c337", MODE="660", GROUP="users" -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c330", MODE="660", GROUP="users" -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c333", MODE="660", GROUP="users" -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c338", MODE="660", GROUP="users" -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c32b", MODE="660", GROUP="users" -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c335", MODE="660", GROUP="users" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c331", MODE="660" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c337", MODE="660" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c330", MODE="660" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c333", MODE="660" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c338", MODE="660" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c32b", MODE="660" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c335", MODE="660" From 0435ffa921253d37ff90680c443f26fe0ed6c7eb Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sun, 15 Jan 2017 05:39:05 +0100 Subject: [PATCH 049/187] Update makefile --- makefile | 61 ++++++++++++++++++++++++++++++-------------------------- 1 file changed, 33 insertions(+), 28 deletions(-) diff --git a/makefile b/makefile index bb2fb2b..f393534 100644 --- a/makefile +++ b/makefile @@ -3,6 +3,7 @@ CFLAGS=-Wall -O2 -std=gnu++11 LIBUSB_INC?=-I/usr/include/libusb-1.0 LDFLAGS=-lusb-1.0 PROGN=g810-led +SYSTEMDDIR?=/usr/lib/systemd .PHONY: all debug clean install uninstall @@ -19,33 +20,37 @@ clean: @rm -rf bin install: - @sudo mkdir -p /etc/$(PROGN)/samples - @sudo cp sample_profiles/* /etc/$(PROGN)/samples - @sudo cp udev/$(PROGN).rules /etc/udev/rules.d - @sudo udevadm control --reload-rules - @sudo cp bin/$(PROGN) /usr/bin - @sudo test -s /usr/bin/g410-led || sudo ln -s /usr/bin/$(PROGN) /usr/bin/g410-led - @sudo test -s /usr/bin/g610-led || sudo ln -s /usr/bin/$(PROGN) /usr/bin/g610-led - @sudo test -s /usr/bin/g910-led || sudo ln -s /usr/bin/$(PROGN) /usr/bin/g910-led - @sudo test -s /etc/$(PROGN)/profile || sudo cp /etc/$(PROGN)/samples/group_keys /etc/$(PROGN)/profile - @sudo test -s /etc/$(PROGN)/reboot || sudo cp /etc/$(PROGN)/samples/all_off /etc/$(PROGN)/reboot - @sudo cp systemd/$(PROGN).service /lib/systemd/system - @sudo cp systemd/$(PROGN)-reboot.service /lib/systemd/system - @sudo systemctl daemon-reload - @sudo systemctl start $(PROGN) - @sudo systemctl enable $(PROGN) - @sudo systemctl enable $(PROGN)-reboot + @install -m 755 -d \ + $(DESTDIR)/etc/$(PROGN)/samples \ + $(DESTDIR)/etc/udev/rules.d \ + $(DESTDIR)$(SYSTEMDDIR)/system \ + $(DESTDIR)/usr/bin + @cp bin/$(PROGN) $(DESTDIR)/usr/bin + @test -s $(DESTDIR)/usr/bin/g410-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g410-led + @test -s $(DESTDIR)/usr/bin/g610-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g610-led + @test -s $(DESTDIR)/usr/bin/g910-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g910-led + @cp udev/$(PROGN).rules $(DESTDIR)/etc/udev/rules.d + @cp sample_profiles/* $(DESTDIR)/etc/$(PROGN)/samples + @test -s $(DESTDIR)/etc/$(PROGN)/profile || cp $(DESTDIR)/etc/$(PROGN)/samples/group_keys $(DESTDIR)/etc/$(PROGN)/profile + @test -s $(DESTDIR)/etc/$(PROGN)/reboot || cp $(DESTDIR)/etc/$(PROGN)/samples/all_off $(DESTDIR)/etc/$(PROGN)/reboot + @cp systemd/$(PROGN).service $(DESTDIR)$(SYSTEMDDIR)/system + @cp systemd/$(PROGN)-reboot.service $(DESTDIR)$(SYSTEMDDIR)/system + @udevadm control --reload-rules + @systemctl daemon-reload + @systemctl start $(PROGN) + @systemctl enable $(PROGN) + @systemctl enable $(PROGN)-reboot uninstall: - @sudo systemctl disable $(PROGN) - @sudo systemctl disable $(PROGN)-reboot - @sudo rm /lib/systemd/system/$(PROGN).service - @sudo rm /lib/systemd/system/$(PROGN)-reboot.service - @sudo systemctl daemon-reload - @sudo rm /usr/bin/g410-led - @sudo rm /usr/bin/g610-led - @sudo rm /usr/bin/g910-led - @sudo rm /usr/bin/$(PROGN) - @sudo rm -R /etc/$(PROGN) - @sudo rm /etc/udev/rules.d/$(PROGN).rules - @sudo udevadm control --reload-rules + @systemctl disable $(PROGN) + @systemctl disable $(PROGN)-reboot + @rm $(SYSTEMDDIR)/system/$(PROGN).service + @rm $(SYSTEMDDIR)/system/$(PROGN)-reboot.service + @systemctl daemon-reload + @rm /usr/bin/g410-led + @rm /usr/bin/g610-led + @rm /usr/bin/g910-led + @rm /usr/bin/$(PROGN) + @rm -R /etc/$(PROGN) + @rm /etc/udev/rules.d/$(PROGN).rules + @udevadm control --reload-rules From bc93fcc20644a816326eb4df8b48e3aca52ebe62 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sun, 15 Jan 2017 06:48:48 +0100 Subject: [PATCH 050/187] Update udev.rules --- udev/g810-led.rules | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/udev/g810-led.rules b/udev/g810-led.rules index 24cf502..e4c5401 100644 --- a/udev/g810-led.rules +++ b/udev/g810-led.rules @@ -1,7 +1,7 @@ -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c331", MODE="660" -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c337", MODE="660" -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c330", MODE="660" -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c333", MODE="660" -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c338", MODE="660" -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c32b", MODE="660" -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c335", MODE="660" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c331", MODE="660", GROUP="users" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c337", MODE="660", GROUP="users" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c330", MODE="660", GROUP="users" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c333", MODE="660", GROUP="users" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c338", MODE="660", GROUP="users" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c32b", MODE="660", GROUP="users" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c335", MODE="660", GROUP="users" From b7a2c508c801ec0ed564079aaf539845c5e46999 Mon Sep 17 00:00:00 2001 From: barul42 Date: Tue, 17 Jan 2017 11:37:47 +0100 Subject: [PATCH 051/187] Update INSTALL.md Added systemd in Dependencies --- INSTALL.md | 1 + 1 file changed, 1 insertion(+) diff --git a/INSTALL.md b/INSTALL.md index e5c4a81..e098e84 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -7,6 +7,7 @@ ## Dependencies :
* libusb +* systemd ## Installation of dependencies :
ArchLinux :
From c2c8f6b7ac89ebaf3710f4b53afa7969f2f468d6 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 21 Jan 2017 09:15:18 +0100 Subject: [PATCH 052/187] Full refactor code --- .gitignore | 3 + INSTALL.md | 6 +- README.md | 14 +- makefile | 13 +- pictures/g410.png | Bin 59630 -> 0 bytes pictures/g610.png | Bin 57634 -> 0 bytes pictures/g810.jpg | Bin 43215 -> 0 bytes pictures/g910.jpg | Bin 21755 -> 0 bytes sample_profiles/all_blue_fxl_breathing_red | 2 +- sample_profiles/fx_breathing_red | 2 +- sample_profiles/fx_color_green | 2 +- sample_profiles/fx_cwave | 2 +- sample_profiles/fx_cycle | 2 + sample_profiles/fx_hwave | 2 +- sample_profiles/fx_vwave | 2 +- src/classes/Keyboard.cpp | 1441 ++++++-------------- src/classes/Keyboard.h | 238 +++- src/helpers/help.cpp | 187 +++ src/helpers/help.h | 15 + src/helpers/utils.cpp | 212 +++ src/helpers/utils.h | 21 + src/main.cpp | 687 +++------- 22 files changed, 1254 insertions(+), 1597 deletions(-) create mode 100644 .gitignore delete mode 100644 pictures/g410.png delete mode 100644 pictures/g610.png delete mode 100644 pictures/g810.jpg delete mode 100644 pictures/g910.jpg create mode 100644 sample_profiles/fx_cycle create mode 100644 src/helpers/help.cpp create mode 100644 src/helpers/help.h create mode 100644 src/helpers/utils.cpp create mode 100644 src/helpers/utils.h diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e31e806 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +g810-led.* +bin/* +. diff --git a/INSTALL.md b/INSTALL.md index e098e84..21bfb55 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -14,10 +14,8 @@ ArchLinux :
`sudo pacman -S git gcc make libusb`
Debian :
`sudo apt-get install git g++ make libusb-1.0-0-dev`
-OpenSUSE :
-`sudo zypper in git make gcc-c++ libstdc++-devel libusb-1_0-devel`
-CentOS :
-`sudo yum install git make gcc-c++ libstdc++-devel libusb-devel`
+Fedora :
+`sudo dnf install git make gcc-c++ libusb-devel`
## Installation :
`git clone https://github.com/MatMoul/g810-led.git`
diff --git a/README.md b/README.md index 3b196cc..fdea43b 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Linux LED controller for Logitech Led Keyboards.
- **G910 Orion Spectrum**
##Install and use :
-* https://github.com/MatMoul/g810-led/blob/master/INSTALL.md +* INSTALL.md ##Help :
`g410-led --help`
@@ -25,12 +25,12 @@ Linux LED controller for Logitech Led Keyboards.
`g810-led -a 00ff00 # Set color of all keys`
`g810-led -g fkeys ff00ff # Set color of a group of keys`
`g810-led -s color # Set keyboard power on effect`
-`g810-led -fx-color 00ff00 # Set fixed color effect`
-`g810-led -fx-breathing 00ff00 0a # Set breathing effect`
-`g810-led -fx-cycle 0a # Set color cycle effect`
-`g810-led -fx-hwave 0a # Set horizontal wave effect`
-`g810-led -fx-vwave 0a # Set vertical wave effect`
-`g810-led -fx-cwave 0a # Set center wave effect`
+`g810-led -fx color keys 00ff00 # Set fixed color effect`
+`g810-led -fx breathing logo 00ff00 0a # Set breathing effect`
+`g810-led -fx cycle all 0a # Set color cycle effect`
+`g810-led -fx hwave keys 0a # Set horizontal wave effect`
+`g810-led -fx vwave keys 0a # Set vertical wave effect`
+`g810-led -fx cwave keys 0a # Set center wave effect`
##Samples with no commit :
`g810-led -an 000000 # Set color of all key with no action`
diff --git a/makefile b/makefile index f393534..917f0bc 100644 --- a/makefile +++ b/makefile @@ -1,24 +1,23 @@ CC=g++ CFLAGS=-Wall -O2 -std=gnu++11 -LIBUSB_INC?=-I/usr/include/libusb-1.0 LDFLAGS=-lusb-1.0 PROGN=g810-led SYSTEMDDIR?=/usr/lib/systemd -.PHONY: all debug clean install uninstall +.PHONY: all debug clean all: bin/$(PROGN) -bin/$(PROGN): src/main.cpp src/classes/*.cpp src/classes/*.h +bin/$(PROGN): src/main.cpp src/helpers/*.cpp src/helpers/*.h src/classes/*.cpp src/classes/*.h @mkdir -p bin - $(CC) $(CFLAGS) $(LIBUSB_INC) -o $@ $^ $(LDFLAGS) - + $(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS) + debug: CFLAGS += -g -Wextra -pedantic debug: bin/$(PROGN) - + clean: @rm -rf bin - + install: @install -m 755 -d \ $(DESTDIR)/etc/$(PROGN)/samples \ diff --git a/pictures/g410.png b/pictures/g410.png deleted file mode 100644 index 6032224d1f62d29344cb46c027a825f9c80cd8a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59630 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�BFhD3>=O^qlFgRN!5V@C3*BNc9HsM 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≪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 diff --git a/sample_profiles/all_blue_fxl_breathing_red b/sample_profiles/all_blue_fxl_breathing_red index 0898d67..8e8ccf4 100644 --- a/sample_profiles/all_blue_fxl_breathing_red +++ b/sample_profiles/all_blue_fxl_breathing_red @@ -2,4 +2,4 @@ a 0000ff # Set all keys blue c # Commit changes -fxl-breathing ff0000 10 # Set breathing effect with red color and speed 10 +fx breathing logo ff0000 10 # Set breathing effect with red color and speed 10 diff --git a/sample_profiles/fx_breathing_red b/sample_profiles/fx_breathing_red index 1b0be0b..250349c 100644 --- a/sample_profiles/fx_breathing_red +++ b/sample_profiles/fx_breathing_red @@ -1,2 +1,2 @@ -fx-breathing ff0000 10 # Set breathing effect with red color and speed 10 +fx breathing all ff0000 20 # Set breathing effect with red color and speed 20 diff --git a/sample_profiles/fx_color_green b/sample_profiles/fx_color_green index 05f8232..97264a7 100644 --- a/sample_profiles/fx_color_green +++ b/sample_profiles/fx_color_green @@ -1,3 +1,3 @@ # Green Profile -fx-color 00ff00 # Set all keys green +fx color all 00ff00 # Set all keys green diff --git a/sample_profiles/fx_cwave b/sample_profiles/fx_cwave index 3405986..347a1bc 100644 --- a/sample_profiles/fx_cwave +++ b/sample_profiles/fx_cwave @@ -1,2 +1,2 @@ -fx-cwave 10 # Set center wave effect with speed 10 +fx cwave all 20 # Set center wave effect with speed 20 diff --git a/sample_profiles/fx_cycle b/sample_profiles/fx_cycle new file mode 100644 index 0000000..249adcb --- /dev/null +++ b/sample_profiles/fx_cycle @@ -0,0 +1,2 @@ + +fx cycle all 20 # Set color cycle effect with speed 20 diff --git a/sample_profiles/fx_hwave b/sample_profiles/fx_hwave index 5eb537c..cea0f8a 100644 --- a/sample_profiles/fx_hwave +++ b/sample_profiles/fx_hwave @@ -1,2 +1,2 @@ -fx-hwave 10 # Set horizontal wave effect with speed 10 +fx hwave all 20 # Set horizontal wave effect with speed 20 diff --git a/sample_profiles/fx_vwave b/sample_profiles/fx_vwave index 30ea410..a52aca2 100644 --- a/sample_profiles/fx_vwave +++ b/sample_profiles/fx_vwave @@ -1,2 +1,2 @@ -fx-vwave 10 # Set vertical wave effect with speed 10 +fx vwave all 20 # Set vertical wave effect with speed 20 diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index b52636c..1a37ca1 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -1,1101 +1,490 @@ #include "Keyboard.h" -#include + +#include #include -#include -#include "libusb.h" +#include + +#include "libusb-1.0/libusb.h" -bool Keyboard::isAttached() { - return m_isAttached; +using namespace std; + + + +LedKeyboard::~LedKeyboard() { + close(); } -bool Keyboard::attach() { - if (m_isAttached == true) return false; - int r; - r = libusb_init(&ctx); - if (r < 0) return false; + +bool LedKeyboard::listKeyboards() { + libusb_context *ctx = NULL; + if(libusb_init(&m_ctx) < 0) return false; libusb_device **devs; ssize_t cnt = libusb_get_device_list(ctx, &devs); - if(cnt < 0) return false; - int pid = 0; - for(ssize_t i = 0; i < cnt; i++) { - libusb_device *device = devs[i]; - libusb_device_descriptor desc = { - 0, // bLength - 0, // bDescriptorType - 0, // bcdUSB - 0, // bDeviceClass - 0, // bDeviceSubClass - 0, // bDeviceProtocol - 0, // bMaxPacketSize0 - 0, // idVendor - 0, // idProduct - 0, // bcdDevice - 0, // iManufacturer - 0, // iProduct - 0, // iSerialNumber - 0 // bNumConfigurations - }; - libusb_get_device_descriptor(device, &desc); - if (desc.idVendor == 0x046d) { - if (desc.idProduct == 0xc331) { pid = desc.idProduct; break; } // G810 spectrum - if (desc.idProduct == 0xc337) { pid = desc.idProduct; break; } // G810 spectrum - if (desc.idProduct == 0xc330) { pid = desc.idProduct; break; } // G410 spectrum - if (desc.idProduct == 0xc333) { pid = desc.idProduct; break; } // G610 spectrum - if (desc.idProduct == 0xc338) { pid = desc.idProduct; break; } // G610 spectrum - if (desc.idProduct == 0xc32b) { // G910 spark - pid = desc.idProduct; - kbdProtocol = KeyboardProtocol::g910; - break; - } - if (desc.idProduct == 0xc335) { // G910 spectrum - pid = desc.idProduct; - kbdProtocol = KeyboardProtocol::g910; - break; + if(cnt >= 0) { + for(ssize_t i = 0; i < cnt; i++) { + libusb_device *device = devs[i]; + libusb_device_descriptor desc = { + 0, // bLength + 0, // bDescriptorType + 0, // bcdUSB + 0, // bDeviceClass + 0, // bDeviceSubClass + 0, // bDeviceProtocol + 0, // bMaxPacketSize0 + 0, // idVendor + 0, // idProduct + 0, // bcdDevice + 0, // iManufacturer + 0, // iProduct + 0, // iSerialNumber + 0 // bNumConfigurations + }; + libusb_get_device_descriptor(device, &desc); + for (int i=0; i<(int)SuportedKeyboards.size(); i++) { + if (desc.idVendor == SuportedKeyboards[i][0]) { + if (desc.idProduct == SuportedKeyboards[i][1]) { + cout<<"0x"<= 0) { + for(ssize_t i = 0; i < cnt; i++) { + libusb_device *device = devs[i]; + libusb_device_descriptor desc = { + 0, // bLength + 0, // bDescriptorType + 0, // bcdUSB + 0, // bDeviceClass + 0, // bDeviceSubClass + 0, // bDeviceProtocol + 0, // bMaxPacketSize0 + 0, // idVendor + 0, // idProduct + 0, // bcdDevice + 0, // iManufacturer + 0, // iProduct + 0, // iSerialNumber + 0 // bNumConfigurations + }; + libusb_get_device_descriptor(device, &desc); + for (int i=0; i<(int)SuportedKeyboards.size(); i++) { + if (desc.idVendor == SuportedKeyboards[i][0]) { + if (desc.idProduct == SuportedKeyboards[i][1]) { + m_vendorID = desc.idVendor; + m_productID = desc.idProduct; + m_keyboardModel = (KeyboardModel)SuportedKeyboards[i][2]; + break; + } + } + } + + if (m_keyboardModel != KeyboardModel::unknown) break; + + } + libusb_free_device_list(devs, 1); + } } - libusb_free_device_list(devs, 1); - if (pid == 0) { - libusb_exit(ctx); - ctx = NULL; + + if (m_keyboardModel == KeyboardModel::unknown) { + cout<<"Keyboard not found"<> SortedKeys = { + {}, // Logo AddressGroup + {}, // Indicators AddressGroup + {}, // Multimedia AddressGroup + {}, // GKeys AddressGroup + {} // Keys AddressGroup + }; + + for (uint8_t i = 0; i < keyValues.size(); i++) { + switch(static_cast(static_cast(keyValues[i].key) >> 8 )) { + case LedKeyboard::KeyAddressGroup::logo: + if (SortedKeys[0].size() <= 2) SortedKeys[0].push_back(keyValues[i]); + break; + case LedKeyboard::KeyAddressGroup::indicators: + if (SortedKeys[1].size() <= 5) SortedKeys[1].push_back(keyValues[i]); + break; + case LedKeyboard::KeyAddressGroup::multimedia: + if (SortedKeys[2].size() <= 5) SortedKeys[2].push_back(keyValues[i]); + break; + case LedKeyboard::KeyAddressGroup::gkeys: + if (SortedKeys[3].size() <= 9) SortedKeys[3].push_back(keyValues[i]); + break; + case LedKeyboard::KeyAddressGroup::keys: + if (SortedKeys[4].size() <= 120) SortedKeys[4].push_back(keyValues[i]); + break; + } + } + + for (uint8_t kag = 0; kag < 5; kag++) { + + if (SortedKeys[kag].size() > 0) { + + uint8_t gi = 0; + while (gi < SortedKeys[kag].size()) { + + size_t data_size = 0; + byte_buffer_t data = {}; + + switch (kag) { + case 0: + data_size = 20; + data = getKeyGroupAddress(LedKeyboard::KeyAddressGroup::logo); + break; + case 1: + data_size = 64; + data = getKeyGroupAddress(LedKeyboard::KeyAddressGroup::indicators); + break; + case 2: + data_size = 64; + data = getKeyGroupAddress(LedKeyboard::KeyAddressGroup::multimedia); + break; + case 3: + data_size = 64; + data = getKeyGroupAddress(LedKeyboard::KeyAddressGroup::gkeys); + break; + case 4: + data_size = 64; + data = getKeyGroupAddress(LedKeyboard::KeyAddressGroup::keys); + break; + } + + const uint8_t maxKeyCount = (data_size - 8) / 4; + + if (data.size() > 0) { + + for (uint8_t i = 0; i < maxKeyCount; i++) { + if (gi + i < SortedKeys[kag].size()) { + data.push_back(static_cast( + static_cast(SortedKeys[kag][gi+i].key) & 0x00ff)); + data.push_back(SortedKeys[kag][gi+i].color.red); + data.push_back(SortedKeys[kag][gi+i].color.green); + data.push_back(SortedKeys[kag][gi+i].color.blue); + } + } + + data.resize(data_size, 0x00); + + if (retval) retval = sendDataInternal(data); + else sendDataInternal(data); + + } + + gi = gi + maxKeyCount; + } + + } + } return retval; } -bool Keyboard::getKeyAddress(Key key, KeyAddress &keyAddress) { - switch (key) { - case Key::logo: - keyAddress.addressGroup = KeyAddressGroup::logo; - keyAddress.id = 0x01; +bool LedKeyboard::setGroupKeys(KeyGroup keyGroup, LedKeyboard::Color color) { + KeyValueArray keyValues; + + KeyArray keyArray; + + switch (keyGroup) { + case KeyGroup::logo: + keyArray = keyGroupLogo; break; - case Key::logo2: - keyAddress.addressGroup = KeyAddressGroup::logo; - keyAddress.id = 0x02; + case KeyGroup::indicators: + keyArray = keyGroupIndicators; break; - case Key::backlight: - keyAddress.addressGroup = KeyAddressGroup::indicators; - keyAddress.id = 0x01; + case KeyGroup::gkeys: + keyArray = keyGroupGKeys; break; - case Key::game: - keyAddress.addressGroup = KeyAddressGroup::indicators; - keyAddress.id = 0x02; + case KeyGroup::multimedia: + keyArray = keyGroupMultimedia; break; - case Key::caps: - keyAddress.addressGroup = KeyAddressGroup::indicators; - keyAddress.id = 0x03; + case KeyGroup::fkeys: + keyArray = keyGroupFKeys; break; - case Key::scroll: - keyAddress.addressGroup = KeyAddressGroup::indicators; - keyAddress.id = 0x04; + case KeyGroup::modifiers: + keyArray = keyGroupModifiers; break; - case Key::num: - keyAddress.addressGroup = KeyAddressGroup::indicators; - keyAddress.id = 0x05; + case KeyGroup::arrows: + keyArray = keyGroupArrows; break; - case Key::next: - keyAddress.addressGroup = KeyAddressGroup::multimedia; - keyAddress.id = 0xb5; + case KeyGroup::numeric: + keyArray = keyGroupNumeric; break; - case Key::prev: - keyAddress.addressGroup = KeyAddressGroup::multimedia; - keyAddress.id = 0xb6; + case KeyGroup::functions: + keyArray = keyGroupFunctions; break; - case Key::stop: - keyAddress.addressGroup = KeyAddressGroup::multimedia; - keyAddress.id = 0xb7; - break; - case Key::play: - keyAddress.addressGroup = KeyAddressGroup::multimedia; - keyAddress.id = 0xcd; - break; - case Key::mute: - keyAddress.addressGroup = KeyAddressGroup::multimedia; - keyAddress.id = 0xe2; - break; - case Key::g1: - keyAddress.addressGroup = KeyAddressGroup::gkeys; - keyAddress.id = 0x01; - break; - case Key::g2: - keyAddress.addressGroup = KeyAddressGroup::gkeys; - keyAddress.id = 0x02; - break; - case Key::g3: - keyAddress.addressGroup = KeyAddressGroup::gkeys; - keyAddress.id = 0x03; - break; - case Key::g4: - keyAddress.addressGroup = KeyAddressGroup::gkeys; - keyAddress.id = 0x04; - break; - case Key::g5: - keyAddress.addressGroup = KeyAddressGroup::gkeys; - keyAddress.id = 0x05; - break; - case Key::g6: - keyAddress.addressGroup = KeyAddressGroup::gkeys; - keyAddress.id = 0x06; - break; - case Key::g7: - keyAddress.addressGroup = KeyAddressGroup::gkeys; - keyAddress.id = 0x07; - break; - case Key::g8: - keyAddress.addressGroup = KeyAddressGroup::gkeys; - keyAddress.id = 0x08; - break; - case Key::g9: - keyAddress.addressGroup = KeyAddressGroup::gkeys; - keyAddress.id = 0x09; + case KeyGroup::keys: + keyArray = keyGroupKeys; break; default: - keyAddress.addressGroup = KeyAddressGroup::keys; - switch (key) { - case Key::a: keyAddress.id = 0x04; break; - case Key::b: keyAddress.id = 0x05; break; - case Key::c: keyAddress.id = 0x06; break; - case Key::d: keyAddress.id = 0x07; break; - case Key::e: keyAddress.id = 0x08; break; - case Key::f: keyAddress.id = 0x09; break; - case Key::g: keyAddress.id = 0x0a; break; - case Key::h: keyAddress.id = 0x0b; break; - case Key::i: keyAddress.id = 0x0c; break; - case Key::j: keyAddress.id = 0x0d; break; - case Key::k: keyAddress.id = 0x0e; break; - case Key::l: keyAddress.id = 0x0f; break; - case Key::m: keyAddress.id = 0x10; break; - case Key::n: keyAddress.id = 0x11; break; - case Key::o: keyAddress.id = 0x12; break; - case Key::p: keyAddress.id = 0x13; break; - case Key::q: keyAddress.id = 0x14; break; - case Key::r: keyAddress.id = 0x15; break; - case Key::s: keyAddress.id = 0x16; break; - case Key::t: keyAddress.id = 0x17; break; - case Key::u: keyAddress.id = 0x18; break; - case Key::v: keyAddress.id = 0x19; break; - case Key::w: keyAddress.id = 0x1a; break; - case Key::x: keyAddress.id = 0x1b; break; - case Key::y: keyAddress.id = 0x1c; break; - case Key::z: keyAddress.id = 0x1d; break; - case Key::n1: keyAddress.id = 0x1e; break; - case Key::n2: keyAddress.id = 0x1f; break; - case Key::n3: keyAddress.id = 0x20; break; - case Key::n4: keyAddress.id = 0x21; break; - case Key::n5: keyAddress.id = 0x22; break; - case Key::n6: keyAddress.id = 0x23; break; - case Key::n7: keyAddress.id = 0x24; break; - case Key::n8: keyAddress.id = 0x25; break; - case Key::n9: keyAddress.id = 0x26; break; - case Key::n0: keyAddress.id = 0x27; break; - case Key::enter: keyAddress.id = 0x28; break; - case Key::esc: keyAddress.id = 0x29; break; - case Key::backspace: keyAddress.id = 0x2a; break; - case Key::tab: keyAddress.id = 0x2b; break; - case Key::space: keyAddress.id = 0x2c; break; - case Key::minus: keyAddress.id = 0x2d; break; - case Key::equal: keyAddress.id = 0x2e; break; - case Key::open_bracket: keyAddress.id = 0x2f; break; - case Key::close_bracket: keyAddress.id = 0x30; break; - case Key::backslash: keyAddress.id = 0x31; break; - case Key::dollar: keyAddress.id = 0x32; break; - case Key::semicolon: keyAddress.id = 0x33; break; - case Key::quote: keyAddress.id = 0x34; break; - case Key::tilde: keyAddress.id = 0x35; break; - case Key::comma: keyAddress.id = 0x36; break; - case Key::period: keyAddress.id = 0x37; break; - case Key::slash: keyAddress.id = 0x38; break; - case Key::caps_lock: keyAddress.id = 0x39; break; - case Key::f1: keyAddress.id = 0x3a; break; - case Key::f2: keyAddress.id = 0x3b; break; - case Key::f3: keyAddress.id = 0x3c; break; - case Key::f4: keyAddress.id = 0x3d; break; - case Key::f5: keyAddress.id = 0x3e; break; - case Key::f6: keyAddress.id = 0x3f; break; - case Key::f7: keyAddress.id = 0x40; break; - case Key::f8: keyAddress.id = 0x41; break; - case Key::f9: keyAddress.id = 0x42; break; - case Key::f10: keyAddress.id = 0x43; break; - case Key::f11: keyAddress.id = 0x44; break; - case Key::f12: keyAddress.id = 0x45; break; - case Key::print_screen: keyAddress.id = 0x46; break; - case Key::scroll_lock: keyAddress.id = 0x47; break; - case Key::pause_break: keyAddress.id = 0x48; break; - case Key::insert: keyAddress.id = 0x49; break; - case Key::home: keyAddress.id = 0x4a; break; - case Key::page_up: keyAddress.id = 0x4b; break; - case Key::del: keyAddress.id = 0x4c; break; - case Key::end: keyAddress.id = 0x4d; break; - case Key::page_down: keyAddress.id = 0x4e; break; - case Key::arrow_right: keyAddress.id = 0x4f; break; - case Key::arrow_left: keyAddress.id = 0x50; break; - case Key::arrow_bottom: keyAddress.id = 0x51; break; - case Key::arrow_top: keyAddress.id = 0x52; break; - case Key::num_lock: keyAddress.id = 0x53; break; - case Key::num_slash: keyAddress.id = 0x54; break; - case Key::num_asterisk: keyAddress.id = 0x55; break; - case Key::num_minus: keyAddress.id = 0x56; break; - case Key::num_plus: keyAddress.id = 0x57; break; - case Key::num_enter: keyAddress.id = 0x58; break; - case Key::num_1: keyAddress.id = 0x59; break; - case Key::num_2: keyAddress.id = 0x5a; break; - case Key::num_3: keyAddress.id = 0x5b; break; - case Key::num_4: keyAddress.id = 0x5c; break; - case Key::num_5: keyAddress.id = 0x5d; break; - case Key::num_6: keyAddress.id = 0x5e; break; - case Key::num_7: keyAddress.id = 0x5f; break; - case Key::num_8: keyAddress.id = 0x60; break; - case Key::num_9: keyAddress.id = 0x61; break; - case Key::num_0: keyAddress.id = 0x62; break; - case Key::num_dot: keyAddress.id = 0x63; break; - case Key::intl_backslash: keyAddress.id = 0x64; break; - case Key::menu: keyAddress.id = 0x65; break; - case Key::ctrl_left: keyAddress.id = 0xe0; break; - case Key::shift_left: keyAddress.id = 0xe1; break; - case Key::alt_left: keyAddress.id = 0xe2; break; - case Key::win_left: keyAddress.id = 0xe3; break; - case Key::ctrl_right: keyAddress.id = 0xe4; break; - case Key::shift_right: keyAddress.id = 0xe5; break; - case Key::alt_right: keyAddress.id = 0xe6; break; - case Key::win_right: keyAddress.id = 0xe7; break; - default: break; - } break; } - return true; + + for (uint8_t i = 0; i < keyArray.size(); i++) keyValues.push_back({keyArray[i], color}); + + return setKeys(keyValues); } -bool Keyboard::parsePowerOnEffect(std::string effect, PowerOnEffect &powerOnEffect) { - if (effect == "rainbow") powerOnEffect = PowerOnEffect::rainbow; - else if (effect == "color") powerOnEffect = PowerOnEffect::color; - else return false; - return true; +bool LedKeyboard::setAllKeys(LedKeyboard::Color color) { + KeyValueArray keyValues; + for (uint8_t i = 0; i < keyGroupLogo.size(); i++) keyValues.push_back({keyGroupLogo[i], color}); + for (uint8_t i = 0; i < keyGroupIndicators.size(); i++) keyValues.push_back({keyGroupIndicators[i], color}); + for (uint8_t i = 0; i < keyGroupMultimedia.size(); i++) keyValues.push_back({keyGroupMultimedia[i], color}); + for (uint8_t i = 0; i < keyGroupGKeys.size(); i++) keyValues.push_back({keyGroupGKeys[i], color}); + for (uint8_t i = 0; i < keyGroupFKeys.size(); i++) keyValues.push_back({keyGroupFKeys[i], color}); + for (uint8_t i = 0; i < keyGroupFunctions.size(); i++) keyValues.push_back({keyGroupFunctions[i], color}); + for (uint8_t i = 0; i < keyGroupArrows.size(); i++) keyValues.push_back({keyGroupArrows[i], color}); + for (uint8_t i = 0; i < keyGroupNumeric.size(); i++) keyValues.push_back({keyGroupNumeric[i], color}); + for (uint8_t i = 0; i < keyGroupModifiers.size(); i++) keyValues.push_back({keyGroupModifiers[i], color}); + for (uint8_t i = 0; i < keyGroupKeys.size(); i++) keyValues.push_back({keyGroupKeys[i], color}); + return setKeys(keyValues); } -bool Keyboard::parseKey(std::string key, KeyAddress &keyAddress) { - std::transform(key.begin(), key.end(), key.begin(), ::tolower); - Key parsedKey; - if (key == "logo") parsedKey = Key::logo; - else if (key == "logo2") parsedKey = Key::logo2; - else if (key == "back_light" || key == "backlight" || key == "light") parsedKey = Key::backlight; - else if (key == "game_mode" || key == "gamemode" || key == "game") parsedKey = Key::game; - else if (key == "caps_indicator" || key == "capsindicator" || key == "caps") parsedKey = Key::caps; - else if (key == "scroll_indicator" || key == "scrollindicator" || key == "scroll") parsedKey = Key::scroll; - else if (key == "num_indicator" || key == "numindicator" || key == "num") parsedKey = Key::num; - else if (key == "next") parsedKey = Key::next; - else if (key == "prev" || key == "previous") parsedKey = Key::prev; - else if (key == "stop") parsedKey = Key::stop; - else if (key == "play_pause" || key == "playpause" || key == "play") parsedKey = Key::play; - else if (key == "mute") parsedKey = Key::mute; - else if (key == "a") parsedKey = Key::a; - else if (key == "b") parsedKey = Key::b; - else if (key == "c") parsedKey = Key::c; - else if (key == "d") parsedKey = Key::d; - else if (key == "e") parsedKey = Key::e; - else if (key == "f") parsedKey = Key::f; - else if (key == "g") parsedKey = Key::g; - else if (key == "h") parsedKey = Key::h; - else if (key == "i") parsedKey = Key::i; - else if (key == "j") parsedKey = Key::j; - else if (key == "k") parsedKey = Key::k; - else if (key == "l") parsedKey = Key::l; - else if (key == "m") parsedKey = Key::m; - else if (key == "n") parsedKey = Key::n; - else if (key == "o") parsedKey = Key::o; - else if (key == "p") parsedKey = Key::p; - else if (key == "q") parsedKey = Key::q; - else if (key == "r") parsedKey = Key::r; - else if (key == "s") parsedKey = Key::s; - else if (key == "t") parsedKey = Key::t; - else if (key == "u") parsedKey = Key::u; - else if (key == "v") parsedKey = Key::v; - else if (key == "w") parsedKey = Key::w; - else if (key == "x") parsedKey = Key::x; - else if (key == "z") parsedKey = Key::z; - else if (key == "y") parsedKey = Key::y; - else if (key == "1" || key == "one") parsedKey = Key::n1; - else if (key == "2" || key == "two") parsedKey = Key::n2; - else if (key == "3" || key == "three") parsedKey = Key::n3; - else if (key == "4" || key == "four") parsedKey = Key::n4; - else if (key == "5" || key == "five") parsedKey = Key::n5; - else if (key == "6" || key == "six") parsedKey = Key::n6; - else if (key == "7" || key == "seven") parsedKey = Key::n7; - else if (key == "8" || key == "eight") parsedKey = Key::n8; - else if (key == "9" || key == "nine") parsedKey = Key::n9; - else if (key == "0" || key == "zero") parsedKey = Key::n0; - else if (key == "enter") parsedKey = Key::enter; - else if (key == "esc" || key == "escape") parsedKey = Key::esc; - else if (key == "back" || key == "backspace") parsedKey = Key::backspace; - else if (key == "tab") parsedKey = Key::tab; - else if (key == "space") parsedKey = Key::space; - else if (key == "tilde" || key == "~") parsedKey = Key::tilde; - else if (key == "minus" || key == "-") parsedKey = Key::minus; - else if (key == "equal" || key == "=") parsedKey = Key::equal; - else if (key == "open_bracket" || key == "[") parsedKey = Key::open_bracket; - else if (key == "close_bracket" || key == "]") parsedKey = Key::close_bracket; - else if (key == "backslash" || key == "\\") parsedKey = Key::backslash; - else if (key == "semicolon" || key == ";") parsedKey = Key::semicolon; - else if (key == "quote" || key == "\"") parsedKey = Key::quote; - else if (key == "dollar" || key == "$") parsedKey = Key::dollar; - else if (key == "comma" || key == ",") parsedKey = Key::comma; - else if (key == "period" || key == ".") parsedKey = Key::period; - else if (key == "slash" || key == "/") parsedKey = Key::slash; - else if (key == "caps_lock" || key == "capslock") parsedKey = Key::caps_lock; - else if (key == "f1") parsedKey = Key::f1; - else if (key == "f2") parsedKey = Key::f2; - else if (key == "f3") parsedKey = Key::f3; - else if (key == "f4") parsedKey = Key::f4; - else if (key == "f5") parsedKey = Key::f5; - else if (key == "f6") parsedKey = Key::f6; - else if (key == "f7") parsedKey = Key::f7; - else if (key == "f8") parsedKey = Key::f8; - else if (key == "f9") parsedKey = Key::f9; - else if (key == "f10") parsedKey = Key::f10; - else if (key == "f11") parsedKey = Key::f11; - else if (key == "f12") parsedKey = Key::f12; - else if (key == "print_screen" || key == "printscreen" || key == "printscr" || key == "print") parsedKey = Key::print_screen; - else if (key == "scroll_lock" || key == "scrolllock") parsedKey = Key::scroll_lock; - else if (key == "pause_break" || key == "pausebreak" || key == "pause" || key == "break") parsedKey = Key::pause_break; - else if (key == "insert" || key == "ins") parsedKey = Key::insert; - else if (key == "home") parsedKey = Key::home; - else if (key == "page_up" || key == "pageup") parsedKey = Key::page_up; - else if (key == "delete" || key == "del") parsedKey = Key::del; - else if (key == "end") parsedKey = Key::end; - else if (key == "page_down" || key == "pagedown") parsedKey = Key::page_down; - else if (key == "arrow_right" || key == "arrowright" || key == "right") parsedKey = Key::arrow_right; - else if (key == "arrow_left" || key == "arrowleft" || key == "left") parsedKey = Key::arrow_left; - else if (key == "arrow_bottom" || key == "arrowbottom" || key == "bottom") parsedKey = Key::arrow_bottom; - else if (key == "arrow_top" || key == "arrowtop" || key == "top") parsedKey = Key::arrow_top; - else if (key == "num_lock" || key == "numlock") parsedKey = Key::num_lock; - else if (key == "num/" || key == "num_slash" || key == "numslash") parsedKey = Key::num_slash; - else if (key == "num*" || key == "num_asterisk" || key == "numasterisk") parsedKey = Key::num_asterisk; - else if (key == "num-" || key == "num_minus" || key == "numminus") parsedKey = Key::num_minus; - else if (key == "num+" || key == "num_plus" || key == "numplus") parsedKey = Key::num_plus; - else if (key == "numenter") parsedKey = Key::num_enter; - else if (key == "num1") parsedKey = Key::num_1; - else if (key == "num2") parsedKey = Key::num_2; - else if (key == "num3") parsedKey = Key::num_3; - else if (key == "num4") parsedKey = Key::num_4; - else if (key == "num5") parsedKey = Key::num_5; - else if (key == "num6") parsedKey = Key::num_6; - else if (key == "num7") parsedKey = Key::num_7; - else if (key == "num8") parsedKey = Key::num_8; - else if (key == "num9") parsedKey = Key::num_9; - else if (key == "num0") parsedKey = Key::num_0; - else if (key == "num." || key == "num_period" || key == "numperiod") parsedKey = Key::num_dot; - else if (key == "intl_backslash" || key == "<") parsedKey = Key::intl_backslash; - else if (key == "menu") parsedKey = Key::menu; - else if (key == "ctrl_left" || key == "ctrlleft" || key == "ctrll") parsedKey = Key::ctrl_left; - else if (key == "shift_left" || key == "shiftleft" || key == "shiftl") parsedKey = Key::shift_left; - else if (key == "alt_left" || key == "altleft" || key == "altl") parsedKey = Key::alt_left; - else if (key == "win_left" || key == "winleft" || key == "winl") parsedKey = Key::win_left; - else if (key == "meta_left" || key == "metaleft" || key == "metal") parsedKey = Key::win_left; - else if (key == "ctrl_right" || key == "ctrlright" || key == "ctrlr") parsedKey = Key::ctrl_right; - else if (key == "shift_right" || key == "shiftright" || key == "shiftr") parsedKey = Key::shift_right; - else if (key == "alt_right" || key == "altright" || key == "altr" || key == "altgr") parsedKey = Key::alt_right; - else if (key == "win_right" || key == "winright" || key == "winr") parsedKey = Key::win_right; - else if (key == "meta_right" || key == "metaright" || key == "metar") parsedKey = Key::win_right; - else if (key == "g1") parsedKey = Key::g1; - else if (key == "g2") parsedKey = Key::g2; - else if (key == "g3") parsedKey = Key::g3; - else if (key == "g4") parsedKey = Key::g4; - else if (key == "g5") parsedKey = Key::g5; - else if (key == "g6") parsedKey = Key::g6; - else if (key == "g7") parsedKey = Key::g7; - else if (key == "g8") parsedKey = Key::g8; - else if (key == "g9") parsedKey = Key::g9; - else return false; - return getKeyAddress(parsedKey, keyAddress); + +bool LedKeyboard::setStartupMode(StartupMode startupMode) { + byte_buffer_t data; + switch (m_keyboardModel) { + case KeyboardModel::g410: + case KeyboardModel::g610: + case KeyboardModel::g810: + data = { 0x11, 0xff, 0x0d, 0x5a, 0x00, 0x01 }; + break; + case KeyboardModel::g910: + data = { 0x11, 0xff, 0x10, 0x5e, 0x00, 0x01 }; + break; + default: + return false; + } + data.push_back((unsigned char)startupMode); + data.resize(20, 0x00); + return sendDataInternal(data); } -bool Keyboard::parseKeyGroup(std::string key, KeyGroup &keyGroup) { - if (key == "logo") keyGroup = KeyGroup::logo; - else if (key == "indicators") keyGroup = KeyGroup::indicators; - else if (key == "multimedia") keyGroup = KeyGroup::multimedia; - else if (key == "fkeys") keyGroup = KeyGroup::fkeys; - else if (key == "modifiers") keyGroup = KeyGroup::modifiers; - else if (key == "arrows") keyGroup = KeyGroup::arrows; - else if (key == "numeric") keyGroup = KeyGroup::numeric; - else if (key == "functions") keyGroup = KeyGroup::functions; - else if (key == "keys") keyGroup = KeyGroup::keys; - else if (key == "gkeys") keyGroup = KeyGroup::gkeys; - else return false; - return true; + +bool LedKeyboard::setNativeEffect(NativeEffect effect, NativeEffectPart part, uint8_t speed, Color color) { + byte_buffer_t data; + switch (effect) { + + case NativeEffect::color: + data = { 0x11, 0xff, 0x0d, 0x3c, (uint8_t)part, 0x01, color.red, color.green, color.blue, 0x02 }; + break; + case NativeEffect::breathing: + data = { + 0x11, 0xff, 0x0d, 0x3c, (uint8_t)part, 0x02, + color.red, color.green, color.blue, speed, + 0x10, 0x00, 0x64 + }; + break; + case NativeEffect::cycle: + data = { + 0x11, 0xff, 0x0d, 0x3c, (uint8_t)part, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, speed, 0x00, 0x00, 0x64 + }; + break; + case NativeEffect::hwave: + switch (part) { + case NativeEffectPart::logo: + setNativeEffect(NativeEffect::color, part, 0, Color({0x00, 0xff, 0xff})); + break; + default: + data = { + 0x11, 0xff, 0x0d, 0x3c, (uint8_t)part, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x01, 0x64, speed + }; + break; + } + break; + case NativeEffect::vwave: + switch (part) { + case NativeEffectPart::logo: + setNativeEffect(NativeEffect::color, part, 0, Color({0x00, 0xff, 0xff})); + break; + default: + data = { + 0x11, 0xff, 0x0d, 0x3c, (uint8_t)part, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x02, 0x64, speed + }; + break; + } + break; + case NativeEffect::cwave: + switch (part) { + case NativeEffectPart::logo: + setNativeEffect(NativeEffect::color, part, 0, Color({0x00, 0xff, 0xff})); + break; + default: + data = { + 0x11, 0xff, 0x0d, 0x3c, (uint8_t)part, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x03, 0x64, speed + }; + break; + } + break; + + default: + return false; + } + + data.resize(20, 0x00); + return sendDataInternal(data); } -bool Keyboard::parseColor(std::string color, KeyColors &colors) { - if (color.length() == 2) color = color + "0000"; // For G610 - if (color.length() != 6) return false; - colors.red = std::stoul("0x"+color.substr(0,2), nullptr, 16); - colors.green = std::stoul("0x"+color.substr(2,2), nullptr, 16); - colors.blue = std::stoul("0x"+color.substr(4,2), nullptr, 16); - return true; -} -bool Keyboard::parseSpeed(std::string speed, uint8_t &speedValue) { - if (speed.length() == 1) speed = speed + "0"; - if (speed.length() != 2) return false; - speedValue = std::stoul("0x"+speed, nullptr, 16); - return true; -} -bool Keyboard::sendDataInternal(unsigned char *data, uint16_t data_size) { - if (m_isAttached == false) return false; +bool LedKeyboard::sendDataInternal(const byte_buffer_t &data) { + if (! m_isOpen) return false; int r; - if (data_size > 20) r = libusb_control_transfer(dev_handle, 0x21, 0x09, 0x0212, 1, data, data_size, 2000); - else r = libusb_control_transfer(dev_handle, 0x21, 0x09, 0x0211, 1, data, data_size, 2000); + if (data.size() > 20) r = libusb_control_transfer(m_hidHandle, 0x21, 0x09, 0x0212, 1, const_cast(data.data()), data.size(), 2000); + else r = libusb_control_transfer(m_hidHandle, 0x21, 0x09, 0x0211, 1, const_cast(data.data()), data.size(), 2000); usleep(1000); if (r < 0) return false; unsigned char buffer[64]; int len = 0; - r = libusb_interrupt_transfer(dev_handle, 0x82, buffer, sizeof(buffer), &len, 1); + r = libusb_interrupt_transfer(m_hidHandle, 0x82, buffer, sizeof(buffer), &len, 1); return true; } -bool Keyboard::populateAddressGroupInternal(KeyAddressGroup addressGroup, unsigned char *data) { - switch (kbdProtocol) { - case KeyboardProtocol::generic: - switch (addressGroup) { - case KeyAddressGroup::logo: - data[0] = 0x11; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0c; // Base address - data[3] = 0x3a; // Base address - data[4] = 0x00; // Base address - data[5] = 0x10; // Base address - data[6] = 0x00; // Base address - data[7] = 0x01; // Base address - break; - case KeyAddressGroup::indicators: - data[0] = 0x12; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0c; // Base address - data[3] = 0x3a; // Base address - data[4] = 0x00; // Base address - data[5] = 0x40; // Base address - data[6] = 0x00; // Base address - data[7] = 0x05; // Base address - break; - case KeyAddressGroup::multimedia: - data[0] = 0x12; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0c; // Base address - data[3] = 0x3a; // Base address - data[4] = 0x00; // Base address - data[5] = 0x02; // Base address - data[6] = 0x00; // Base address - data[7] = 0x05; // Base address - break; - case KeyAddressGroup::keys: - data[0] = 0x12; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0c; // Base address - data[3] = 0x3a; // Base address - data[4] = 0x00; // Base address - data[5] = 0x01; // Base address - data[6] = 0x00; // Base address - data[7] = 0x0e; // Base address - break; - default: - return false; - break; +LedKeyboard::byte_buffer_t LedKeyboard::getKeyGroupAddress(LedKeyboard::KeyAddressGroup keyAddressGroup) { + switch (m_keyboardModel) { + case KeyboardModel::g410: + case KeyboardModel::g610: + case KeyboardModel::g810: + switch (keyAddressGroup) { + case LedKeyboard::KeyAddressGroup::logo: + return { 0x11, 0xff, 0x0c, 0x3a, 0x00, 0x10, 0x00, 0x01 }; + case LedKeyboard::KeyAddressGroup::indicators: + return { 0x12, 0xff, 0x0c, 0x3a, 0x00, 0x40, 0x00, 0x05 }; + case LedKeyboard::KeyAddressGroup::gkeys: + return {}; + case LedKeyboard::KeyAddressGroup::multimedia: + return { 0x12, 0xff, 0x0c, 0x3a, 0x00, 0x02, 0x00, 0x05 }; + case LedKeyboard::KeyAddressGroup::keys: + return { 0x12, 0xff, 0x0c, 0x3a, 0x00, 0x01, 0x00, 0x0e }; } break; - case KeyboardProtocol::g910: // gkeys and mkeys seem not changeable - switch (addressGroup) { - case KeyAddressGroup::logo: - data[0] = 0x11; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0f; // Base address - data[3] = 0x3a; // Base address - data[4] = 0x00; // Base address - data[5] = 0x10; // Base address - data[6] = 0x00; // Base address - data[7] = 0x02; // Base address - break; - case KeyAddressGroup::indicators: - data[0] = 0x12; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0c; // Base address - data[3] = 0x3a; // Base address - data[4] = 0x00; // Base address - data[5] = 0x40; // Base address - data[6] = 0x00; // Base address - data[7] = 0x05; // Base address - break; - case KeyAddressGroup::keys: - data[0] = 0x12; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0f; // Base address - data[3] = 0x3d; // Base address - data[4] = 0x00; // Base address - data[5] = 0x01; // Base address - data[6] = 0x00; // Base address - data[7] = 0x0e; // Base address - break; - case KeyAddressGroup::gkeys: - data[0] = 0x12; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0f; // Base address - data[3] = 0x3e; // Base address - data[4] = 0x00; // Base address - data[5] = 0x04; // Base address - data[6] = 0x00; // Base address - data[7] = 0x09; // Base address - break; - default: - return false; - break; + case KeyboardModel::g910: + switch (keyAddressGroup) { + case LedKeyboard::KeyAddressGroup::logo: + return { 0x11, 0xff, 0x0f, 0x3a, 0x00, 0x10, 0x00, 0x02 }; + case LedKeyboard::KeyAddressGroup::indicators: + return { 0x12, 0xff, 0x0c, 0x3a, 0x00, 0x40, 0x00, 0x05 }; + case LedKeyboard::KeyAddressGroup::gkeys: + return { 0x12, 0xff, 0x0f, 0x3e, 0x00, 0x04, 0x00, 0x09 }; + case LedKeyboard::KeyAddressGroup::multimedia: + return {}; + case LedKeyboard::KeyAddressGroup::keys: + return { 0x12, 0xff, 0x0f, 0x3d, 0x00, 0x01, 0x00, 0x0e }; } break; default: - return false; break; } - return true; -} - -bool Keyboard::populateFXAddressInternal(unsigned char *data) { - switch (kbdProtocol) { - case KeyboardProtocol::generic: - data[0] = 0x11; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0d; // Base address - data[3] = 0x3c; // Base address - break; - case KeyboardProtocol::g910: - data[0] = 0x11; // Base address - data[1] = 0xff; // Base address - data[2] = 0x10; // Base address - data[3] = 0x3c; // Base address - break; - default: - return false; - break; - } - return true; -} - -bool Keyboard::setKeysInternal(KeyAddressGroup addressGroup, KeyValue keyValues[], size_t keyValueCount) { - bool retval = false; - int data_size; - if (addressGroup == KeyAddressGroup::logo) data_size = 20; - else data_size = 64; - unsigned char *data = new unsigned char[data_size]; - const size_t maxKeyValueCount = (data_size - 8) / 4; - populateAddressGroupInternal(addressGroup, data); - for(size_t i = 0; i < maxKeyValueCount; i++) { - if (i < keyValueCount) { - data[8 + i * 4 + 0] = keyValues[i].key.id; - data[8 + i * 4 + 1] = keyValues[i].colors.red; - data[8 + i * 4 + 2] = keyValues[i].colors.green; - data[8 + i * 4 + 3] = keyValues[i].colors.blue; - } else { - data[8 + i * 4 + 0] = 0x00; - data[8 + i * 4 + 1] = 0x00; - data[8 + i * 4 + 2] = 0x00; - data[8 + i * 4 + 3] = 0x00; - } - } - retval = sendDataInternal(data, data_size); - delete[] data; - return retval; -} - -bool Keyboard::setPowerOnEffect(PowerOnEffect powerOnEffect) { - bool retval = false; - int data_size = 20; - unsigned char *data = new unsigned char[data_size]; - switch (kbdProtocol) { - case KeyboardProtocol::generic: - data[0] = 0x11; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0d; // Base address - data[3] = 0x5a; // Base address - data[4] = 0x00; // Base address - data[5] = 0x01; // Base address - case KeyboardProtocol::g910: - data[0] = 0x11; // Base address - data[1] = 0xff; // Base address - data[2] = 0x10; // Base address - data[3] = 0x5e; // Base address - data[4] = 0x00; // Base address - data[5] = 0x01; // Base address - } - switch (powerOnEffect) { - case PowerOnEffect::rainbow: - data[6] = 0x01; - break; - case PowerOnEffect::color: - data[6] = 0x02; - break; - } - for(int i = 7; i < data_size; i++) data[i] = 0x00; - retval = sendDataInternal(data, data_size); - delete[] data; - return retval; -} - -bool Keyboard::setKey(KeyValue keyValue) { - bool retval = false; - unsigned char *data; - int data_size; - if (keyValue.key.addressGroup == KeyAddressGroup::logo) { - data_size = 20; - data = new unsigned char[data_size]; - populateAddressGroupInternal(keyValue.key.addressGroup, data); - } else { - data_size = 64; - data = new unsigned char[data_size]; - populateAddressGroupInternal(keyValue.key.addressGroup, data); - } - data[8] = keyValue.key.id; - data[9] = keyValue.colors.red; - data[10] = keyValue.colors.green; - data[11] = keyValue.colors.blue; - for(int i = 12; i < data_size; i++) data[i] = 0x00; - retval = sendDataInternal(data, data_size); - delete[] data; - return retval; -} - -bool Keyboard::setKey(Key key, KeyColors colors) { - KeyValue keyValue; - getKeyAddress(key, keyValue.key); - keyValue.colors = colors; - return setKey(keyValue); -} - -bool Keyboard::setKeys(KeyValue keyValue[], size_t keyValueCount) { - const size_t maxLogoKeys = 5; - const size_t maxIndicatorsKeys = 25; - const size_t maxMultimediaKeys = 25; - const size_t maxKeys = 200; - const size_t maxGKeys = 25; - size_t logoCount = 0; - size_t indicatorsCount = 0; - size_t multimediaCount = 0; - size_t keysCount = 0; - size_t gkeysCount = 0; - KeyValue logo[maxLogoKeys]; - KeyValue indicators[maxIndicatorsKeys]; - KeyValue multimedia[maxMultimediaKeys]; - KeyValue keys[maxKeys]; - KeyValue gkeys[maxGKeys]; - - for (size_t i = 0; i < keyValueCount; i++) { - if(keyValue[i].key.addressGroup == KeyAddressGroup::logo && logoCount <= maxLogoKeys) { - logo[logoCount] = keyValue[i]; - logoCount++; - } else if(keyValue[i].key.addressGroup == KeyAddressGroup::indicators && indicatorsCount <= maxIndicatorsKeys) { - indicators[indicatorsCount] = keyValue[i]; - indicatorsCount++; - } else if(keyValue[i].key.addressGroup == KeyAddressGroup::multimedia && multimediaCount <= maxMultimediaKeys) { - multimedia[multimediaCount] = keyValue[i]; - multimediaCount++; - } else if(keyValue[i].key.addressGroup == KeyAddressGroup::keys && keysCount <= maxKeys) { - keys[keysCount] = keyValue[i]; - keysCount++; - } else if(keyValue[i].key.addressGroup == KeyAddressGroup::gkeys && gkeysCount <= maxGKeys) { - gkeys[gkeysCount] = keyValue[i]; - gkeysCount++; - } - } - - if (logoCount > 0) setKeysInternal(KeyAddressGroup::logo, logo, logoCount); - - if (indicatorsCount > 0) setKeysInternal(KeyAddressGroup::indicators, indicators, indicatorsCount); - - if (multimediaCount > 0) setKeysInternal(KeyAddressGroup::multimedia, multimedia, multimediaCount); - - if (keysCount > 0) { - const size_t maxKeyValueCount = 14; - for (size_t i = 0; i < keysCount; i = i + maxKeyValueCount) { - KeyValue keysBlock[maxKeyValueCount]; - size_t keysBlockCount = 0; - for (size_t j = 0; j < maxKeyValueCount; j++) { - if((i + j) < keysCount ) { - keysBlock[j] = keys[i + j]; - keysBlockCount++; - } - } - setKeysInternal(KeyAddressGroup::keys, keysBlock, keysBlockCount); - } - } - - if (gkeysCount > 0) setKeysInternal(KeyAddressGroup::gkeys, gkeys, gkeysCount); - - return true; -} - -bool Keyboard::setAllKeys(KeyColors colors) { - KeyValue keyValues[127]; - for (int i = 0; i < 127; i++) { - getKeyAddress((Key)i, keyValues[i].key); - keyValues[i].colors = colors; - } - setKeys(keyValues, 127); - return true; -} - -bool Keyboard::setGroupKeys(KeyGroup keyGroup, KeyColors colors) { - KeyValue keyValues[54]; - int keyValuesCount = 0; - switch (keyGroup) { - case KeyGroup::logo: - for (int i = 0; i < 2; i++) { - getKeyAddress((Key)i, keyValues[i].key); - keyValues[i].colors = colors; - keyValuesCount++; - } - setKeys(keyValues, keyValuesCount); - break; - case KeyGroup::indicators: - for (int i = 2; i < 7; i++) { - getKeyAddress((Key)i, keyValues[i - 2].key); - keyValues[i - 2].colors = colors; - keyValuesCount++; - } - setKeys(keyValues, keyValuesCount); - break; - case KeyGroup::multimedia: - for (int i = 7; i < 12; i++) { - getKeyAddress((Key)i, keyValues[i - 7].key); - keyValues[i - 7].colors = colors; - keyValuesCount++; - } - setKeys(keyValues, keyValuesCount); - break; - case KeyGroup::fkeys: - for (int i = 12; i < 24; i++) { - getKeyAddress((Key)i, keyValues[i - 12].key); - keyValues[i - 12].colors = colors; - keyValuesCount++; - } - setKeys(keyValues, keyValuesCount); - break; - case KeyGroup::modifiers: - for (int i = 24; i < 33; i++) { - getKeyAddress((Key)i, keyValues[i - 24].key); - keyValues[i - 24].colors = colors; - keyValuesCount++; - } - setKeys(keyValues, keyValuesCount); - break; - case KeyGroup::arrows: - for (int i = 33; i < 37; i++) { - getKeyAddress((Key)i, keyValues[i - 33].key); - keyValues[i - 33].colors = colors; - keyValuesCount++; - } - setKeys(keyValues, keyValuesCount); - break; - case KeyGroup::numeric: - for (int i = 37; i < 54; i++) { - getKeyAddress((Key)i, keyValues[i - 37].key); - keyValues[i - 37].colors = colors; - keyValuesCount++; - } - setKeys(keyValues, keyValuesCount); - break; - case KeyGroup::functions: - for (int i = 54; i < 64; i++) { - getKeyAddress((Key)i, keyValues[i - 54].key); - keyValues[i - 54].colors = colors; - keyValuesCount++; - } - setKeys(keyValues, keyValuesCount); - break; - case KeyGroup::keys: - for (int i = 64; i < 118; i++) { - getKeyAddress((Key)i, keyValues[i - 64].key); - keyValues[i - 64].colors = colors; - keyValuesCount++; - } - setKeys(keyValues, keyValuesCount); - break; - case KeyGroup::gkeys: - for (int i = 118; i < 127; i++) { - getKeyAddress((Key)i, keyValues[i - 118].key); - keyValues[i - 118].colors = colors; - keyValuesCount++; - } - setKeys(keyValues, keyValuesCount); - break; - } - return true; -} - -bool Keyboard::setFXColorKeys(KeyColors colors) { - bool retval = false; - int data_size = 20; - unsigned char *data = new unsigned char[data_size]; - - // Keys - populateFXAddressInternal(data); - data[4] = 0x00; // Keys - data[5] = 0x01; // Effect - data[6] = colors.red; - data[7] = colors.green; - data[8] = colors.blue; - data[9] = 0x02; - for(int i = 10; i < data_size; i++) data[i] = 0x00; - retval = sendDataInternal(data, data_size); - - delete[] data; - return retval; -} - -bool Keyboard::setFXColorLogo(KeyColors colors) { - bool retval = false; - int data_size = 20; - unsigned char *data = new unsigned char[data_size]; - - // Logo - populateFXAddressInternal(data); - data[4] = 0x01; // Logo - data[5] = 0x01; // Effect - data[6] = colors.red; - data[7] = colors.green; - data[8] = colors.blue; - data[9] = 0x02; - for(int i = 10; i < data_size; i++) data[i] = 0x00; - retval = sendDataInternal(data, data_size); - - delete[] data; - return retval; -} - -bool Keyboard::setFXBreathingKeys(KeyColors colors, uint8_t speed) { - bool retval = false; - int data_size = 20; - unsigned char *data = new unsigned char[data_size]; - - // Keys - populateFXAddressInternal(data); - data[4] = 0x00; // Keys - data[5] = 0x02; // Effect - data[6] = colors.red; - data[7] = colors.green; - data[8] = colors.blue; - data[9] = speed; // Speed - data[10] = 0x10; // ??? - data[11] = 0x00; - data[12] = 0x64; - for(int i = 13; i < data_size; i++) data[i] = 0x00; - retval = sendDataInternal(data, data_size); - - delete[] data; - return retval; -} - -bool Keyboard::setFXBreathingLogo(KeyColors colors, uint8_t speed) { - bool retval = false; - int data_size = 20; - unsigned char *data = new unsigned char[data_size]; - - // Logo - populateFXAddressInternal(data); - data[4] = 0x01; // Logo - data[5] = 0x02; // Effect - data[6] = colors.red; - data[7] = colors.green; - data[8] = colors.blue; - data[9] = speed; // Speed - data[10] = 0x10; // ??? - data[11] = 0x00; - data[12] = 0x64; - for(int i = 13; i < data_size; i++) data[i] = 0x00; - retval = sendDataInternal(data, data_size); - - delete[] data; - return retval; -} - -bool Keyboard::setFXColorCycleKeys(uint8_t speed) { - bool retval = false; - int data_size = 20; - unsigned char *data = new unsigned char[data_size]; - - // Keys - populateFXAddressInternal(data); - data[4] = 0x00; // Keys - data[5] = 0x03; // Effect - data[6] = 0x00; - data[7] = 0x00; - data[8] = 0x00; - data[9] = 0x00; - data[10] = 0x00; - data[11] = speed; // Speed - data[12] = 0x00; // ??? - data[13] = 0x00; - data[14] = 0x64; - for(int i = 15; i < data_size; i++) data[i] = 0x00; - retval = sendDataInternal(data, data_size); - - delete[] data; - return retval; -} - -bool Keyboard::setFXColorCycleLogo(uint8_t speed) { - bool retval = false; - int data_size = 20; - unsigned char *data = new unsigned char[data_size]; - - // Logo - populateFXAddressInternal(data); - data[4] = 0x01; // Logo - data[5] = 0x03; // Effect - data[6] = 0x00; - data[7] = 0x00; - data[8] = 0x00; - data[9] = 0x00; - data[10] = 0x00; - data[11] = speed; // Speed - data[12] = 0x00; // ??? - data[13] = 0x00; - data[14] = 0x64; - for(int i = 15; i < data_size; i++) data[i] = 0x00; - retval = sendDataInternal(data, data_size); - - delete[] data; - return retval; -} - -bool Keyboard::setFXHWaveKeys(uint8_t speed) { - bool retval = false; - int data_size = 20; - unsigned char *data = new unsigned char[data_size]; - - // Keys - populateFXAddressInternal(data); - data[4] = 0x00; // Keys - data[5] = 0x04; // Effect - data[6] = 0x00; - data[7] = 0x00; - data[8] = 0x00; - data[9] = 0x00; - data[10] = 0x00; - data[11] = 0x00; - data[12] = 0x88; - data[13] = 0x01; - data[14] = 0x64; - data[15] = speed; // Speed - for(int i = 16; i < data_size; i++) data[i] = 0x00; - retval = sendDataInternal(data, data_size); - - delete[] data; - return retval; -} - -bool Keyboard::setFXVWaveKeys(uint8_t speed) { - bool retval = false; - int data_size = 20; - unsigned char *data = new unsigned char[data_size]; - - // Keys - populateFXAddressInternal(data); - data[4] = 0x00; // Keys - data[5] = 0x04; // Effect - data[6] = 0x00; - data[7] = 0x00; - data[8] = 0x00; - data[9] = 0x00; - data[10] = 0x00; - data[11] = 0x00; - data[12] = 0x88; - data[13] = 0x02; - data[14] = 0x64; - data[15] = speed; // Speed - for(int i = 16; i < data_size; i++) data[i] = 0x00; - retval = sendDataInternal(data, data_size); - - delete[] data; - return retval; -} - -bool Keyboard::setFXCWaveKeys(uint8_t speed) { - bool retval = false; - int data_size = 20; - unsigned char *data = new unsigned char[data_size]; - - // Keys - populateFXAddressInternal(data); - data[4] = 0x00; // Keys - data[5] = 0x04; // Effect - data[6] = 0x00; - data[7] = 0x00; - data[8] = 0x00; - data[9] = 0x00; - data[10] = 0x00; - data[11] = 0x00; - data[12] = 0x88; - data[13] = 0x03; - data[14] = 0x64; - data[15] = speed; // Speed - for(int i = 16; i < data_size; i++) data[i] = 0x00; - retval = sendDataInternal(data, data_size); - - delete[] data; - return retval; + return {}; } diff --git a/src/classes/Keyboard.h b/src/classes/Keyboard.h index 5571e4e..86864cc 100644 --- a/src/classes/Keyboard.h +++ b/src/classes/Keyboard.h @@ -1,81 +1,195 @@ -#ifndef DEF_KEYBOARD -#define DEF_KEYBOARD +#ifndef KEYBOARD_CLASS +#define KEYBOARD_CLASS #include -#include +#include -class Keyboard { +#include "libusb-1.0/libusb.h" + + +class LedKeyboard { + + private: + + const std::vector> SuportedKeyboards = { + { 0x46d, 0xc330, (u_int16_t)KeyboardModel::g410 }, + { 0x46d, 0xc333, (u_int16_t)KeyboardModel::g610 }, + { 0x46d, 0xc338, (u_int16_t)KeyboardModel::g610 }, + { 0x46d, 0xc331, (u_int16_t)KeyboardModel::g810 }, + { 0x46d, 0xc337, (u_int16_t)KeyboardModel::g810 }, + { 0x46d, 0xc32b, (u_int16_t)KeyboardModel::g910 }, + { 0x46d, 0xc335, (u_int16_t)KeyboardModel::g910 } + }; + + + enum class KeyAddressGroup : uint8_t { + logo = 0x00, + indicators, + multimedia, + gkeys, + keys + }; + + public: - enum class KeyboardProtocol { generic, g910 }; - enum class PowerOnEffect { rainbow, color }; - enum class KeyAddressGroup { logo, indicators, multimedia, keys, gkeys }; - enum class Key { // 127 items - logo, logo2, - caps, num, scroll, game, backlight, - mute, play, stop, prev, next, - f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, - shift_left, ctrl_left, win_left, alt_left, alt_right, win_right, ctrl_right, shift_right, menu, - arrow_top, arrow_left, arrow_bottom, arrow_right, - num_1, num_2, num_3, num_4, num_5, num_6, num_7, num_8, num_9, num_0, num_dot, num_enter, num_plus, num_minus, num_asterisk, num_slash, num_lock, - esc, scroll_lock, - insert, del, home, end, page_up, page_down, print_screen, pause_break, - n1, n2, n3, n4, n5, n6, n7, n8, n9, n0, - tab, caps_lock, space, backspace, enter, - a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, - tilde, minus, equal, - open_bracket, close_bracket, backslash, - semicolon, quote, dollar, - intl_backslash, comma, period, slash, - g1, g2, g3, g4, g5, g6, g7, g8, g9 + enum class KeyboardModel : uint8_t { + unknown = 0x00, + g410, + g610, + g810, + g910 + }; + enum class StartupMode : uint8_t { + wave = 0x01, + color + }; + enum class NativeEffect : uint8_t { + color = 0x01, + breathing, + cycle, + hwave, + vwave, + cwave + }; + enum class NativeEffectPart : uint8_t { + all = 0xff, + keys = 0x00, + logo + }; + enum class KeyGroup : uint8_t { + logo = 0x00, + indicators, + multimedia, + gkeys, + fkeys, + modifiers, + functions, + arrows, + numeric, + keys + }; + enum class Key : uint16_t { // 127 items + + logo = static_cast(KeyAddressGroup::logo) << 8 | 0x01, + logo2, + + backlight = static_cast(KeyAddressGroup::indicators) << 8| 0x01, + game, caps, scroll, num, + + next = static_cast(KeyAddressGroup::multimedia) << 8 | 0xb5, + prev, stop, + play = static_cast(KeyAddressGroup::multimedia) << 8 | 0xcd, + mute = static_cast(KeyAddressGroup::multimedia) << 8 | 0xe2, + + g1 = static_cast(KeyAddressGroup::gkeys) << 8 | 0x01, + g2, g3, g4, g5, g6, g7, g8, g9, + + a = static_cast(KeyAddressGroup::keys) << 8 | 0x04, + b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, + n1, n2, n3, n4, n5, n6, n7, n8, n9, n0, + enter, esc, backspace, tab, space, minus, equal, open_bracket, close_bracket, + backslash, dollar, semicolon, quote, tilde, comma, period, slash, caps_lock, + f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, + print_screen, scroll_lock, pause_break, insert, home, page_up, del, end, page_down, + arrow_right, arrow_left, arrow_bottom, arrow_top, num_lock, num_slash, num_asterisk, + num_minus, num_plus, num_enter, + num_1, num_2, num_3, num_4, num_5, num_6, num_7, num_8, num_9, num_0, + num_dot, intl_backslash, menu, + + ctrl_left = static_cast(KeyAddressGroup::keys) << 8 | 0xe0, + shift_left, alt_left, win_left, + ctrl_right, shift_right, alt_right, win_right + }; - enum class KeyGroup { logo, indicators, multimedia, fkeys, modifiers, arrows, numeric, functions, keys, gkeys}; - struct KeyColors { uint8_t red; uint8_t green; uint8_t blue; }; - struct KeyAddress { KeyAddressGroup addressGroup; uint8_t id; }; - struct KeyValue { KeyAddress key; KeyColors colors; }; - bool isAttached(); - bool attach(); - bool detach(); + struct Color { + uint8_t red; + uint8_t green; + uint8_t blue; + }; + struct KeyValue { + LedKeyboard::Key key; + LedKeyboard::Color color; + }; + + typedef std::vector KeyValueArray; + + + ~LedKeyboard(); + + + bool listKeyboards(); + + bool isOpen(); + bool open(); + bool close(); + + KeyboardModel getKeyboardModel(); + bool commit(); - bool getKeyAddress(Key key, KeyAddress &keyAddress); - bool parsePowerOnEffect(std::string effect, PowerOnEffect &powerOnEffect); - bool parseKey(std::string key, KeyAddress &keyAddress); - bool parseKeyGroup(std::string key, KeyGroup &keyGroup); - bool parseColor(std::string color, KeyColors &colors); - bool parseSpeed(std::string speed, uint8_t &speedValue); - bool setPowerOnEffect(PowerOnEffect powerOnEffect); + bool setKey(KeyValue keyValue); - bool setKey(Key key, KeyColors colors); - bool setKeys(KeyValue keyValue[], size_t keyValueCount); - bool setAllKeys(KeyColors colors); - bool setGroupKeys(KeyGroup keyGroup, KeyColors colors); - bool setFXColorKeys(KeyColors colors); - bool setFXColorLogo(KeyColors colors); - bool setFXBreathingKeys(KeyColors colors, uint8_t speed); - bool setFXBreathingLogo(KeyColors colors, uint8_t speed); - bool setFXColorCycleKeys(uint8_t speed); - bool setFXColorCycleLogo(uint8_t speed); - bool setFXHWaveKeys(uint8_t speed); - bool setFXVWaveKeys(uint8_t speed); - bool setFXCWaveKeys(uint8_t speed); + bool setKeys(KeyValueArray keyValues); + bool setGroupKeys(KeyGroup keyGroup, Color color); + bool setAllKeys(Color color); + + bool setStartupMode(StartupMode startupMode); + + bool setNativeEffect(NativeEffect effect, NativeEffectPart part, uint8_t speed, Color color); + private: - bool m_isAttached = false; - bool m_isKernellDetached = false; - KeyboardProtocol kbdProtocol = KeyboardProtocol::generic; - libusb_device **devs; - libusb_device_handle *dev_handle; - libusb_context *ctx = NULL; + typedef std::vector byte_buffer_t; + typedef std::vector KeyArray; - bool populateAddressGroupInternal(KeyAddressGroup addressGroup, unsigned char *data); - bool populateFXAddressInternal(unsigned char *data); - bool sendDataInternal(unsigned char *data, uint16_t data_size); - bool setKeysInternal(KeyAddressGroup addressGroup, KeyValue keyValues[], size_t keyValueCount); + + const KeyArray keyGroupLogo = { Key::logo, Key::logo2 }; + const KeyArray keyGroupIndicators = { Key::caps, Key::num, Key::scroll, Key::game, Key::backlight }; + const KeyArray keyGroupMultimedia = { Key::next, Key::prev, Key::stop, Key::play, Key::mute }; + const KeyArray keyGroupGKeys = { Key::g1, Key::g2, Key::g3, Key::g4, Key::g5, Key::g6, Key::g7, Key::g8, Key::g9 }; + const KeyArray keyGroupFKeys = { + Key::f1, Key::f2, Key::f3, Key::f4, Key::f5, Key::f6, + Key::f7, Key::f8, Key::f9, Key::f10, Key::f11, Key::f12 + }; + const KeyArray keyGroupModifiers = { + Key::shift_left, Key::ctrl_left, Key::win_left, Key::alt_left, + Key::alt_right, Key::win_right, Key::ctrl_right, Key::shift_right, Key::menu }; + const KeyArray keyGroupFunctions = { + Key::esc, Key::print_screen, Key::scroll_lock, Key::pause_break, + Key::insert, Key::del, Key::home, Key::end, Key::page_up, Key::page_down + }; + const KeyArray keyGroupArrows = { Key::arrow_top, Key::arrow_left, Key::arrow_bottom, Key::arrow_right }; + const KeyArray keyGroupNumeric = { + Key::num_1, Key::num_2, Key::num_3, Key::num_4, Key::num_5, + Key::num_6, Key::num_7, Key::num_8, Key::num_9, Key::num_0, + Key::num_dot, Key::num_enter, Key::num_plus, Key::num_minus, + Key::num_asterisk, Key::num_slash, Key::num_lock + }; + const KeyArray keyGroupKeys = { + Key::a, Key::b, Key::c, Key::d, Key::e, Key::f, Key::g, Key::h, Key::i, Key::j, Key::k, Key::l, Key::m, + Key::n, Key::o, Key::p, Key::q, Key::r, Key::s, Key::t, Key::u, Key::v, Key::w, Key::x, Key::y, Key::z, + Key::n1, Key::n2, Key::n3, Key::n4, Key::n5, Key::n6, Key::n7, Key::n8, Key::n9, Key::n0, + Key::enter, Key::esc, Key::backspace, Key::tab, Key::space, Key::minus, Key::equal, + Key::open_bracket, Key::close_bracket, Key::backslash, Key::dollar, Key::semicolon, Key::quote, Key::tilde, + Key::comma, Key::period, Key::slash, Key::caps_lock, Key::intl_backslash + }; + + bool m_isOpen = false; + bool m_isKernellDetached = false; + uint16_t m_vendorID = 0; + uint16_t m_productID = 0; + KeyboardModel m_keyboardModel = KeyboardModel::unknown; + libusb_device_handle *m_hidHandle; + libusb_context *m_ctx = NULL; + + + bool sendDataInternal(const byte_buffer_t &data); + byte_buffer_t getKeyGroupAddress(KeyAddressGroup keyAddressGroup); }; diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp new file mode 100644 index 0000000..3092f09 --- /dev/null +++ b/src/helpers/help.cpp @@ -0,0 +1,187 @@ +#include "help.h" + +#include +#include "utils.h" + + +using namespace std; + +namespace help { + + + void usage(char *arg0) { + string cmdName = utils::getCmdName(arg0); + cout< + +namespace help { + + void usage(char *arg0); + void keys(char *arg0); + void effects(char *arg0); + void samples(char *arg0); + +} + +#endif diff --git a/src/helpers/utils.cpp b/src/helpers/utils.cpp new file mode 100644 index 0000000..19ce07a --- /dev/null +++ b/src/helpers/utils.cpp @@ -0,0 +1,212 @@ +#include "utils.h" + +#include +#include + +#include "../classes/Keyboard.h" + + +namespace utils { + + std::string getCmdName(std::string cmd) { + return cmd.substr(cmd.find_last_of("/\\") + 1); + } + + + + bool parseStartupMode(std::string val, LedKeyboard::StartupMode &startupMode) { + if (val == "wave") startupMode = LedKeyboard::StartupMode::wave; + else if (val == "color") startupMode = LedKeyboard::StartupMode::color; + else return false; + return true; + } + + bool parseNativeEffect(std::string val, LedKeyboard::NativeEffect &nativeEffect) { + if (val == "color") nativeEffect = LedKeyboard::NativeEffect::color; + else if (val == "cycle") nativeEffect = LedKeyboard::NativeEffect::cycle; + else if (val == "breathing") nativeEffect = LedKeyboard::NativeEffect::breathing; + else if (val == "hwave") nativeEffect = LedKeyboard::NativeEffect::hwave; + else if (val == "vwave") nativeEffect = LedKeyboard::NativeEffect::vwave; + else if (val == "cwave") nativeEffect = LedKeyboard::NativeEffect::cwave; + else return false; + return true; + } + + bool parseNativeEffectPart(std::string val, LedKeyboard::NativeEffectPart &nativeEffectPart) { + if (val == "all") nativeEffectPart = LedKeyboard::NativeEffectPart::all; + else if (val == "keys") nativeEffectPart = LedKeyboard::NativeEffectPart::keys; + else if (val == "logo") nativeEffectPart = LedKeyboard::NativeEffectPart::logo; + else return false; + return true; + } + + bool parseKey(std::string val, LedKeyboard::Key &key) { + std::transform(val.begin(), val.end(), val.begin(), ::tolower); + if (val == "logo") key = LedKeyboard::Key::logo; + else if (val == "logo2") key = LedKeyboard::Key::logo2; + else if (val == "back_light" || val == "backlight" || val == "light") key = LedKeyboard::Key::backlight; + else if (val == "game_mode" || val == "gamemode" || val == "game") key = LedKeyboard::Key::game; + else if (val == "caps_indicator" || val == "capsindicator" || val == "caps") key = LedKeyboard::Key::caps; + else if (val == "scroll_indicator" || val == "scrollindicator" || val == "scroll") key = LedKeyboard::Key::scroll; + else if (val == "num_indicator" || val == "numindicator" || val == "num") key = LedKeyboard::Key::num; + else if (val == "next") key = LedKeyboard::Key::next; + else if (val == "prev" || val == "previous") key = LedKeyboard::Key::prev; + else if (val == "stop") key = LedKeyboard::Key::stop; + else if (val == "play_pause" || val == "playpause" || val == "play") key = LedKeyboard::Key::play; + else if (val == "mute") key = LedKeyboard::Key::mute; + else if (val == "a") key = LedKeyboard::Key::a; + else if (val == "b") key = LedKeyboard::Key::b; + else if (val == "c") key = LedKeyboard::Key::c; + else if (val == "d") key = LedKeyboard::Key::d; + else if (val == "e") key = LedKeyboard::Key::e; + else if (val == "f") key = LedKeyboard::Key::f; + else if (val == "g") key = LedKeyboard::Key::g; + else if (val == "h") key = LedKeyboard::Key::h; + else if (val == "i") key = LedKeyboard::Key::i; + else if (val == "j") key = LedKeyboard::Key::j; + else if (val == "k") key = LedKeyboard::Key::k; + else if (val == "l") key = LedKeyboard::Key::l; + else if (val == "m") key = LedKeyboard::Key::m; + else if (val == "n") key = LedKeyboard::Key::n; + else if (val == "o") key = LedKeyboard::Key::o; + else if (val == "p") key = LedKeyboard::Key::p; + else if (val == "q") key = LedKeyboard::Key::q; + else if (val == "r") key = LedKeyboard::Key::r; + else if (val == "s") key = LedKeyboard::Key::s; + else if (val == "t") key = LedKeyboard::Key::t; + else if (val == "u") key = LedKeyboard::Key::u; + else if (val == "v") key = LedKeyboard::Key::v; + else if (val == "w") key = LedKeyboard::Key::w; + else if (val == "x") key = LedKeyboard::Key::x; + else if (val == "z") key = LedKeyboard::Key::z; + else if (val == "y") key = LedKeyboard::Key::y; + else if (val == "1" || val == "one") key = LedKeyboard::Key::n1; + else if (val == "2" || val == "two") key = LedKeyboard::Key::n2; + else if (val == "3" || val == "three") key = LedKeyboard::Key::n3; + else if (val == "4" || val == "four") key = LedKeyboard::Key::n4; + else if (val == "5" || val == "five") key = LedKeyboard::Key::n5; + else if (val == "6" || val == "six") key = LedKeyboard::Key::n6; + else if (val == "7" || val == "seven") key = LedKeyboard::Key::n7; + else if (val == "8" || val == "eight") key = LedKeyboard::Key::n8; + else if (val == "9" || val == "nine") key = LedKeyboard::Key::n9; + else if (val == "0" || val == "zero") key = LedKeyboard::Key::n0; + else if (val == "enter") key = LedKeyboard::Key::enter; + else if (val == "esc" || val == "escape") key = LedKeyboard::Key::esc; + else if (val == "back" || val == "backspace") key = LedKeyboard::Key::backspace; + else if (val == "tab") key = LedKeyboard::Key::tab; + else if (val == "space") key = LedKeyboard::Key::space; + else if (val == "tilde" || val == "~") key = LedKeyboard::Key::tilde; + else if (val == "minus" || val == "-") key = LedKeyboard::Key::minus; + else if (val == "equal" || val == "=") key = LedKeyboard::Key::equal; + else if (val == "open_bracket" || val == "[") key = LedKeyboard::Key::open_bracket; + else if (val == "close_bracket" || val == "]") key = LedKeyboard::Key::close_bracket; + else if (val == "backslash" || val == "\\") key = LedKeyboard::Key::backslash; + else if (val == "semicolon" || val == ";") key = LedKeyboard::Key::semicolon; + else if (val == "quote" || val == "\"") key = LedKeyboard::Key::quote; + else if (val == "dollar" || val == "$") key = LedKeyboard::Key::dollar; + else if (val == "comma" || val == ",") key = LedKeyboard::Key::comma; + else if (val == "period" || val == ".") key = LedKeyboard::Key::period; + else if (val == "slash" || val == "/") key = LedKeyboard::Key::slash; + else if (val == "caps_lock" || val == "capslock") key = LedKeyboard::Key::caps_lock; + else if (val == "f1") key = LedKeyboard::Key::f1; + else if (val == "f2") key = LedKeyboard::Key::f2; + else if (val == "f3") key = LedKeyboard::Key::f3; + else if (val == "f4") key = LedKeyboard::Key::f4; + else if (val == "f5") key = LedKeyboard::Key::f5; + else if (val == "f6") key = LedKeyboard::Key::f6; + else if (val == "f7") key = LedKeyboard::Key::f7; + else if (val == "f8") key = LedKeyboard::Key::f8; + else if (val == "f9") key = LedKeyboard::Key::f9; + else if (val == "f10") key = LedKeyboard::Key::f10; + else if (val == "f11") key = LedKeyboard::Key::f11; + else if (val == "f12") key = LedKeyboard::Key::f12; + else if (val == "print_screen" || val == "printscreen" || val == "printscr" || val == "print") + key = LedKeyboard::Key::print_screen; + else if (val == "scroll_lock" || val == "scrolllock") key = LedKeyboard::Key::scroll_lock; + else if (val == "pause_break" || val == "pausebreak" || val == "pause" || val == "break") + key = LedKeyboard::Key::pause_break; + else if (val == "insert" || val == "ins") key = LedKeyboard::Key::insert; + else if (val == "home") key = LedKeyboard::Key::home; + else if (val == "page_up" || val == "pageup") key = LedKeyboard::Key::page_up; + else if (val == "delete" || val == "del") key = LedKeyboard::Key::del; + else if (val == "end") key = LedKeyboard::Key::end; + else if (val == "page_down" || val == "pagedown") key = LedKeyboard::Key::page_down; + else if (val == "arrow_right" || val == "arrowright" || val == "right") key = LedKeyboard::Key::arrow_right; + else if (val == "arrow_left" || val == "arrowleft" || val == "left") key = LedKeyboard::Key::arrow_left; + else if (val == "arrow_bottom" || val == "arrowbottom" || val == "bottom") key = LedKeyboard::Key::arrow_bottom; + else if (val == "arrow_top" || val == "arrowtop" || val == "top") key = LedKeyboard::Key::arrow_top; + else if (val == "num_lock" || val == "numlock") key = LedKeyboard::Key::num_lock; + else if (val == "num/" || val == "num_slash" || val == "numslash") key = LedKeyboard::Key::num_slash; + else if (val == "num*" || val == "num_asterisk" || val == "numasterisk") key = LedKeyboard::Key::num_asterisk; + else if (val == "num-" || val == "num_minus" || val == "numminus") key = LedKeyboard::Key::num_minus; + else if (val == "num+" || val == "num_plus" || val == "numplus") key = LedKeyboard::Key::num_plus; + else if (val == "numenter") key = LedKeyboard::Key::num_enter; + else if (val == "num1") key = LedKeyboard::Key::num_1; + else if (val == "num2") key = LedKeyboard::Key::num_2; + else if (val == "num3") key = LedKeyboard::Key::num_3; + else if (val == "num4") key = LedKeyboard::Key::num_4; + else if (val == "num5") key = LedKeyboard::Key::num_5; + else if (val == "num6") key = LedKeyboard::Key::num_6; + else if (val == "num7") key = LedKeyboard::Key::num_7; + else if (val == "num8") key = LedKeyboard::Key::num_8; + else if (val == "num9") key = LedKeyboard::Key::num_9; + else if (val == "num0") key = LedKeyboard::Key::num_0; + else if (val == "num." || val == "num_period" || val == "numperiod") key = LedKeyboard::Key::num_dot; + else if (val == "intl_backslash" || val == "<") key = LedKeyboard::Key::intl_backslash; + else if (val == "menu") key = LedKeyboard::Key::menu; + else if (val == "ctrl_left" || val == "ctrlleft" || val == "ctrll") key = LedKeyboard::Key::ctrl_left; + else if (val == "shift_left" || val == "shiftleft" || val == "shiftl") key = LedKeyboard::Key::shift_left; + else if (val == "alt_left" || val == "altleft" || val == "altl") key = LedKeyboard::Key::alt_left; + else if (val == "win_left" || val == "winleft" || val == "winl") key = LedKeyboard::Key::win_left; + else if (val == "meta_left" || val == "metaleft" || val == "metal") key = LedKeyboard::Key::win_left; + else if (val == "ctrl_right" || val == "ctrlright" || val == "ctrlr") key = LedKeyboard::Key::ctrl_right; + else if (val == "shift_right" || val == "shiftright" || val == "shiftr") key = LedKeyboard::Key::shift_right; + else if (val == "alt_right" || val == "altright" || val == "altr" || val == "altgr") + key = LedKeyboard::Key::alt_right; + else if (val == "win_right" || val == "winright" || val == "winr") key = LedKeyboard::Key::win_right; + else if (val == "meta_right" || val == "metaright" || val == "metar") key = LedKeyboard::Key::win_right; + else if (val == "g1") key = LedKeyboard::Key::g1; + else if (val == "g2") key = LedKeyboard::Key::g2; + else if (val == "g3") key = LedKeyboard::Key::g3; + else if (val == "g4") key = LedKeyboard::Key::g4; + else if (val == "g5") key = LedKeyboard::Key::g5; + else if (val == "g6") key = LedKeyboard::Key::g6; + else if (val == "g7") key = LedKeyboard::Key::g7; + else if (val == "g8") key = LedKeyboard::Key::g8; + else if (val == "g9") key = LedKeyboard::Key::g9; + else return false; + return true; + } + + bool parseKeyGroup(std::string val, LedKeyboard::KeyGroup &keyGroup) { + if (val == "logo") keyGroup = LedKeyboard::KeyGroup::logo; + else if (val == "indicators") keyGroup = LedKeyboard::KeyGroup::indicators; + else if (val == "multimedia") keyGroup = LedKeyboard::KeyGroup::multimedia; + else if (val == "fkeys") keyGroup = LedKeyboard::KeyGroup::fkeys; + else if (val == "modifiers") keyGroup = LedKeyboard::KeyGroup::modifiers; + else if (val == "arrows") keyGroup = LedKeyboard::KeyGroup::arrows; + else if (val == "numeric") keyGroup = LedKeyboard::KeyGroup::numeric; + else if (val == "functions") keyGroup = LedKeyboard::KeyGroup::functions; + else if (val == "keys") keyGroup = LedKeyboard::KeyGroup::keys; + else if (val == "gkeys") keyGroup = LedKeyboard::KeyGroup::gkeys; + else return false; + return true; + } + + bool parseColor(std::string val, LedKeyboard::Color &color) { + if (val.length() == 2) val = val + "0000"; // For G610 + if (val.length() != 6) return false; + color.red = std::stoul("0x"+val.substr(0,2), nullptr, 16); + color.green = std::stoul("0x"+val.substr(2,2), nullptr, 16); + color.blue = std::stoul("0x"+val.substr(4,2), nullptr, 16); + return true; + } + + bool parseSpeed(std::string val, uint8_t &speed) { + if (val.length() == 1) val = "0" + val; + if (val.length() != 2) return false; + speed = std::stoul("0x" + val, nullptr, 16); + return true; + } + +} diff --git a/src/helpers/utils.h b/src/helpers/utils.h new file mode 100644 index 0000000..1fb16f7 --- /dev/null +++ b/src/helpers/utils.h @@ -0,0 +1,21 @@ +#ifndef UTILS_HELPER +#define UTILS_HELPER + +#include +#include "../classes/Keyboard.h" + +namespace utils { + + std::string getCmdName(std::string cmd); + + bool parseStartupMode(std::string val, LedKeyboard::StartupMode &startupMode); + bool parseNativeEffect(std::string val, LedKeyboard::NativeEffect &nativeEffect); + bool parseNativeEffectPart(std::string val, LedKeyboard::NativeEffectPart &nativeEffectPart); + bool parseKey(std::string val, LedKeyboard::Key &key); + bool parseKeyGroup(std::string val, LedKeyboard::KeyGroup &keyGroup); + bool parseColor(std::string val, LedKeyboard::Color &color); + bool parseSpeed(std::string val, uint8_t &speed); + +} + +#endif diff --git a/src/main.cpp b/src/main.cpp index 4c2c8ee..c33047f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,511 +1,228 @@ -#include -#include -#include -#include +#include #include +#include +#include + +#include "helpers/help.h" +#include "helpers/utils.h" #include "classes/Keyboard.h" -using namespace std; -string appname = "g810-led"; - -void usage() { - cout< var; - vector keys; - - lg_kbd.attach(); - - while (!is.eof()) { - getline(is, line); - - if (line.substr(0, 3) == "var") { - line = line.substr(4); - ind = line.find(" "); - var[line.substr(0, ind)] = line.substr(ind + 1, 6); - } else if (line.substr(0, 1) == "a") { - line = line.substr(2); - if (line.substr(0, 1) == "$") { - ind = line.find(" "); - line = var[line.substr(1, ind - 1)]; - } else line = line.substr(0, 6); - if (lg_kbd.parseColor(line, colors) == true) { - keys.clear(); - lg_kbd.setAllKeys(colors); - } else cout<<"Error on line "< vars; + LedKeyboard::KeyValueArray keys = {}; + int retval = 0; + while (!stream.eof()) { + getline(stream, line); + if (line.size() > 0 && line.substr(0, 1) != "#") { + std::vector args = {}; + while (line.size() > 0) { + uint32_t ind = line.find(" "); + std::string argValue = line.substr(0, ind); + if (argValue.substr(0, 1) == "$") argValue = vars[argValue.substr(1)]; + args.push_back(argValue); + if (line.substr(0, ind) == line) line.clear(); + else line = line.substr(ind + 1); + } + if (args[0] == "var" && args.size() > 2) { + vars[args[1]] = args[2]; + } else if (args[0] == "c") { + if (kbd.open()) { + if (keys.size() > 0) { + if (! kbd.setKeys(keys)) retval = 1; + keys.clear(); + } + if(! kbd.commit()) retval = 1; + } else retval = 1; + } else if (args[0] == "a" && args.size() > 1) { + if (setAllKeys(kbd, args[1], false) == 1) retval = 1; + } else if (args[0] == "g" && args.size() > 2) { + if (setGroupKeys(kbd, args[1], args[2], false) == 1) retval = 1; + } else if (args[0] == "k" && args.size() > 2) { + LedKeyboard::Key key; + LedKeyboard::Color color; + if (utils::parseKey(args[1], key)) + if (utils::parseColor(args[2], color)) + keys.push_back({ key, color }); + } else if (args[0] == "fx" && args.size() > 4) { + if (setFX(kbd, args[1], args[2], args[3], args[4]) == 1) retval = 1; + } else if (args[0] == "fx" && args.size() > 3) { + if (setFX(kbd, args[1], args[2], args[3]) == 1) retval = 1; + } + } + } + return retval; +} + +int loadProfile(LedKeyboard &kbd, char *arg2) { + std::ifstream file; + file.open(arg2); if (file.is_open()) { - int retval = parseProfile(file); + int retval = 0; + retval = parseProfile(kbd, file); file.close(); return retval; } return 1; } -int pipeProfile() { +int pipeProfile(LedKeyboard &kbd) { if (isatty(fileno(stdin))) return 1; - return parseProfile(cin); + return parseProfile(kbd, std::cin); } -int main(int argc, char *argv[]) { - string str = argv[0]; - size_t split = str.find_last_of("/\\"); - str = str.substr(split + 1); - appname = str; + + +int main(int argc, char **argv) { + if (argc > 1) { - string argCmd = argv[1]; - if (argCmd == "-h" || argCmd == "--help") { usage(); return 0; } - else if (argCmd == "-lk" || argCmd == "--list-keys") { listkeys(); return 0; } - else if (argCmd == "-s" && argc == 3) return setStartupEffect(argv[2]); - else if (argCmd == "-a" && argc == 3) return setAllKeys(argv[2], true); - else if (argCmd == "-an" && argc == 3) return setAllKeys(argv[2], false); - else if (argCmd == "-g" && argc == 4) return setGroupKeys(argv[2], argv[3], true); - else if (argCmd == "-gn" && argc == 4) return setGroupKeys(argv[2], argv[3], false); - else if (argCmd == "-k" && argc == 4) return setKey(argv[2], argv[3], true); - else if (argCmd == "-kn" && argc == 4) return setKey(argv[2], argv[3], false); - else if (argCmd == "-c" && argc == 2) return commit(); - else if (argCmd == "-p" && argc == 3) return loadProfile(argv[2]); - else if (argCmd == "-pp" && argc == 2) return pipeProfile(); - else if (argCmd == "-fx-color" && argc == 3) return setFXColor(argv[2], true, true); - else if (argCmd == "-fx-breathing" && argc == 4) return setFXBreathing(argv[2], argv[3], true, true); - else if (argCmd == "-fx-cycle" && argc == 3) return setFXColorCycle(argv[2], true, true); - else if (argCmd == "-fx-hwave" && argc == 3) return setFXHWave(argv[2], true, true); - else if (argCmd == "-fx-vwave" && argc == 3) return setFXVWave(argv[2], true, true); - else if (argCmd == "-fx-cwave" && argc == 3) return setFXCWave(argv[2], true, true); - else if (argCmd == "-fxk-color" && argc == 3) return setFXColor(argv[2], true, false); - else if (argCmd == "-fxk-breathing" && argc == 4) return setFXBreathing(argv[2], argv[3], true, false); - else if (argCmd == "-fxk-cycle" && argc == 3) return setFXColorCycle(argv[2], true, false); - else if (argCmd == "-fxk-hwave" && argc == 3) return setFXHWave(argv[2], true, false); - else if (argCmd == "-fxk-vwave" && argc == 3) return setFXVWave(argv[2], true, false); - else if (argCmd == "-fxk-cwave" && argc == 3) return setFXCWave(argv[2], true, false); - else if (argCmd == "-fxl-color" && argc == 3) return setFXColor(argv[2], false, true); - else if (argCmd == "-fxl-breathing" && argc == 4) return setFXBreathing(argv[2], argv[3], false, true); - else if (argCmd == "-fxl-cycle" && argc == 3) return setFXColorCycle(argv[2], false, true); + + std::string arg = argv[1]; + + if (arg == "--help" || arg == "-h") help::usage(argv[0]); + else if (arg == "--help-keys") help::keys(argv[0]); + else if (arg == "--help-effects") help::effects(argv[0]); + else if (arg == "--help-samples") help::samples(argv[0]); + + else { + LedKeyboard kbd; + if (arg == "--list-keyboards") kbd.listKeyboards(); + else if (arg == "-c") return commit(kbd); + + else if (argc > 2 && arg == "-a") return setAllKeys(kbd, argv[2]); + else if (argc > 3 && arg == "-g") return setGroupKeys(kbd, argv[2], argv[3]); + else if (argc > 3 && arg == "-k") return setKey(kbd, argv[2], argv[3]); + else if (argc > 2 && arg == "-an") return setAllKeys(kbd, argv[2], false); + else if (argc > 3 && arg == "-gn") return setGroupKeys(kbd, argv[2], argv[3], false); + else if (argc > 3 && arg == "-kn") return setKey(kbd, argv[2], argv[3], false); + + else if (argc > 2 && arg == "-p") return loadProfile(kbd, argv[2]); + else if (argc > 1 && arg == "-pp") return pipeProfile(kbd); + + else if (argc > 5 && arg == "-fx") return setFX(kbd, argv[2], argv[3], argv[4], argv[5]); + else if (argc > 4 && arg == "-fx") return setFX(kbd, argv[2], argv[3], argv[4]); + + else if (argc > 2 && arg == "--startup-mode") return setStartupMode(kbd, argv[2]); + + else { help::usage(argv[0]); return 1; } + } + + return 0; + } - usage(); + + help::usage(argv[0]); return 1; } From 4a80d7b476111020c940bc3a979c871d85c2c212 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 21 Jan 2017 09:15:27 +0100 Subject: [PATCH 053/187] Full refactor code --- sample_profiles/fx_colorcycle | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 sample_profiles/fx_colorcycle diff --git a/sample_profiles/fx_colorcycle b/sample_profiles/fx_colorcycle deleted file mode 100644 index 1d98ff6..0000000 --- a/sample_profiles/fx_colorcycle +++ /dev/null @@ -1,2 +0,0 @@ - -fx-cycle 10 # Set color cycle effect with speed 10 From cdaae30aa25a781a989274d5d04259787022535e Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 21 Jan 2017 09:17:35 +0100 Subject: [PATCH 054/187] esc bug --- src/classes/Keyboard.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/classes/Keyboard.h b/src/classes/Keyboard.h index 86864cc..8aa57fb 100644 --- a/src/classes/Keyboard.h +++ b/src/classes/Keyboard.h @@ -174,7 +174,7 @@ class LedKeyboard { Key::a, Key::b, Key::c, Key::d, Key::e, Key::f, Key::g, Key::h, Key::i, Key::j, Key::k, Key::l, Key::m, Key::n, Key::o, Key::p, Key::q, Key::r, Key::s, Key::t, Key::u, Key::v, Key::w, Key::x, Key::y, Key::z, Key::n1, Key::n2, Key::n3, Key::n4, Key::n5, Key::n6, Key::n7, Key::n8, Key::n9, Key::n0, - Key::enter, Key::esc, Key::backspace, Key::tab, Key::space, Key::minus, Key::equal, + Key::enter, Key::backspace, Key::tab, Key::space, Key::minus, Key::equal, Key::open_bracket, Key::close_bracket, Key::backslash, Key::dollar, Key::semicolon, Key::quote, Key::tilde, Key::comma, Key::period, Key::slash, Key::caps_lock, Key::intl_backslash }; From bcdcee88f10bb0d4007458b44f12668fea09fdbd Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 21 Jan 2017 22:45:48 +0100 Subject: [PATCH 055/187] Switch to hidapi --- INSTALL.md | 28 ++-- makefile | 56 +++++--- src/classes/Keyboard.cpp | 303 +++++++++++++++++++++++++-------------- src/classes/Keyboard.h | 19 ++- src/main.cpp | 1 - udev/g810-led.rules | 14 +- 6 files changed, 273 insertions(+), 148 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index 21bfb55..b637ad4 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -6,21 +6,29 @@ * make ## Dependencies :
-* libusb -* systemd +* hidapi or libusb + +## hidapi vs libusb :
+hidapi is the new implementation but need to be tested.
+hidapi is very more speed than libusb (~20ms vs ~150ms).
+hidapi seem not work on CentOS, writing on hidraw is not allowed.
+hidapi is recommended but if you encounter problem on your system, switch to libusb.
## Installation of dependencies :
ArchLinux :
-`sudo pacman -S git gcc make libusb`
+`sudo pacman -S git gcc make hidapi` (for hidapi)
+`sudo pacman -S git gcc make libusb` (for libusb)
Debian :
-`sudo apt-get install git g++ make libusb-1.0-0-dev`
+`sudo apt-get install git g++ make libhidapi-dev` (for hidapi)
+`sudo apt-get install git g++ make libusb-1.0-0-dev` (for libusb)
Fedora :
-`sudo dnf install git make gcc-c++ libusb-devel`
+`sudo dnf install git make gcc-c++ hidapi-devel` (for hidapi)
+`sudo dnf install git make gcc-c++ libusbx-devel` (for libusb)
## Installation :
`git clone https://github.com/MatMoul/g810-led.git`
`cd g810-led`
-`make`
+`make` or `make LIB=libusb`
`sudo make install`
## Update :
@@ -30,8 +38,8 @@ Same as install, but your profile and reboot files are preserved.
`sudo make uninstall`
## Boot profiles :
-g810-led has 2 systemd units (g810-led and g810-led-reboot).
+If your system use systemd, g810-led has 2 systemd units (g810-led and g810-led-reboot).
These 2 units set the keyboard profile on boot and reboot.
-Profiles are stored in /etc/g810 :
-* /etc/g810/profile -* /etc/g810/reboot +Profiles are stored in /etc/g810-led :
+* /etc/g810-led/profile +* /etc/g810-led/reboot diff --git a/makefile b/makefile index 917f0bc..46fd1cc 100644 --- a/makefile +++ b/makefile @@ -1,16 +1,23 @@ CC=g++ CFLAGS=-Wall -O2 -std=gnu++11 -LDFLAGS=-lusb-1.0 +LIB?=hidapi +ifeq ($(LIB),libusb) + CPPFLAGS=-Dlibusb + LDFLAGS=-lusb-1.0 +else + CPPFLAGS=-Dhidapi + LDFLAGS=-lhidapi-hidraw +endif PROGN=g810-led SYSTEMDDIR?=/usr/lib/systemd -.PHONY: all debug clean +.PHONY: all debug clean install uninstall all: bin/$(PROGN) bin/$(PROGN): src/main.cpp src/helpers/*.cpp src/helpers/*.h src/classes/*.cpp src/classes/*.h @mkdir -p bin - $(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS) + $(CC) $(CPPFLAGS) $(CFLAGS) $^ -o $@ $(LDFLAGS) debug: CFLAGS += -g -Wextra -pedantic debug: bin/$(PROGN) @@ -20,36 +27,43 @@ clean: install: @install -m 755 -d \ - $(DESTDIR)/etc/$(PROGN)/samples \ $(DESTDIR)/etc/udev/rules.d \ - $(DESTDIR)$(SYSTEMDDIR)/system \ $(DESTDIR)/usr/bin @cp bin/$(PROGN) $(DESTDIR)/usr/bin @test -s $(DESTDIR)/usr/bin/g410-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g410-led @test -s $(DESTDIR)/usr/bin/g610-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g610-led @test -s $(DESTDIR)/usr/bin/g910-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g910-led + @cp udev/$(PROGN).rules $(DESTDIR)/etc/udev/rules.d - @cp sample_profiles/* $(DESTDIR)/etc/$(PROGN)/samples - @test -s $(DESTDIR)/etc/$(PROGN)/profile || cp $(DESTDIR)/etc/$(PROGN)/samples/group_keys $(DESTDIR)/etc/$(PROGN)/profile - @test -s $(DESTDIR)/etc/$(PROGN)/reboot || cp $(DESTDIR)/etc/$(PROGN)/samples/all_off $(DESTDIR)/etc/$(PROGN)/reboot - @cp systemd/$(PROGN).service $(DESTDIR)$(SYSTEMDDIR)/system - @cp systemd/$(PROGN)-reboot.service $(DESTDIR)$(SYSTEMDDIR)/system @udevadm control --reload-rules - @systemctl daemon-reload - @systemctl start $(PROGN) - @systemctl enable $(PROGN) - @systemctl enable $(PROGN)-reboot - + + @test -s /usr/bin/systemd-run && \ + install -m 755 -d \ + $(DESTDIR)/etc/$(PROGN)/samples \ + $(DESTDIR)$(SYSTEMDDIR)/system && \ + cp sample_profiles/* $(DESTDIR)/etc/$(PROGN)/samples && \ + test -s $(DESTDIR)/etc/$(PROGN)/profile || cp $(DESTDIR)/etc/$(PROGN)/samples/group_keys $(DESTDIR)/etc/$(PROGN)/profile && \ + test -s $(DESTDIR)/etc/$(PROGN)/reboot || cp $(DESTDIR)/etc/$(PROGN)/samples/all_off $(DESTDIR)/etc/$(PROGN)/reboot && \ + cp systemd/$(PROGN).service $(DESTDIR)$(SYSTEMDDIR)/system && \ + cp systemd/$(PROGN)-reboot.service $(DESTDIR)$(SYSTEMDDIR)/system && \ + systemctl daemon-reload && \ + systemctl start $(PROGN) && \ + systemctl enable $(PROGN) && \ + systemctl enable $(PROGN)-reboot + uninstall: - @systemctl disable $(PROGN) - @systemctl disable $(PROGN)-reboot - @rm $(SYSTEMDDIR)/system/$(PROGN).service - @rm $(SYSTEMDDIR)/system/$(PROGN)-reboot.service - @systemctl daemon-reload + @test -s /usr/bin/systemd-run && \ + systemctl disable $(PROGN) && \ + systemctl disable $(PROGN)-reboot && \ + rm $(SYSTEMDDIR)/system/$(PROGN).service && \ + rm $(SYSTEMDDIR)/system/$(PROGN)-reboot.service && \ + systemctl daemon-reload && \ + rm -R /etc/$(PROGN) + @rm /usr/bin/g410-led @rm /usr/bin/g610-led @rm /usr/bin/g910-led @rm /usr/bin/$(PROGN) - @rm -R /etc/$(PROGN) + @rm /etc/udev/rules.d/$(PROGN).rules @udevadm control --reload-rules diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index 1a37ca1..808ddd5 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -4,7 +4,11 @@ #include #include -#include "libusb-1.0/libusb.h" +#if defined(hidapi) + #include "hidapi/hidapi.h" +#elif defined(libusb) + #include "libusb-1.0/libusb.h" +#endif using namespace std; @@ -17,61 +21,38 @@ LedKeyboard::~LedKeyboard() { bool LedKeyboard::listKeyboards() { - libusb_context *ctx = NULL; - if(libusb_init(&m_ctx) < 0) return false; - - libusb_device **devs; - ssize_t cnt = libusb_get_device_list(ctx, &devs); - if(cnt >= 0) { - for(ssize_t i = 0; i < cnt; i++) { - libusb_device *device = devs[i]; - libusb_device_descriptor desc = { - 0, // bLength - 0, // bDescriptorType - 0, // bcdUSB - 0, // bDeviceClass - 0, // bDeviceSubClass - 0, // bDeviceProtocol - 0, // bMaxPacketSize0 - 0, // idVendor - 0, // idProduct - 0, // bcdDevice - 0, // iManufacturer - 0, // iProduct - 0, // iSerialNumber - 0 // bNumConfigurations - }; - libusb_get_device_descriptor(device, &desc); + #if defined(hidapi) + if (hid_init() < 0) return false; + + struct hid_device_info *devs, *dev; + devs = hid_enumerate(0x0, 0x0); + dev = devs; + while (dev) { for (int i=0; i<(int)SuportedKeyboards.size(); i++) { - if (desc.idVendor == SuportedKeyboards[i][0]) { - if (desc.idProduct == SuportedKeyboards[i][1]) { - cout<<"0x"<vendor_id == SuportedKeyboards[i][0]) { + if (dev->product_id == SuportedKeyboards[i][1]) { + cout<<"0x"<vendor_id \ + <<" 0x"<product_id \ + <<" "<serial_number \ + <<" "<path<<" "; + dev = dev->next; + cout<serial_number<<" "<path<next; } - libusb_free_device_list(devs, 1); - libusb_exit(m_ctx); - } else return false; - - return true; -} - - -bool LedKeyboard::isOpen() { - return m_isOpen; -} - -bool LedKeyboard::open() { - if (m_isOpen) return true; - - if(libusb_init(&m_ctx) < 0) return false; - - if (m_keyboardModel == KeyboardModel::unknown) { + hid_free_enumeration(devs); + + hid_exit(); + #elif defined(libusb) + libusb_context *ctx = NULL; + if(libusb_init(&m_ctx) < 0) return false; + libusb_device **devs; - ssize_t cnt = libusb_get_device_list(m_ctx, &devs); + ssize_t cnt = libusb_get_device_list(ctx, &devs); if(cnt >= 0) { for(ssize_t i = 0; i < cnt; i++) { libusb_device *device = devs[i]; @@ -95,72 +76,170 @@ bool LedKeyboard::open() { for (int i=0; i<(int)SuportedKeyboards.size(); i++) { if (desc.idVendor == SuportedKeyboards[i][0]) { if (desc.idProduct == SuportedKeyboards[i][1]) { - m_vendorID = desc.idVendor; - m_productID = desc.idProduct; + cout<<"0x"<vendor_id == SuportedKeyboards[i][0]) { + if (dev->product_id == SuportedKeyboards[i][1]) { + m_vendorID = dev->vendor_id; + m_productID = dev->product_id; m_keyboardModel = (KeyboardModel)SuportedKeyboards[i][2]; break; } } } - if (m_keyboardModel != KeyboardModel::unknown) break; - + dev = dev->next; + } + hid_free_enumeration(devs); + + if (! dev) { + cout<<"Keyboard not found"<= 0) { + for(ssize_t i = 0; i < cnt; i++) { + libusb_device *device = devs[i]; + libusb_device_descriptor desc = { + 0, // bLength + 0, // bDescriptorType + 0, // bcdUSB + 0, // bDeviceClass + 0, // bDeviceSubClass + 0, // bDeviceProtocol + 0, // bMaxPacketSize0 + 0, // idVendor + 0, // idProduct + 0, // bcdDevice + 0, // iManufacturer + 0, // iProduct + 0, // iSerialNumber + 0 // bNumConfigurations + }; + libusb_get_device_descriptor(device, &desc); + for (int i=0; i<(int)SuportedKeyboards.size(); i++) { + if (desc.idVendor == SuportedKeyboards[i][0]) { + if (desc.idProduct == SuportedKeyboards[i][1]) { + m_vendorID = desc.idVendor; + m_productID = desc.idProduct; + m_keyboardModel = (KeyboardModel)SuportedKeyboards[i][2]; + break; + } + } + } + + if (m_keyboardModel != KeyboardModel::unknown) break; + + } + libusb_free_device_list(devs, 1); + } + } + + if (m_keyboardModel == KeyboardModel::unknown) { + cout<<"Keyboard not found"< 20) r = libusb_control_transfer(m_hidHandle, 0x21, 0x09, 0x0212, 1, const_cast(data.data()), data.size(), 2000); - else r = libusb_control_transfer(m_hidHandle, 0x21, 0x09, 0x0211, 1, const_cast(data.data()), data.size(), 2000); - usleep(1000); - if (r < 0) return false; - unsigned char buffer[64]; - int len = 0; - r = libusb_interrupt_transfer(m_hidHandle, 0x82, buffer, sizeof(buffer), &len, 1); + + if (data.size() > 0) { + #if defined(hidapi) + data.insert(data.begin(), 0x00); + if (hid_write(m_hidHandle, const_cast(data.data()), data.size()) < 0) { + std::cout<<"Error: Can not write to hidraw, try with the libusb version"<(data2.data()), data2.size(), 0); + #elif defined(libusb) + int r; + if (data.size() > 20) r = libusb_control_transfer(m_hidHandle, 0x21, 0x09, 0x0212, 1, const_cast(data.data()), data.size(), 2000); + else r = libusb_control_transfer(m_hidHandle, 0x21, 0x09, 0x0211, 1, const_cast(data.data()), data.size(), 2000); + usleep(1000); + if (r < 0) return false; + unsigned char buffer[64]; + int len = 0; + r = libusb_interrupt_transfer(m_hidHandle, 0x82, buffer, sizeof(buffer), &len, 1); + #endif + } + return true; } diff --git a/src/classes/Keyboard.h b/src/classes/Keyboard.h index 8aa57fb..b59343f 100644 --- a/src/classes/Keyboard.h +++ b/src/classes/Keyboard.h @@ -4,7 +4,11 @@ #include #include -#include "libusb-1.0/libusb.h" +#if defined(hidapi) + #include "hidapi/hidapi.h" +#elif defined(libusb) + #include "libusb-1.0/libusb.h" +#endif class LedKeyboard { @@ -180,15 +184,20 @@ class LedKeyboard { }; bool m_isOpen = false; - bool m_isKernellDetached = false; uint16_t m_vendorID = 0; uint16_t m_productID = 0; KeyboardModel m_keyboardModel = KeyboardModel::unknown; - libusb_device_handle *m_hidHandle; - libusb_context *m_ctx = NULL; + + #if defined(hidapi) + hid_device *m_hidHandle; + #elif defined(libusb) + bool m_isKernellDetached = false; + libusb_device_handle *m_hidHandle; + libusb_context *m_ctx = NULL; + #endif - bool sendDataInternal(const byte_buffer_t &data); + bool sendDataInternal(byte_buffer_t &data); byte_buffer_t getKeyGroupAddress(KeyAddressGroup keyAddressGroup); }; diff --git a/src/main.cpp b/src/main.cpp index c33047f..c582bc9 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -186,7 +186,6 @@ int pipeProfile(LedKeyboard &kbd) { int main(int argc, char **argv) { - if (argc > 1) { std::string arg = argv[1]; diff --git a/udev/g810-led.rules b/udev/g810-led.rules index e4c5401..8cb72ec 100644 --- a/udev/g810-led.rules +++ b/udev/g810-led.rules @@ -1,7 +1,7 @@ -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c331", MODE="660", GROUP="users" -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c337", MODE="660", GROUP="users" -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c330", MODE="660", GROUP="users" -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c333", MODE="660", GROUP="users" -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c338", MODE="660", GROUP="users" -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c32b", MODE="660", GROUP="users" -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c335", MODE="660", GROUP="users" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c331", MODE="666" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c337", MODE="666" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c330", MODE="666" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c333", MODE="666" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c338", MODE="666" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c32b", MODE="666" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c335", MODE="666" From a136c0cc2784a7863561ad113fbeb1b2d47deff6 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 21 Jan 2017 23:00:07 +0100 Subject: [PATCH 056/187] Update INSTALL.md --- INSTALL.md | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index b637ad4..4aaff48 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -16,19 +16,20 @@ hidapi is recommended but if you encounter problem on your system, switch to lib ## Installation of dependencies :
ArchLinux :
-`sudo pacman -S git gcc make hidapi` (for hidapi)
-`sudo pacman -S git gcc make libusb` (for libusb)
+`sudo pacman -S git gcc make hidapi` # for hidapi
+`sudo pacman -S git gcc make libusb` # for libusb
Debian :
-`sudo apt-get install git g++ make libhidapi-dev` (for hidapi)
-`sudo apt-get install git g++ make libusb-1.0-0-dev` (for libusb)
+`sudo apt-get install git g++ make libhidapi-dev` # for hidapi
+`sudo apt-get install git g++ make libusb-1.0-0-dev` # for libusb
Fedora :
-`sudo dnf install git make gcc-c++ hidapi-devel` (for hidapi)
-`sudo dnf install git make gcc-c++ libusbx-devel` (for libusb)
+`sudo dnf install git make gcc-c++ hidapi-devel` # for hidapi
+`sudo dnf install git make gcc-c++ libusbx-devel` # for libusb
## Installation :
`git clone https://github.com/MatMoul/g810-led.git`
`cd g810-led`
-`make` or `make LIB=libusb`
+`make` # for hidapi
+`make LIB=libusb` # for libusb
`sudo make install`
## Update :
@@ -43,3 +44,5 @@ These 2 units set the keyboard profile on boot and reboot.
Profiles are stored in /etc/g810-led :
* /etc/g810-led/profile * /etc/g810-led/reboot + +Samples can be found in /etc/g810-led/samples.
From e8c678a18166b6d6c8f1381c29d421cb6e4bdb41 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sun, 22 Jan 2017 00:47:38 +0100 Subject: [PATCH 057/187] Improve code --- makefile | 8 ++- src/classes/Keyboard.cpp | 106 +++++++++++++++++---------------------- 2 files changed, 52 insertions(+), 62 deletions(-) diff --git a/makefile b/makefile index 46fd1cc..5140ca1 100644 --- a/makefile +++ b/makefile @@ -42,8 +42,12 @@ install: $(DESTDIR)/etc/$(PROGN)/samples \ $(DESTDIR)$(SYSTEMDDIR)/system && \ cp sample_profiles/* $(DESTDIR)/etc/$(PROGN)/samples && \ - test -s $(DESTDIR)/etc/$(PROGN)/profile || cp $(DESTDIR)/etc/$(PROGN)/samples/group_keys $(DESTDIR)/etc/$(PROGN)/profile && \ - test -s $(DESTDIR)/etc/$(PROGN)/reboot || cp $(DESTDIR)/etc/$(PROGN)/samples/all_off $(DESTDIR)/etc/$(PROGN)/reboot && \ + test -s $(DESTDIR)/etc/$(PROGN)/profile || \ + cp $(DESTDIR)/etc/$(PROGN)/samples/group_keys $(DESTDIR)/etc/$(PROGN)/profile + @test -s /usr/bin/systemd-run && \ + test -s $(DESTDIR)/etc/$(PROGN)/reboot || \ + cp $(DESTDIR)/etc/$(PROGN)/samples/all_off $(DESTDIR)/etc/$(PROGN)/reboot + @test -s /usr/bin/systemd-run && \ cp systemd/$(PROGN).service $(DESTDIR)$(SYSTEMDDIR)/system && \ cp systemd/$(PROGN)-reboot.service $(DESTDIR)$(SYSTEMDDIR)/system && \ systemctl daemon-reload && \ diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index 808ddd5..5ad9740 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -47,48 +47,35 @@ bool LedKeyboard::listKeyboards() { hid_free_enumeration(devs); hid_exit(); + return true; + #elif defined(libusb) libusb_context *ctx = NULL; if(libusb_init(&m_ctx) < 0) return false; libusb_device **devs; ssize_t cnt = libusb_get_device_list(ctx, &devs); - if(cnt >= 0) { - for(ssize_t i = 0; i < cnt; i++) { - libusb_device *device = devs[i]; - libusb_device_descriptor desc = { - 0, // bLength - 0, // bDescriptorType - 0, // bcdUSB - 0, // bDeviceClass - 0, // bDeviceSubClass - 0, // bDeviceProtocol - 0, // bMaxPacketSize0 - 0, // idVendor - 0, // idProduct - 0, // bcdDevice - 0, // iManufacturer - 0, // iProduct - 0, // iSerialNumber - 0 // bNumConfigurations - }; - libusb_get_device_descriptor(device, &desc); - for (int i=0; i<(int)SuportedKeyboards.size(); i++) { - if (desc.idVendor == SuportedKeyboards[i][0]) { - if (desc.idProduct == SuportedKeyboards[i][1]) { - cout<<"0x"<= 0) { for(ssize_t i = 0; i < cnt; i++) { libusb_device *device = devs[i]; - libusb_device_descriptor desc = { - 0, // bLength - 0, // bDescriptorType - 0, // bcdUSB - 0, // bDeviceClass - 0, // bDeviceSubClass - 0, // bDeviceProtocol - 0, // bMaxPacketSize0 - 0, // idVendor - 0, // idProduct - 0, // bcdDevice - 0, // iManufacturer - 0, // iProduct - 0, // iSerialNumber - 0 // bNumConfigurations - }; + libusb_device_descriptor desc; libusb_get_device_descriptor(device, &desc); for (int i=0; i<(int)SuportedKeyboards.size(); i++) { if (desc.idVendor == SuportedKeyboards[i][0]) { @@ -173,9 +149,7 @@ bool LedKeyboard::open() { } } } - if (m_keyboardModel != KeyboardModel::unknown) break; - } libusb_free_device_list(devs, 1); } @@ -189,14 +163,12 @@ bool LedKeyboard::open() { } m_hidHandle = libusb_open_device_with_vid_pid(m_ctx, m_vendorID, m_productID); - if(m_hidHandle == 0) { libusb_exit(m_ctx); m_ctx = NULL; return false; } - if(libusb_kernel_driver_active(m_hidHandle, 1) == 1) { if(libusb_detach_kernel_driver(m_hidHandle, 1) != 0) { libusb_exit(m_ctx); @@ -205,6 +177,7 @@ bool LedKeyboard::open() { } m_isKernellDetached = true; } + if(libusb_claim_interface(m_hidHandle, 1) < 0) { if(m_isKernellDetached==true) { libusb_attach_kernel_driver(m_hidHandle, 1); @@ -214,10 +187,13 @@ bool LedKeyboard::open() { m_ctx = NULL; return false; } + + m_isOpen = true; + return true; + #endif - m_isOpen = true; - return true; + return false; } bool LedKeyboard::close() { @@ -228,6 +204,8 @@ bool LedKeyboard::close() { hid_close(m_hidHandle); m_hidHandle = 0; hid_exit(); + return true; + #elif defined(libusb) if(libusb_release_interface(m_hidHandle, 1) != 0) return false; if(m_isKernellDetached==true) { @@ -238,9 +216,10 @@ bool LedKeyboard::close() { m_hidHandle = NULL; libusb_exit(m_ctx); m_ctx = NULL; + return true; #endif - return true; + return false; } @@ -531,19 +510,26 @@ bool LedKeyboard::sendDataInternal(byte_buffer_t &data) { byte_buffer_t data2; data2.resize(21, 0x00); hid_read_timeout(m_hidHandle, const_cast(data2.data()), data2.size(), 0); + return true; #elif defined(libusb) - int r; - if (data.size() > 20) r = libusb_control_transfer(m_hidHandle, 0x21, 0x09, 0x0212, 1, const_cast(data.data()), data.size(), 2000); - else r = libusb_control_transfer(m_hidHandle, 0x21, 0x09, 0x0211, 1, const_cast(data.data()), data.size(), 2000); + if (data.size() > 20) { + if(libusb_control_transfer(m_hidHandle, 0x21, 0x09, 0x0212, 1, + const_cast(data.data()), data.size(), 2000) < 0) + return false; + } else { + if(libusb_control_transfer(m_hidHandle, 0x21, 0x09, 0x0211, 1, + const_cast(data.data()), data.size(), 2000) < 0) + return false; + } usleep(1000); - if (r < 0) return false; unsigned char buffer[64]; int len = 0; - r = libusb_interrupt_transfer(m_hidHandle, 0x82, buffer, sizeof(buffer), &len, 1); + libusb_interrupt_transfer(m_hidHandle, 0x82, buffer, sizeof(buffer), &len, 1); + return true; #endif } - return true; + return false; } LedKeyboard::byte_buffer_t LedKeyboard::getKeyGroupAddress(LedKeyboard::KeyAddressGroup keyAddressGroup) { From 1eb49024377d699ae97b82a9253a1a0bf07c3413 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sun, 22 Jan 2017 02:11:07 +0100 Subject: [PATCH 058/187] Add sample effect --- sample_effects/bash/k2000 | 86 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100755 sample_effects/bash/k2000 diff --git a/sample_effects/bash/k2000 b/sample_effects/bash/k2000 new file mode 100755 index 0000000..c5c85d5 --- /dev/null +++ b/sample_effects/bash/k2000 @@ -0,0 +1,86 @@ +#!/bin/bash + +if [ "$1" == "--help" ]; then + echo "k2000 [speed (default:0.01] [colorOff] [colorOn] [colorFade1] [colorFade2]" + exit 0 +fi + +speed=0.01 +colorOff=000000 +colorOn=ff0000 +colorFade1=aa0000 +colorFade2=550000 + +if [ "$1" != "" ]; then + speed=$1 +fi +if [ "$2" != "" ]; then + colorOff=$2 +fi +if [ "$3" != "" ]; then + colorOn=$3 + if [ "$4" != "" ]; then + colorFade1=$4 + else + colorFade1=$colorOn + fi + if [ "$5" != "" ]; then + colorFade2=$5 + else + colorFade2=$colorOn + fi +fi + +setKeys () { + cmd="" + if [ $1 ] ; then + cmd=$cmd"k $1 $colorOn\n" + fi + if [ $2 ] ; then + cmd=$cmd"k $2 $colorFade1\n" + fi + if [ $3 ] ; then + cmd=$cmd"k $3 $colorFade2\n" + fi + if [ $4 ] ; then + cmd=$cmd"k $4 $colorOff\n" + fi + cmd=$cmd"c" + echo -e $cmd | g810-led -pp + sleep $speed +} + +g810-led -gn fkeys $colorOff + +setKeys F1 +setKeys F2 +setKeys F3 +setKeys F4 +setKeys F5 F1 +setKeys F6 F2 F1 +setKeys F7 F3 F2 F1 +setKeys F8 F4 F3 F2 +setKeys F9 F5 F4 F3 +setKeys F10 F6 F5 F4 +setKeys F11 F7 F6 F5 +setKeys F12 F8 F7 F6 +setKeys F12 F9 F8 F7 +setKeys F12 F10 F9 F8 +setKeys F12 F11 F10 F9 +setKeys F11 F10 F10 F10 +setKeys F10 +setKeys F9 +setKeys F8 F12 +setKeys F7 F11 F12 +setKeys F6 F10 F11 F12 +setKeys F5 F9 F10 F11 +setKeys F4 F8 F9 F10 +setKeys F3 F7 F8 F9 +setKeys F2 F6 F7 F8 +setKeys F1 F5 F6 F7 +setKeys F1 F4 F5 F6 +setKeys F1 F3 F4 F5 +setKeys F1 F2 F3 F4 +setKeys F1 F1 F2 F3 +setKeys F1 F1 F1 F2 +setKeys F1 F1 F1 F1 From 596bc731cf8014bc10e95b5cb85e0e18929a1f28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Freitag?= Date: Sat, 21 Jan 2017 19:32:30 -0800 Subject: [PATCH 059/187] Split file installation and loading commands To ease packaging, the new setup rule only copies files to the correct location. The install rules perform the commands to load the newly installed files. --- makefile | 30 +++++++++++------------------- 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/makefile b/makefile index 5140ca1..c960a37 100644 --- a/makefile +++ b/makefile @@ -24,32 +24,24 @@ debug: bin/$(PROGN) clean: @rm -rf bin - -install: - @install -m 755 -d \ - $(DESTDIR)/etc/udev/rules.d \ - $(DESTDIR)/usr/bin + +setup: + @install -m 755 -d $(DESTDIR)/etc/udev/rules.d $(DESTDIR)/usr/bin @cp bin/$(PROGN) $(DESTDIR)/usr/bin @test -s $(DESTDIR)/usr/bin/g410-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g410-led @test -s $(DESTDIR)/usr/bin/g610-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g610-led @test -s $(DESTDIR)/usr/bin/g910-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g910-led - @cp udev/$(PROGN).rules $(DESTDIR)/etc/udev/rules.d + @install -m 755 -d $(DESTDIR)/etc/$(PROGN)/samples $(DESTDIR)$(SYSTEMDDIR)/system + @cp sample_profiles/* $(DESTDIR)/etc/$(PROGN)/samples + @cp $(DESTDIR)/etc/$(PROGN)/samples/group_keys $(DESTDIR)/etc/$(PROGN)/profile + @cp $(DESTDIR)/etc/$(PROGN)/samples/all_off $(DESTDIR)/etc/$(PROGN)/reboot + @cp systemd/$(PROGN).service $(DESTDIR)$(SYSTEMDDIR)/system + @cp systemd/$(PROGN)-reboot.service $(DESTDIR)$(SYSTEMDDIR)/system + +install: setup @udevadm control --reload-rules - @test -s /usr/bin/systemd-run && \ - install -m 755 -d \ - $(DESTDIR)/etc/$(PROGN)/samples \ - $(DESTDIR)$(SYSTEMDDIR)/system && \ - cp sample_profiles/* $(DESTDIR)/etc/$(PROGN)/samples && \ - test -s $(DESTDIR)/etc/$(PROGN)/profile || \ - cp $(DESTDIR)/etc/$(PROGN)/samples/group_keys $(DESTDIR)/etc/$(PROGN)/profile - @test -s /usr/bin/systemd-run && \ - test -s $(DESTDIR)/etc/$(PROGN)/reboot || \ - cp $(DESTDIR)/etc/$(PROGN)/samples/all_off $(DESTDIR)/etc/$(PROGN)/reboot - @test -s /usr/bin/systemd-run && \ - cp systemd/$(PROGN).service $(DESTDIR)$(SYSTEMDDIR)/system && \ - cp systemd/$(PROGN)-reboot.service $(DESTDIR)$(SYSTEMDDIR)/system && \ systemctl daemon-reload && \ systemctl start $(PROGN) && \ systemctl enable $(PROGN) && \ From 70004d07df8e87f71aafa36d37ed76674a7aa5a8 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sun, 22 Jan 2017 23:44:11 +0100 Subject: [PATCH 060/187] Prevent overwrite profiles and remove systemd dependency in makefile --- makefile | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/makefile b/makefile index c960a37..850dda5 100644 --- a/makefile +++ b/makefile @@ -11,7 +11,7 @@ endif PROGN=g810-led SYSTEMDDIR?=/usr/lib/systemd -.PHONY: all debug clean install uninstall +.PHONY: all debug clean setup install uninstall all: bin/$(PROGN) @@ -26,20 +26,26 @@ clean: @rm -rf bin setup: - @install -m 755 -d $(DESTDIR)/etc/udev/rules.d $(DESTDIR)/usr/bin + @install -m 755 -d \ + $(DESTDIR)/usr/bin \ + $(DESTDIR)/etc/$(PROGN)/samples \ + $(DESTDIR)/etc/udev/rules.d @cp bin/$(PROGN) $(DESTDIR)/usr/bin @test -s $(DESTDIR)/usr/bin/g410-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g410-led @test -s $(DESTDIR)/usr/bin/g610-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g610-led @test -s $(DESTDIR)/usr/bin/g910-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g910-led - @cp udev/$(PROGN).rules $(DESTDIR)/etc/udev/rules.d - @install -m 755 -d $(DESTDIR)/etc/$(PROGN)/samples $(DESTDIR)$(SYSTEMDDIR)/system @cp sample_profiles/* $(DESTDIR)/etc/$(PROGN)/samples - @cp $(DESTDIR)/etc/$(PROGN)/samples/group_keys $(DESTDIR)/etc/$(PROGN)/profile - @cp $(DESTDIR)/etc/$(PROGN)/samples/all_off $(DESTDIR)/etc/$(PROGN)/reboot - @cp systemd/$(PROGN).service $(DESTDIR)$(SYSTEMDDIR)/system - @cp systemd/$(PROGN)-reboot.service $(DESTDIR)$(SYSTEMDDIR)/system - + @cp udev/$(PROGN).rules $(DESTDIR)/etc/udev/rules.d + @test -s /usr/bin/systemd-run && \ + install -m 755 -d $(DESTDIR)$(SYSTEMDDIR)/system && \ + cp systemd/$(PROGN).service $(DESTDIR)$(SYSTEMDDIR)/system && \ + cp systemd/$(PROGN)-reboot.service $(DESTDIR)$(SYSTEMDDIR)/system + install: setup + @test -s /etc/$(PROGN)/profile || \ + cp /etc/$(PROGN)/samples/group_keys /etc/$(PROGN)/profile + @test -s /etc/$(PROGN)/reboot || \ + cp /etc/$(PROGN)/samples/all_off /etc/$(PROGN)/reboot @udevadm control --reload-rules @test -s /usr/bin/systemd-run && \ systemctl daemon-reload && \ From d63b269d98af9ada59b02a59a41a376cc1be5057 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Mon, 23 Jan 2017 21:16:09 +0100 Subject: [PATCH 061/187] Update README and add TODO --- README.md | 2 +- TODO.md | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 TODO.md diff --git a/README.md b/README.md index fdea43b..163fe43 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # g810-led
-Linux LED controller for Logitech Led Keyboards.
+Linux led controller for Logitech G410, G610, G810 and G910 Keyboards.
##Compatible keyboards :
- **G410 Atlas Spectrum**
diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..2833e7f --- /dev/null +++ b/TODO.md @@ -0,0 +1,26 @@ +# g810-led TODO + +## Tasks (Help wanted) : +* (0%) Code review (memory leak and other...) +* (0%) Improve INSTALL.md to support more distributions (And CentOS with hidapi) +* (0%) Send specialized help based on executable name +* (0%) Improve --help-effects +* (0%) Improve --help-samples +* (0%) Add a python sample effects that use stdin +* (0%) Use a default profile compatible with the G610 (for indicators) +* (0%) Use a more generic name for config dir and systemd units +* (0%) Choose versionning method +* (1%) Make distributions ready package but it's dependent to versionning method
+ArchLinux (in AUR): g810-led, g810-led-git + +## Tasks (Assigned to MatMoul but you can participate) : +* (0%) Avoid sending keys that not supported by a keyboard model +* (0%) Add deamon mode for custom effects + +## Tasks (Assigned to MatMoul) : +* (0%) Add a new repo for custom effects + +## Possible enhancements : +* (0%) Support of G keys on G910 ([issue 39](https://github.com/MatMoul/g810-led/issues/39) if config is sent by software) +* (0%) Support of new G Mouse like the G403 ([issue 40](https://github.com/MatMoul/g810-led/issues/40)) +* (0%) Support country based keybord ([issue 16](https://github.com/MatMoul/g810-led/issues/16) but very hard) From 12b16e837433c12f30717c91f9529f37c26c1090 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Tue, 24 Jan 2017 00:00:01 +0100 Subject: [PATCH 062/187] G910 commit bug correction --- src/classes/Keyboard.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index 5ad9740..d5ae030 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -237,7 +237,7 @@ bool LedKeyboard::commit() { data = { 0x11, 0xff, 0x0c, 0x5a }; break; case KeyboardModel::g910: - data = { 0x11, 0xff, 0x10, 0x3c }; + data = { 0x11, 0xff, 0x0f, 0x5d }; break; default: return false; From 865cad8070c6e8560bb34ebce2be938eaa6dbb36 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Thu, 26 Jan 2017 02:29:34 +0100 Subject: [PATCH 063/187] Update README --- README.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 163fe43..ac2b4da 100644 --- a/README.md +++ b/README.md @@ -10,8 +10,8 @@ Linux led controller for Logitech G410, G610, G810 and G910 Keyboards.
- **G910 Orion Spark**
- **G910 Orion Spectrum**
-##Install and use :
-* INSTALL.md +##Install :
+* [INSTALL.md](https://github.com/MatMoul/g810-led/blob/master/INSTALL.md) ##Help :
`g410-led --help`
@@ -19,6 +19,13 @@ Linux led controller for Logitech G410, G610, G810 and G910 Keyboards.
`g810-led --help`
`g910-led --help`
+`g810-led --help-keys`
+`g810-led --help-effects`
+`g810-led --help-samples`
+ +##Contribute and evolution :
+* [TODO.md](https://github.com/MatMoul/g810-led/blob/master/TODO.md) + ##Samples :
`g810-led -p /etc/g810/profile # Load a profile`
`g810-led -k logo ff0000 # Set color of a key`
From cc189ad0936f5fd5df31e46f3ca0ac1e5c0477c3 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Thu, 26 Jan 2017 02:43:40 +0100 Subject: [PATCH 064/187] Update README --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index ac2b4da..ba91790 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,9 @@ Linux led controller for Logitech G410, G610, G810 and G910 Keyboards.
- **G910 Orion Spark**
- **G910 Orion Spectrum**
+##Contribute and evolution :
+* [TODO.md](https://github.com/MatMoul/g810-led/blob/master/TODO.md) + ##Install :
* [INSTALL.md](https://github.com/MatMoul/g810-led/blob/master/INSTALL.md) @@ -23,9 +26,6 @@ Linux led controller for Logitech G410, G610, G810 and G910 Keyboards.
`g810-led --help-effects`
`g810-led --help-samples`
-##Contribute and evolution :
-* [TODO.md](https://github.com/MatMoul/g810-led/blob/master/TODO.md) - ##Samples :
`g810-led -p /etc/g810/profile # Load a profile`
`g810-led -k logo ff0000 # Set color of a key`
@@ -53,6 +53,6 @@ Linux led controller for Logitech G410, G610, G810 and G910 Keyboards.
`g610-led -k logo ff # Set intensity of a key`
`g610-led -g fkeys aa # Set intensity of a group of keys`
-##Samples with pipe :
+##Samples with pipe (for effects) :
`g810-led -pp < profilefile # Load a profile`
`echo -e "k w ff0000\nk a ff0000\nk s ff0000\nk d ff0000\nc" | g810-led -pp # Set multiple keys`
From 2a0423840c0b36a127eef576bf4fed59b77897ea Mon Sep 17 00:00:00 2001 From: MatMoul Date: Thu, 26 Jan 2017 02:45:11 +0100 Subject: [PATCH 065/187] Update TODO --- TODO.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/TODO.md b/TODO.md index 2833e7f..5c0da4c 100644 --- a/TODO.md +++ b/TODO.md @@ -11,7 +11,7 @@ * (0%) Use a more generic name for config dir and systemd units * (0%) Choose versionning method * (1%) Make distributions ready package but it's dependent to versionning method
-ArchLinux (in AUR): g810-led, g810-led-git +ArchLinux (in AUR): g810-led-git ## Tasks (Assigned to MatMoul but you can participate) : * (0%) Avoid sending keys that not supported by a keyboard model @@ -24,3 +24,6 @@ ArchLinux (in AUR): g810-led, g810-led-git * (0%) Support of G keys on G910 ([issue 39](https://github.com/MatMoul/g810-led/issues/39) if config is sent by software) * (0%) Support of new G Mouse like the G403 ([issue 40](https://github.com/MatMoul/g810-led/issues/40)) * (0%) Support country based keybord ([issue 16](https://github.com/MatMoul/g810-led/issues/16) but very hard) + +## Other enhancements : +* Open an issue before work to hard From cf7f551a256ddcc304bf2d798e08968583a5c3e0 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Thu, 26 Jan 2017 02:49:15 +0100 Subject: [PATCH 066/187] Update INSTALL --- INSTALL.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/INSTALL.md b/INSTALL.md index 4aaff48..a6fc648 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -14,6 +14,13 @@ hidapi is very more speed than libusb (~20ms vs ~150ms).
hidapi seem not work on CentOS, writing on hidraw is not allowed.
hidapi is recommended but if you encounter problem on your system, switch to libusb.
+ +## Installation by repos :
+ArchLinux (aur) :
+`sudo yaourt -S g810-led-git` # with yaourt
+`sudo pacaur -S g810-led-git` # with pacaur
+ + ## Installation of dependencies :
ArchLinux :
`sudo pacman -S git gcc make hidapi` # for hidapi
From 529c22aecb013f0039a5b5b97e8ac4d031354138 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Thu, 26 Jan 2017 04:49:15 +0100 Subject: [PATCH 067/187] Update FX indicators color --- src/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index c582bc9..4ae5362 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -93,7 +93,7 @@ int setFX(LedKeyboard &kbd, std::string arg2, std::string arg3, std::string arg4 case LedKeyboard::NativeEffect::cwave: if (! kbd.setGroupKeys( LedKeyboard::KeyGroup::indicators, - LedKeyboard::Color({0x00, 0xff, 0xff})) + LedKeyboard::Color({0xff, 0xff, 0xff})) ) retval = 1; if (! kbd.commit()) retval = 1; break; From eb825184c66309b2a6a772d0143c598b6ad7a941 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Mon, 6 Feb 2017 23:58:53 +0100 Subject: [PATCH 068/187] Default profile compatible with g610 --- TODO.md | 2 +- sample_profiles/group_keys | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/TODO.md b/TODO.md index 5c0da4c..9f8ad8a 100644 --- a/TODO.md +++ b/TODO.md @@ -7,7 +7,7 @@ * (0%) Improve --help-effects * (0%) Improve --help-samples * (0%) Add a python sample effects that use stdin -* (0%) Use a default profile compatible with the G610 (for indicators) +* (100%) Use a default profile compatible with the G610 (for indicators) * (0%) Use a more generic name for config dir and systemd units * (0%) Choose versionning method * (1%) Make distributions ready package but it's dependent to versionning method
diff --git a/sample_profiles/group_keys b/sample_profiles/group_keys index 98afb1a..ebc0716 100644 --- a/sample_profiles/group_keys +++ b/sample_profiles/group_keys @@ -1,7 +1,7 @@ # Sample profile by groups keys g logo 000096 -g indicators 00ffff +g indicators ffffff g multimedia 009600 g fkeys ff00ff g modifiers ff0000 From c887ad177333d5b4e0339aa6d909dd42b130c8c0 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Tue, 7 Feb 2017 00:03:50 +0100 Subject: [PATCH 069/187] Prepare avoid sending keys that not supported by a keyboard model --- src/helpers/help.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index 3092f09..7ee21f3 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -70,7 +70,10 @@ namespace help { cout< Date: Tue, 7 Feb 2017 00:18:23 +0100 Subject: [PATCH 070/187] Make help more selective from binary name --- TODO.md | 2 +- src/helpers/help.cpp | 96 ++++++++++++++++++++++++++------------------ 2 files changed, 57 insertions(+), 41 deletions(-) diff --git a/TODO.md b/TODO.md index 9f8ad8a..b324374 100644 --- a/TODO.md +++ b/TODO.md @@ -14,7 +14,7 @@ ArchLinux (in AUR): g810-led-git ## Tasks (Assigned to MatMoul but you can participate) : -* (0%) Avoid sending keys that not supported by a keyboard model +* (20%) Avoid sending keys that not supported by a keyboard model * (0%) Add deamon mode for custom effects ## Tasks (Assigned to MatMoul) : diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index 7ee21f3..5f2a6fa 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -56,41 +56,55 @@ namespace help { cout<<"-------------"< Date: Tue, 7 Feb 2017 00:22:12 +0100 Subject: [PATCH 071/187] Make help more selective from binary name --- src/helpers/help.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index 5f2a6fa..ab85089 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -59,7 +59,7 @@ namespace help { cout<<" logo"< Date: Tue, 7 Feb 2017 00:25:11 +0100 Subject: [PATCH 072/187] Make help more selective from binary name --- src/helpers/help.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index ab85089..2f4f0a0 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -70,12 +70,12 @@ namespace help { cout< Date: Tue, 7 Feb 2017 00:40:45 +0100 Subject: [PATCH 073/187] Make help more selective from binary name --- src/helpers/help.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index 2f4f0a0..2d01052 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -57,12 +57,13 @@ namespace help { cout< Date: Tue, 7 Feb 2017 00:42:50 +0100 Subject: [PATCH 074/187] Update FX help --- src/helpers/help.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index 2d01052..5b2b30d 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -189,6 +189,8 @@ namespace help { cout< Date: Tue, 7 Feb 2017 00:43:16 +0100 Subject: [PATCH 075/187] Update FX help --- src/helpers/help.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index 5b2b30d..a669899 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -183,7 +183,6 @@ namespace help { cout<<" slash"< Date: Tue, 7 Feb 2017 00:45:02 +0100 Subject: [PATCH 076/187] Update TODO --- TODO.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TODO.md b/TODO.md index b324374..0f25f35 100644 --- a/TODO.md +++ b/TODO.md @@ -3,7 +3,7 @@ ## Tasks (Help wanted) : * (0%) Code review (memory leak and other...) * (0%) Improve INSTALL.md to support more distributions (And CentOS with hidapi) -* (0%) Send specialized help based on executable name +* (80%) Send specialized help based on executable name * (0%) Improve --help-effects * (0%) Improve --help-samples * (0%) Add a python sample effects that use stdin @@ -14,7 +14,7 @@ ArchLinux (in AUR): g810-led-git ## Tasks (Assigned to MatMoul but you can participate) : -* (20%) Avoid sending keys that not supported by a keyboard model +* (0%) Avoid sending keys that not supported by a keyboard model * (0%) Add deamon mode for custom effects ## Tasks (Assigned to MatMoul) : From 945c1dfc8a8596c39f2d61c74bfb44a2cd93652e Mon Sep 17 00:00:00 2001 From: MatMoul Date: Tue, 7 Feb 2017 00:49:18 +0100 Subject: [PATCH 077/187] Bug correction --- src/helpers/help.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index a669899..04595e7 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -188,7 +188,7 @@ namespace help { cout< Date: Tue, 7 Feb 2017 00:51:01 +0100 Subject: [PATCH 078/187] Bug correction --- src/helpers/help.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index 04595e7..72a0fc9 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -188,7 +188,7 @@ namespace help { cout< Date: Sat, 11 Feb 2017 22:28:53 +0100 Subject: [PATCH 079/187] Restore g910 native effect --- src/classes/Keyboard.cpp | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index d5ae030..d3c09a7 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -427,22 +427,38 @@ bool LedKeyboard::setStartupMode(StartupMode startupMode) { bool LedKeyboard::setNativeEffect(NativeEffect effect, NativeEffectPart part, uint8_t speed, Color color) { + uint8_t protocolByte = 0; + + switch (m_keyboardModel) { + case KeyboardModel::g410: + case KeyboardModel::g610: + case KeyboardModel::g810: + protocolByte = 0x0d; + break; + case KeyboardModel::g910: + protocolByte = 0x10; + break; + default: + return false; + } + byte_buffer_t data; + switch (effect) { case NativeEffect::color: - data = { 0x11, 0xff, 0x0d, 0x3c, (uint8_t)part, 0x01, color.red, color.green, color.blue, 0x02 }; + data = { 0x11, 0xff, protocolByte, 0x3c, (uint8_t)part, 0x01, color.red, color.green, color.blue, 0x02 }; break; case NativeEffect::breathing: data = { - 0x11, 0xff, 0x0d, 0x3c, (uint8_t)part, 0x02, + 0x11, 0xff, protocolByte, 0x3c, (uint8_t)part, 0x02, color.red, color.green, color.blue, speed, 0x10, 0x00, 0x64 }; break; case NativeEffect::cycle: data = { - 0x11, 0xff, 0x0d, 0x3c, (uint8_t)part, 0x03, + 0x11, 0xff, protocolByte, 0x3c, (uint8_t)part, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, speed, 0x00, 0x00, 0x64 }; break; @@ -453,7 +469,7 @@ bool LedKeyboard::setNativeEffect(NativeEffect effect, NativeEffectPart part, ui break; default: data = { - 0x11, 0xff, 0x0d, 0x3c, (uint8_t)part, 0x04, + 0x11, 0xff, protocolByte, 0x3c, (uint8_t)part, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x01, 0x64, speed }; break; @@ -466,7 +482,7 @@ bool LedKeyboard::setNativeEffect(NativeEffect effect, NativeEffectPart part, ui break; default: data = { - 0x11, 0xff, 0x0d, 0x3c, (uint8_t)part, 0x04, + 0x11, 0xff, protocolByte, 0x3c, (uint8_t)part, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x02, 0x64, speed }; break; @@ -479,7 +495,7 @@ bool LedKeyboard::setNativeEffect(NativeEffect effect, NativeEffectPart part, ui break; default: data = { - 0x11, 0xff, 0x0d, 0x3c, (uint8_t)part, 0x04, + 0x11, 0xff, protocolByte, 0x3c, (uint8_t)part, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x03, 0x64, speed }; break; From 9ea4c49530d54bbdd3d099d1c48965d8cc96fa26 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 11 Feb 2017 22:30:53 +0100 Subject: [PATCH 080/187] Update TODO.md --- TODO.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TODO.md b/TODO.md index 0f25f35..ed75958 100644 --- a/TODO.md +++ b/TODO.md @@ -6,8 +6,8 @@ * (80%) Send specialized help based on executable name * (0%) Improve --help-effects * (0%) Improve --help-samples +* (0%) Add support of multiple keyboards * (0%) Add a python sample effects that use stdin -* (100%) Use a default profile compatible with the G610 (for indicators) * (0%) Use a more generic name for config dir and systemd units * (0%) Choose versionning method * (1%) Make distributions ready package but it's dependent to versionning method
From 845e4c02e3bedd6f01fa124969bf2be632000750 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 11 Feb 2017 23:27:57 +0100 Subject: [PATCH 081/187] Update TODO --- TODO.md | 1 + 1 file changed, 1 insertion(+) diff --git a/TODO.md b/TODO.md index ed75958..4c71fcf 100644 --- a/TODO.md +++ b/TODO.md @@ -6,6 +6,7 @@ * (80%) Send specialized help based on executable name * (0%) Improve --help-effects * (0%) Improve --help-samples +* (0%) [Edit arch logitech gaming keyboard wiki](https://wiki.archlinux.org/index.php/Logitech_Gaming_Keyboards) * (0%) Add support of multiple keyboards * (0%) Add a python sample effects that use stdin * (0%) Use a more generic name for config dir and systemd units From e79c4e324133e584c05170491188fd4a9df58160 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sun, 12 Feb 2017 01:00:02 +0100 Subject: [PATCH 082/187] Improve samples --- TODO.md | 2 +- src/helpers/help.cpp | 34 ++++++++++++++++++++++++++++++---- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/TODO.md b/TODO.md index 4c71fcf..b513863 100644 --- a/TODO.md +++ b/TODO.md @@ -5,7 +5,7 @@ * (0%) Improve INSTALL.md to support more distributions (And CentOS with hidapi) * (80%) Send specialized help based on executable name * (0%) Improve --help-effects -* (0%) Improve --help-samples +* (80%) Improve --help-samples * (0%) [Edit arch logitech gaming keyboard wiki](https://wiki.archlinux.org/index.php/Logitech_Gaming_Keyboards) * (0%) Add support of multiple keyboards * (0%) Add a python sample effects that use stdin diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index 72a0fc9..a30549a 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -205,15 +205,41 @@ namespace help { cout< Date: Sun, 12 Feb 2017 02:09:37 +0100 Subject: [PATCH 083/187] Avoid sending keys that not supported by a keyboard model --- src/classes/Keyboard.cpp | 45 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index d3c09a7..f01aeca 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -266,19 +266,56 @@ bool LedKeyboard::setKeys(KeyValueArray keyValues) { for (uint8_t i = 0; i < keyValues.size(); i++) { switch(static_cast(static_cast(keyValues[i].key) >> 8 )) { case LedKeyboard::KeyAddressGroup::logo: - if (SortedKeys[0].size() <= 2) SortedKeys[0].push_back(keyValues[i]); + switch (m_keyboardModel) { + case LedKeyboard::KeyboardModel::g410: + case LedKeyboard::KeyboardModel::g610: + case LedKeyboard::KeyboardModel::g810: + if (SortedKeys[0].size() <= 1 && keyValues[i].key == LedKeyboard::Key::logo) SortedKeys[0].push_back(keyValues[i]); + break; + case LedKeyboard::KeyboardModel::g910: + if (SortedKeys[0].size() <= 2) SortedKeys[0].push_back(keyValues[i]); + break; + default: + break; + } break; case LedKeyboard::KeyAddressGroup::indicators: if (SortedKeys[1].size() <= 5) SortedKeys[1].push_back(keyValues[i]); break; case LedKeyboard::KeyAddressGroup::multimedia: - if (SortedKeys[2].size() <= 5) SortedKeys[2].push_back(keyValues[i]); + switch (m_keyboardModel) { + case LedKeyboard::KeyboardModel::g610: + case LedKeyboard::KeyboardModel::g810: + if (SortedKeys[2].size() <= 5) SortedKeys[2].push_back(keyValues[i]); + break; + default: + break; + } break; case LedKeyboard::KeyAddressGroup::gkeys: - if (SortedKeys[3].size() <= 9) SortedKeys[3].push_back(keyValues[i]); + switch (m_keyboardModel) { + case LedKeyboard::KeyboardModel::g910: + if (SortedKeys[3].size() <= 9) SortedKeys[3].push_back(keyValues[i]); + break; + default: + break; + } break; case LedKeyboard::KeyAddressGroup::keys: - if (SortedKeys[4].size() <= 120) SortedKeys[4].push_back(keyValues[i]); + switch (m_keyboardModel) { + case LedKeyboard::KeyboardModel::g610: + case LedKeyboard::KeyboardModel::g810: + case LedKeyboard::KeyboardModel::g910: + if (SortedKeys[4].size() <= 120) SortedKeys[4].push_back(keyValues[i]); + break; + case LedKeyboard::KeyboardModel::g410: + // need filter num pad for G410 + // if (SortedKeys[4].size() <= 120 && keyValues[i].key > 0x07 && keyValues[i].key < 0x23) SortedKeys[4].push_back(keyValues[i]); + if (SortedKeys[4].size() <= 120) SortedKeys[4].push_back(keyValues[i]); + break; + default: + break; + } break; } } From 597d75a59dd41c967bde191603fe843fa230caee Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sun, 12 Feb 2017 02:10:18 +0100 Subject: [PATCH 084/187] Update TODO --- TODO.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/TODO.md b/TODO.md index b513863..1adee43 100644 --- a/TODO.md +++ b/TODO.md @@ -3,9 +3,6 @@ ## Tasks (Help wanted) : * (0%) Code review (memory leak and other...) * (0%) Improve INSTALL.md to support more distributions (And CentOS with hidapi) -* (80%) Send specialized help based on executable name -* (0%) Improve --help-effects -* (80%) Improve --help-samples * (0%) [Edit arch logitech gaming keyboard wiki](https://wiki.archlinux.org/index.php/Logitech_Gaming_Keyboards) * (0%) Add support of multiple keyboards * (0%) Add a python sample effects that use stdin @@ -15,7 +12,9 @@ ArchLinux (in AUR): g810-led-git ## Tasks (Assigned to MatMoul but you can participate) : -* (0%) Avoid sending keys that not supported by a keyboard model +* (90%) Send specialized help based on executable name +* (90%) Improve --help-samples +* (70%) Avoid sending keys that not supported by a keyboard model * (0%) Add deamon mode for custom effects ## Tasks (Assigned to MatMoul) : From 3e1e4d494f286406b09bbe55f163647853d1cc3b Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sun, 12 Feb 2017 02:12:14 +0100 Subject: [PATCH 085/187] Add devil comment --- src/classes/Keyboard.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index f01aeca..a0470bc 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -548,7 +548,7 @@ bool LedKeyboard::setNativeEffect(NativeEffect effect, NativeEffectPart part, ui } - +// Devil code ... bool LedKeyboard::sendDataInternal(byte_buffer_t &data) { if (! m_isOpen) return false; From b6762b1dacd990cc892709633b4137f0f7fbcd95 Mon Sep 17 00:00:00 2001 From: matthunz Date: Sun, 19 Feb 2017 00:15:19 -0500 Subject: [PATCH 086/187] Update INSTALL.md pacaur and yaourt don't use sudo --- INSTALL.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index a6fc648..51642af 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -17,8 +17,8 @@ hidapi is recommended but if you encounter problem on your system, switch to lib ## Installation by repos :
ArchLinux (aur) :
-`sudo yaourt -S g810-led-git` # with yaourt
-`sudo pacaur -S g810-led-git` # with pacaur
+`yaourt -S g810-led-git` # with yaourt
+`pacaur -S g810-led-git` # with pacaur
## Installation of dependencies :
From 6a98d1dd9522e8b641e027f113eb6e34cf708a58 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 25 Feb 2017 01:03:17 +0100 Subject: [PATCH 087/187] Update help and todo --- TODO.md | 2 - src/helpers/help.cpp | 204 +++++++++++++++++++++---------------------- 2 files changed, 102 insertions(+), 104 deletions(-) diff --git a/TODO.md b/TODO.md index 1adee43..67d9960 100644 --- a/TODO.md +++ b/TODO.md @@ -12,8 +12,6 @@ ArchLinux (in AUR): g810-led-git ## Tasks (Assigned to MatMoul but you can participate) : -* (90%) Send specialized help based on executable name -* (90%) Improve --help-samples * (70%) Avoid sending keys that not supported by a keyboard model * (0%) Add deamon mode for custom effects diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index a30549a..997a5b6 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -52,135 +52,135 @@ namespace help { void keys(char *arg0) { string cmdName = utils::getCmdName(arg0); - cout< Date: Sat, 25 Feb 2017 01:11:01 +0100 Subject: [PATCH 088/187] make more readable --- src/classes/Keyboard.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index a0470bc..d8d47d7 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -270,7 +270,8 @@ bool LedKeyboard::setKeys(KeyValueArray keyValues) { case LedKeyboard::KeyboardModel::g410: case LedKeyboard::KeyboardModel::g610: case LedKeyboard::KeyboardModel::g810: - if (SortedKeys[0].size() <= 1 && keyValues[i].key == LedKeyboard::Key::logo) SortedKeys[0].push_back(keyValues[i]); + if (SortedKeys[0].size() <= 1 && keyValues[i].key == LedKeyboard::Key::logo) + SortedKeys[0].push_back(keyValues[i]); break; case LedKeyboard::KeyboardModel::g910: if (SortedKeys[0].size() <= 2) SortedKeys[0].push_back(keyValues[i]); @@ -310,7 +311,8 @@ bool LedKeyboard::setKeys(KeyValueArray keyValues) { break; case LedKeyboard::KeyboardModel::g410: // need filter num pad for G410 - // if (SortedKeys[4].size() <= 120 && keyValues[i].key > 0x07 && keyValues[i].key < 0x23) SortedKeys[4].push_back(keyValues[i]); + // if (SortedKeys[4].size() <= 120 && keyValues[i].key > 0x07 && keyValues[i].key < 0x23) + // SortedKeys[4].push_back(keyValues[i]); if (SortedKeys[4].size() <= 120) SortedKeys[4].push_back(keyValues[i]); break; default: From 7df4cc0888cac2df7f0e18cbf7bea2fbe573f142 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 25 Feb 2017 01:12:58 +0100 Subject: [PATCH 089/187] make more readable --- src/classes/Keyboard.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index d8d47d7..1feea96 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -311,7 +311,8 @@ bool LedKeyboard::setKeys(KeyValueArray keyValues) { break; case LedKeyboard::KeyboardModel::g410: // need filter num pad for G410 - // if (SortedKeys[4].size() <= 120 && keyValues[i].key > 0x07 && keyValues[i].key < 0x23) + // if (SortedKeys[4].size() <= 120 && keyValues[i].key > 0x07 && + // keyValues[i].key < 0x23) // SortedKeys[4].push_back(keyValues[i]); if (SortedKeys[4].size() <= 120) SortedKeys[4].push_back(keyValues[i]); break; From a43c89a2bdfd2c39bf043f9149b5d6b095afa771 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 25 Feb 2017 03:07:10 +0100 Subject: [PATCH 090/187] Add make release support --- makerelease | 46 ++++++++++++++++++++++++++++++++++++++++++++ src/helpers/help.cpp | 4 +++- 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100755 makerelease diff --git a/makerelease b/makerelease new file mode 100755 index 0000000..c5a3b6d --- /dev/null +++ b/makerelease @@ -0,0 +1,46 @@ +#!/bin/bash + +if [ "$1" == "" ]; then + echo "Error: No version provided" + echo "./makerelease 0.0.1" + exit 1 +fi + +ssh -T git@github.com +if [ ! "$?" = "1" ]; then + echo "No Github ssh key loaded exiting..." + exit 1 +fi + +clear +branch=$(git rev-parse --abbrev-ref HEAD) +read -p "Current branch is $branch. Continue ? (y/N)" choice +case "$choice" in + n|N|'' ) + echo "Cancel !" + exit 1 + ;; + y|Y ) echo "Make release...";; + * ) + echo "Cancel !" + exit 1 + ;; +esac + + + +# Ready to update : + +version=$1 + +sed -i "/string version = /c\\\tstring version = \"$version\";" src/helpers/help.cpp +git commit -m "Version $version" src/* +git push + +git tag -a "v$version" -m "Version $version" +git push --tags + +#wget https://github.com/MatMoul/g810-led/archive/v$version.zip +#wget https://github.com/MatMoul/g810-led/archive/v$version.tar.gz + +#Publish to aur... diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index 997a5b6..eb56b55 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -8,11 +8,13 @@ using namespace std; namespace help { + string version = "0.0.1"; void usage(char *arg0) { string cmdName = utils::getCmdName(arg0); cout< Date: Sat, 25 Feb 2017 03:12:20 +0100 Subject: [PATCH 091/187] Version 0.0.2 --- src/helpers/help.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index eb56b55..f8a1254 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -8,7 +8,7 @@ using namespace std; namespace help { - string version = "0.0.1"; + string version = "0.0.2"; void usage(char *arg0) { string cmdName = utils::getCmdName(arg0); From 57acff09104d22ab68b960daa9e7574cc9e3ddab Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 25 Feb 2017 03:24:28 +0100 Subject: [PATCH 092/187] Version 0.1.0 --- src/helpers/help.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index f8a1254..7a5c71c 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -8,7 +8,7 @@ using namespace std; namespace help { - string version = "0.0.2"; + string version = "0.1.0"; void usage(char *arg0) { string cmdName = utils::getCmdName(arg0); From 619e6af72c896d27cec6cf7b222d202c1d5c5cdc Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 3 Mar 2017 20:04:39 +0100 Subject: [PATCH 093/187] Update TODO --- TODO.md | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/TODO.md b/TODO.md index 67d9960..10ba647 100644 --- a/TODO.md +++ b/TODO.md @@ -1,27 +1,24 @@ # g810-led TODO ## Tasks (Help wanted) : -* (0%) Code review (memory leak and other...) -* (0%) Improve INSTALL.md to support more distributions (And CentOS with hidapi) +* (50%) Code review (memory leak and other...) +* (5%) Make distributions ready package * (0%) [Edit arch logitech gaming keyboard wiki](https://wiki.archlinux.org/index.php/Logitech_Gaming_Keyboards) +* (0%) Improve INSTALL.md to support more distributions (And CentOS with hidapi) * (0%) Add support of multiple keyboards * (0%) Add a python sample effects that use stdin * (0%) Use a more generic name for config dir and systemd units -* (0%) Choose versionning method -* (1%) Make distributions ready package but it's dependent to versionning method
-ArchLinux (in AUR): g810-led-git ## Tasks (Assigned to MatMoul but you can participate) : +* (90%) Choose versionning method * (70%) Avoid sending keys that not supported by a keyboard model -* (0%) Add deamon mode for custom effects - -## Tasks (Assigned to MatMoul) : -* (0%) Add a new repo for custom effects ## Possible enhancements : -* (0%) Support of G keys on G910 ([issue 39](https://github.com/MatMoul/g810-led/issues/39) if config is sent by software) -* (0%) Support of new G Mouse like the G403 ([issue 40](https://github.com/MatMoul/g810-led/issues/40)) -* (0%) Support country based keybord ([issue 16](https://github.com/MatMoul/g810-led/issues/16) but very hard) +* Add deamon mode for custom effects +* Add a new repo for custom effects +* Support of G keys on G910 ([issue 39](https://github.com/MatMoul/g810-led/issues/39) if config is sent by software) +* Support of new G Mouse like the G403 ([issue 40](https://github.com/MatMoul/g810-led/issues/40)) +* Support country based keybord ([issue 16](https://github.com/MatMoul/g810-led/issues/16) but very hard) ## Other enhancements : * Open an issue before work to hard From be7d367079aea8b08ba6f04d730af6981d183a36 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 11 Mar 2017 17:56:40 +0100 Subject: [PATCH 094/187] Add MKeys led control --- src/classes/Keyboard.cpp | 47 ++++++++++++++++++++++++++++++++++++++++ src/classes/Keyboard.h | 3 +++ src/helpers/help.cpp | 10 ++++++++- src/helpers/utils.cpp | 7 ++++++ src/helpers/utils.h | 1 + src/main.cpp | 22 +++++++++++++++++++ 6 files changed, 89 insertions(+), 1 deletion(-) diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index 1feea96..6eb2808 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -446,6 +446,53 @@ bool LedKeyboard::setAllKeys(LedKeyboard::Color color) { } +bool LedKeyboard::setMRKey(uint8_t value) { + LedKeyboard::byte_buffer_t data; + switch (m_keyboardModel) { + case KeyboardModel::g910: + switch (value) { + case 0x00: + case 0x01: + data = { 0x11, 0xff, 0x0a, 0x0e, value }; + data.resize(20, 0x00); + return sendDataInternal(data); + default: + break; + } + break; + default: + break; + } + return false; +} + +bool LedKeyboard::setMNKey(uint8_t value) { + LedKeyboard::byte_buffer_t data; + switch (m_keyboardModel) { + case KeyboardModel::g910: + switch (value) { + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + data = { 0x11, 0xff, 0x09, 0x1e, value }; + data.resize(20, 0x00); + return sendDataInternal(data); + default: + break; + } + break; + default: + break; + } + return false; +} + + bool LedKeyboard::setStartupMode(StartupMode startupMode) { byte_buffer_t data; switch (m_keyboardModel) { diff --git a/src/classes/Keyboard.h b/src/classes/Keyboard.h index b59343f..b0d79d3 100644 --- a/src/classes/Keyboard.h +++ b/src/classes/Keyboard.h @@ -140,6 +140,9 @@ class LedKeyboard { bool setGroupKeys(KeyGroup keyGroup, Color color); bool setAllKeys(Color color); + bool setMRKey(uint8_t value); + bool setMNKey(uint8_t value); + bool setStartupMode(StartupMode startupMode); bool setNativeEffect(NativeEffect effect, NativeEffectPart part, uint8_t speed, Color color); diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index 7a5c71c..1c3757f 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -8,7 +8,7 @@ using namespace std; namespace help { - string version = "0.1.0"; + string version = "0.1.1"; void usage(char *arg0) { string cmdName = utils::getCmdName(arg0); @@ -19,10 +19,18 @@ namespace help { cout<<" -a {color}\t\t\t\tSet all keys color"< 2 && arg == "-a") return setAllKeys(kbd, argv[2]); else if (argc > 3 && arg == "-g") return setGroupKeys(kbd, argv[2], argv[3]); else if (argc > 3 && arg == "-k") return setKey(kbd, argv[2], argv[3]); + else if (argc > 2 && arg == "-mr") return setMRKey(kbd, argv[2]); + else if (argc > 2 && arg == "-mn") return setMNKey(kbd, argv[2]); else if (argc > 2 && arg == "-an") return setAllKeys(kbd, argv[2], false); else if (argc > 3 && arg == "-gn") return setGroupKeys(kbd, argv[2], argv[3], false); else if (argc > 3 && arg == "-kn") return setKey(kbd, argv[2], argv[3], false); + else if (argc > 2 && arg == "-mrn") return setMRKey(kbd, argv[2], false); + else if (argc > 2 && arg == "-mnn") return setMNKey(kbd, argv[2], false); else if (argc > 2 && arg == "-p") return loadProfile(kbd, argv[2]); else if (argc > 1 && arg == "-pp") return pipeProfile(kbd); From 148bd480dfddf6be519bf091af22838f6845a9bb Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 11 Mar 2017 18:11:40 +0100 Subject: [PATCH 095/187] Add MKeys profile support --- src/main.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main.cpp b/src/main.cpp index 642eec3..333dd30 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -174,6 +174,10 @@ int parseProfile(LedKeyboard &kbd, std::istream &stream) { if (utils::parseKey(args[1], key)) if (utils::parseColor(args[2], color)) keys.push_back({ key, color }); + } else if (args[0] == "mr" && args.size() > 1) { + if (setMRKey(kbd, args[1], false) == 1) retval = 1; + } else if (args[0] == "mn" && args.size() > 1) { + if (setMNKey(kbd, args[1], false) == 1) retval = 1; } else if (args[0] == "fx" && args.size() > 4) { if (setFX(kbd, args[1], args[2], args[3], args[4]) == 1) retval = 1; } else if (args[0] == "fx" && args.size() > 3) { From b4023fd4e309f7e8b9b74f5c1fe404c4444ba44d Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 11 Mar 2017 18:44:19 +0100 Subject: [PATCH 096/187] Update TODO --- TODO.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/TODO.md b/TODO.md index 10ba647..e3dac5a 100644 --- a/TODO.md +++ b/TODO.md @@ -1,7 +1,8 @@ # g810-led TODO ## Tasks (Help wanted) : -* (50%) Code review (memory leak and other...) +* (0%) Bug "Key with no color after script" [issue 45](https://github.com/MatMoul/g810-led/issues/45), [issue 49](https://github.com/MatMoul/g810-led/issues/49) +* (70%) Code review (memory leak and other...) * (5%) Make distributions ready package * (0%) [Edit arch logitech gaming keyboard wiki](https://wiki.archlinux.org/index.php/Logitech_Gaming_Keyboards) * (0%) Improve INSTALL.md to support more distributions (And CentOS with hidapi) @@ -10,7 +11,7 @@ * (0%) Use a more generic name for config dir and systemd units ## Tasks (Assigned to MatMoul but you can participate) : -* (90%) Choose versionning method +* (80%) Add MKeys led control support * (70%) Avoid sending keys that not supported by a keyboard model ## Possible enhancements : From d72e526ac9f7990faf11693fd8937d345f71bdfd Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 11 Mar 2017 18:44:46 +0100 Subject: [PATCH 097/187] Typo --- src/classes/Keyboard.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/classes/Keyboard.h b/src/classes/Keyboard.h index b0d79d3..3a0be18 100644 --- a/src/classes/Keyboard.h +++ b/src/classes/Keyboard.h @@ -102,7 +102,7 @@ class LedKeyboard { num_1, num_2, num_3, num_4, num_5, num_6, num_7, num_8, num_9, num_0, num_dot, intl_backslash, menu, - ctrl_left = static_cast(KeyAddressGroup::keys) << 8 | 0xe0, + ctrl_left = static_cast(KeyAddressGroup::keys) << 8 | 0xe0, shift_left, alt_left, win_left, ctrl_right, shift_right, alt_right, win_right From 664f1346c7580af5e9699dc3eb75d6d539791c56 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 11 Mar 2017 18:53:29 +0100 Subject: [PATCH 098/187] Filter numpad keys for g410 --- TODO.md | 1 - src/classes/Keyboard.cpp | 8 +++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/TODO.md b/TODO.md index e3dac5a..7135b06 100644 --- a/TODO.md +++ b/TODO.md @@ -12,7 +12,6 @@ ## Tasks (Assigned to MatMoul but you can participate) : * (80%) Add MKeys led control support -* (70%) Avoid sending keys that not supported by a keyboard model ## Possible enhancements : * Add deamon mode for custom effects diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index 6eb2808..382f9cc 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -310,11 +310,9 @@ bool LedKeyboard::setKeys(KeyValueArray keyValues) { if (SortedKeys[4].size() <= 120) SortedKeys[4].push_back(keyValues[i]); break; case LedKeyboard::KeyboardModel::g410: - // need filter num pad for G410 - // if (SortedKeys[4].size() <= 120 && keyValues[i].key > 0x07 && - // keyValues[i].key < 0x23) - // SortedKeys[4].push_back(keyValues[i]); - if (SortedKeys[4].size() <= 120) SortedKeys[4].push_back(keyValues[i]); + if (SortedKeys[4].size() <= 120) + if (keyValues[i].key < LedKeyboard::Key::num_lock || keyValues[i].key > LedKeyboard::Key::num_dot) + SortedKeys[4].push_back(keyValues[i]); break; default: break; From 8931db5685e11fe57d754ef91ea3a701a1ab867f Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 11 Mar 2017 21:14:50 +0100 Subject: [PATCH 099/187] Add GKeys mapping mode suport --- src/classes/Keyboard.cpp | 20 ++++++++++++++++++++ src/classes/Keyboard.h | 1 + src/helpers/help.cpp | 2 ++ src/main.cpp | 13 +++++++++++++ 4 files changed, 36 insertions(+) diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index 382f9cc..4ebfe9f 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -490,6 +490,26 @@ bool LedKeyboard::setMNKey(uint8_t value) { return false; } +bool LedKeyboard::setGKeysMode(uint8_t value) { + LedKeyboard::byte_buffer_t data; + switch (m_keyboardModel) { + case KeyboardModel::g910: + switch (value) { + case 0x00: + case 0x01: + data = { 0x11, 0xff, 0x08, 0x2e, value }; + data.resize(20, 0x00); + return sendDataInternal(data); + default: + break; + } + break; + default: + break; + } + return false; +} + bool LedKeyboard::setStartupMode(StartupMode startupMode) { byte_buffer_t data; diff --git a/src/classes/Keyboard.h b/src/classes/Keyboard.h index 3a0be18..946382f 100644 --- a/src/classes/Keyboard.h +++ b/src/classes/Keyboard.h @@ -142,6 +142,7 @@ class LedKeyboard { bool setMRKey(uint8_t value); bool setMNKey(uint8_t value); + bool setGKeysMode(uint8_t value); bool setStartupMode(StartupMode startupMode); diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index 1c3757f..7358700 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -22,6 +22,8 @@ namespace help { if (cmdName == "g910-led") { cout<<" -mr {value}\t\t\t\tSet MR key (0-1)"< 1) { if (setMNKey(kbd, args[1], false) == 1) retval = 1; + } else if (args[0] == "gkm" && args.size() > 1) { + if (setGKeysMode(kbd, args[1], false) == 1) retval = 1; } else if (args[0] == "fx" && args.size() > 4) { if (setFX(kbd, args[1], args[2], args[3], args[4]) == 1) retval = 1; } else if (args[0] == "fx" && args.size() > 3) { @@ -233,6 +244,8 @@ int main(int argc, char **argv) { else if (argc > 2 && arg == "-mrn") return setMRKey(kbd, argv[2], false); else if (argc > 2 && arg == "-mnn") return setMNKey(kbd, argv[2], false); + else if (argc > 2 && arg == "-gkm") return setGKeysMode(kbd, argv[2]); + else if (argc > 2 && arg == "-p") return loadProfile(kbd, argv[2]); else if (argc > 1 && arg == "-pp") return pipeProfile(kbd); From e233ad903f5045311bff42ba867d342fddc89d13 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 11 Mar 2017 21:16:38 +0100 Subject: [PATCH 100/187] Remove commit for RM Keys --- src/main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 064fff9..fae9dca 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -51,7 +51,7 @@ int setMRKey(LedKeyboard &kbd, std::string arg2, bool commit = true) { if (! utils::parseUInt8(arg2, value)) return 1; if (! kbd.open()) return 1; if (! kbd.setMRKey(value)) return 1; - if (commit) if(! kbd.commit()) return 1; + //if (commit) if(! kbd.commit()) return 1; return 0; } @@ -60,7 +60,7 @@ int setMNKey(LedKeyboard &kbd, std::string arg2, bool commit = true) { if (! utils::parseUInt8(arg2, value)) return 1; if (! kbd.open()) return 1; if (! kbd.setMNKey(value)) return 1; - if (commit) if(! kbd.commit()) return 1; + //if (commit) if(! kbd.commit()) return 1; return 0; } From 3c4c2ceef090156a2e7af1ed0a063c69c73c8183 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 11 Mar 2017 21:34:17 +0100 Subject: [PATCH 101/187] Set V 0.2.0 Branch --- src/helpers/help.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index 7358700..b953100 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -8,7 +8,7 @@ using namespace std; namespace help { - string version = "0.1.1"; + string version = "0.2.0"; void usage(char *arg0) { string cmdName = utils::getCmdName(arg0); @@ -29,10 +29,6 @@ namespace help { cout<<" -an {color}\t\t\t\tSet all keys color without commit"< Date: Sat, 11 Mar 2017 21:34:29 +0100 Subject: [PATCH 102/187] Clean code --- src/main.cpp | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index fae9dca..a157912 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -46,30 +46,27 @@ int setKey(LedKeyboard &kbd, std::string arg2, std::string arg3, bool commit = t return 0; } -int setMRKey(LedKeyboard &kbd, std::string arg2, bool commit = true) { +int setMRKey(LedKeyboard &kbd, std::string arg2) { uint8_t value; if (! utils::parseUInt8(arg2, value)) return 1; if (! kbd.open()) return 1; if (! kbd.setMRKey(value)) return 1; - //if (commit) if(! kbd.commit()) return 1; return 0; } -int setMNKey(LedKeyboard &kbd, std::string arg2, bool commit = true) { +int setMNKey(LedKeyboard &kbd, std::string arg2) { uint8_t value; if (! utils::parseUInt8(arg2, value)) return 1; if (! kbd.open()) return 1; if (! kbd.setMNKey(value)) return 1; - //if (commit) if(! kbd.commit()) return 1; return 0; } -int setGKeysMode(LedKeyboard &kbd, std::string arg2, bool commit = true) { +int setGKeysMode(LedKeyboard &kbd, std::string arg2) { uint8_t value; if (! utils::parseUInt8(arg2, value)) return 1; if (! kbd.open()) return 1; if (! kbd.setGKeysMode(value)) return 1; - //if (commit) if(! kbd.commit()) return 1; return 0; } @@ -241,8 +238,6 @@ int main(int argc, char **argv) { else if (argc > 2 && arg == "-an") return setAllKeys(kbd, argv[2], false); else if (argc > 3 && arg == "-gn") return setGroupKeys(kbd, argv[2], argv[3], false); else if (argc > 3 && arg == "-kn") return setKey(kbd, argv[2], argv[3], false); - else if (argc > 2 && arg == "-mrn") return setMRKey(kbd, argv[2], false); - else if (argc > 2 && arg == "-mnn") return setMNKey(kbd, argv[2], false); else if (argc > 2 && arg == "-gkm") return setGKeysMode(kbd, argv[2]); From 5bdc691dddbbc00c82969924846f187d1bb23ad8 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 11 Mar 2017 21:35:39 +0100 Subject: [PATCH 103/187] Clean code --- src/main.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index a157912..bd3dcae 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -181,11 +181,11 @@ int parseProfile(LedKeyboard &kbd, std::istream &stream) { if (utils::parseColor(args[2], color)) keys.push_back({ key, color }); } else if (args[0] == "mr" && args.size() > 1) { - if (setMRKey(kbd, args[1], false) == 1) retval = 1; + if (setMRKey(kbd, args[1]) == 1) retval = 1; } else if (args[0] == "mn" && args.size() > 1) { - if (setMNKey(kbd, args[1], false) == 1) retval = 1; + if (setMNKey(kbd, args[1]) == 1) retval = 1; } else if (args[0] == "gkm" && args.size() > 1) { - if (setGKeysMode(kbd, args[1], false) == 1) retval = 1; + if (setGKeysMode(kbd, args[1]) == 1) retval = 1; } else if (args[0] == "fx" && args.size() > 4) { if (setFX(kbd, args[1], args[2], args[3], args[4]) == 1) retval = 1; } else if (args[0] == "fx" && args.size() > 3) { From 019c848d1240e327fa77bfde1f42ca922393b5f6 Mon Sep 17 00:00:00 2001 From: Christopher Reimer Date: Sat, 11 Mar 2017 21:40:50 +0100 Subject: [PATCH 104/187] Add wireshark dump which helped fix #39 Frame 3955: Disables the default mapping of the G keys. I figured 00 out by myself to reenable the default mapping Frame 4397: Enables M1. Everything else was trial and error. More info in #39 Frame 4401: Disables MR. Figured 01 out via trial and error. --- .../G910_gkey_mapping_and_mkeys.pcapng | Bin 0 -> 1195720 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 wireshark_dumps/g910-spark/G910_gkey_mapping_and_mkeys.pcapng diff --git a/wireshark_dumps/g910-spark/G910_gkey_mapping_and_mkeys.pcapng b/wireshark_dumps/g910-spark/G910_gkey_mapping_and_mkeys.pcapng new file mode 100644 index 0000000000000000000000000000000000000000..eab210772db2f51ee7348357bac8403ef24a4f36 GIT binary patch literal 1195720 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
uKim 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 z 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

d^03Kckbt$f@fw10Anp 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 literal 0 HcmV?d00001 From 1a86c04ba207ecc670827918e777512354d615dd Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 11 Mar 2017 22:02:58 +0100 Subject: [PATCH 105/187] Version 0.1.1 --- src/helpers/help.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index b953100..aa54716 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -8,7 +8,7 @@ using namespace std; namespace help { - string version = "0.2.0"; + string version = "0.1.1"; void usage(char *arg0) { string cmdName = utils::getCmdName(arg0); From 72f5f230eb82f5a7af0225a5e73c6122e81b27da Mon Sep 17 00:00:00 2001 From: Christopher Reimer Date: Sat, 11 Mar 2017 22:30:29 +0100 Subject: [PATCH 106/187] Make hidapi wait for at least 1ms for any answer from the keyboard. Setting this to 0 seems to make hidapi skip the read. And at least the G910 doesn't seem to like this very much. --- src/classes/Keyboard.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index 1feea96..5b9a9cf 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -562,10 +562,9 @@ bool LedKeyboard::sendDataInternal(byte_buffer_t &data) { std::cout<<"Error: Can not write to hidraw, try with the libusb version"<(data2.data()), data2.size(), 0); + hid_read_timeout(m_hidHandle, const_cast(data2.data()), data2.size(), 1); return true; #elif defined(libusb) if (data.size() > 20) { From 53c3a018572b4e1437dada81481cd8d382db3687 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 11 Mar 2017 23:31:23 +0100 Subject: [PATCH 107/187] V 0.1.2 --- src/helpers/help.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index aa54716..c1a3f6d 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -8,7 +8,7 @@ using namespace std; namespace help { - string version = "0.1.1"; + string version = "0.1.2"; void usage(char *arg0) { string cmdName = utils::getCmdName(arg0); From 48e61679616df8450852b86969bdc7ff3f8dc26d Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 11 Mar 2017 23:56:58 +0100 Subject: [PATCH 108/187] Validate setNativeEffects --- src/classes/Keyboard.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index a9da121..8e6eb08 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -535,8 +535,8 @@ bool LedKeyboard::setNativeEffect(NativeEffect effect, NativeEffectPart part, ui uint8_t protocolByte = 0; switch (m_keyboardModel) { - case KeyboardModel::g410: - case KeyboardModel::g610: + case KeyboardModel::g410: // Unconfirmed + case KeyboardModel::g610: // Unconfirmed case KeyboardModel::g810: protocolByte = 0x0d; break; From 4369e4818525d66e072f7c5447bdf6f8de1a1716 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sun, 12 Mar 2017 00:00:48 +0100 Subject: [PATCH 109/187] Update TODO --- TODO.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TODO.md b/TODO.md index 7135b06..0b21143 100644 --- a/TODO.md +++ b/TODO.md @@ -1,7 +1,7 @@ # g810-led TODO ## Tasks (Help wanted) : -* (0%) Bug "Key with no color after script" [issue 45](https://github.com/MatMoul/g810-led/issues/45), [issue 49](https://github.com/MatMoul/g810-led/issues/49) +* (90%) Bug "Key with no color after script" [issue 45](https://github.com/MatMoul/g810-led/issues/45), [issue 49](https://github.com/MatMoul/g810-led/issues/49) * (70%) Code review (memory leak and other...) * (5%) Make distributions ready package * (0%) [Edit arch logitech gaming keyboard wiki](https://wiki.archlinux.org/index.php/Logitech_Gaming_Keyboards) From d0377d54ab65dce5ad47891ef6b71c621355f7ac Mon Sep 17 00:00:00 2001 From: MatMoul Date: Mon, 13 Mar 2017 21:23:09 +0100 Subject: [PATCH 110/187] Update TODO --- TODO.md | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/TODO.md b/TODO.md index 0b21143..14ede3f 100644 --- a/TODO.md +++ b/TODO.md @@ -1,24 +1,19 @@ # g810-led TODO ## Tasks (Help wanted) : -* (90%) Bug "Key with no color after script" [issue 45](https://github.com/MatMoul/g810-led/issues/45), [issue 49](https://github.com/MatMoul/g810-led/issues/49) -* (70%) Code review (memory leak and other...) -* (5%) Make distributions ready package -* (0%) [Edit arch logitech gaming keyboard wiki](https://wiki.archlinux.org/index.php/Logitech_Gaming_Keyboards) -* (0%) Improve INSTALL.md to support more distributions (And CentOS with hidapi) -* (0%) Add support of multiple keyboards -* (0%) Add a python sample effects that use stdin -* (0%) Use a more generic name for config dir and systemd units - -## Tasks (Assigned to MatMoul but you can participate) : -* (80%) Add MKeys led control support +* (0%) EASY: [Edit arch logitech gaming keyboard wiki](https://wiki.archlinux.org/index.php/Logitech_Gaming_Keyboards) +* (0%) EASY: Add a python sample effects that use stdin +* (0%) AVERAGE: Add support of multiple keyboards +* (0%) AVERAGE: Improve INSTALL.md to support more distributions (And CentOS with hidapi) +* (5%) AVERAGE: Make distributions ready package +* (80%) HARD: Code review (memory leak and other...) +* (0%) IMAGINATION: Use a more generic name for project, config dir and systemd units ## Possible enhancements : -* Add deamon mode for custom effects +* Add deamon mode for custom effects (Add G Keys handler [issue 39](https://github.com/MatMoul/g810-led/issues/39), [CReimer](https://github.com/CReimer/g910-gkey-uinput))) * Add a new repo for custom effects -* Support of G keys on G910 ([issue 39](https://github.com/MatMoul/g810-led/issues/39) if config is sent by software) -* Support of new G Mouse like the G403 ([issue 40](https://github.com/MatMoul/g810-led/issues/40)) * Support country based keybord ([issue 16](https://github.com/MatMoul/g810-led/issues/16) but very hard) +* Support of new G Mouse like the G403 ([issue 40](https://github.com/MatMoul/g810-led/issues/40)) ## Other enhancements : * Open an issue before work to hard From 4a59cbeea3c4402cc0e66e148249535d1b380c37 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Mon, 13 Mar 2017 22:58:03 +0100 Subject: [PATCH 111/187] Add CONTRIBUTORS file --- CONTRIBUTORS.md | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 CONTRIBUTORS.md diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md new file mode 100644 index 0000000..64cf9bf --- /dev/null +++ b/CONTRIBUTORS.md @@ -0,0 +1,43 @@ +# g810-led - CONTRIBUTORS (alpha order) :
+ +## [andreast1990](https://github.com/andreast1990) : +* Add Wireshark dump for g910 + +## [barul42](https://github.com/barul42) : +* Improve INSTALL.MD + +## [carlba](https://github.com/carlba) : +* Improve install file + +## [CReimer](https://github.com/CReimer) : +* Add Wireshark dump for g910 M and G keys +* Debug hidapi missing keys on certain computer + +## [dkolosa](https://github.com/dkolosa) : +* Provide alternative productid for g910 + +## [francoisfreitag](https://github.com/francoisfreitag) : +* Refactor makefile (hard work) + +## [hschreck](https://github.com/hschreck) : +* Fix typo + +## [jdagerbo](https://github.com/jdagerbo) : +* Refactor many of the code (very hard work) + +## [larsnaesbye](https://github.com/larsnaesbye) : +* Fix typo + +## [lynix](https://github.com/lynix) : +* Improve makefile + +## [matthunz](https://github.com/matthunz) : +* Improve INSTALL.MD for ArchLinux + +## [MohamadSaada](https://github.com/MohamadSaada) : +* Add poweron effect bytes for g910 +* Debug setKeys (hard work) + +## [noisycat](https://github.com/noisycat) : +* Add wireshark dump effects +* Improve makefile From 267fd9688d4d3f44b0a973f6eb44087c7862c7de Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 17 Mar 2017 20:16:57 +0100 Subject: [PATCH 112/187] Clean comment --- src/classes/Keyboard.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index 8e6eb08..415c253 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -616,7 +616,6 @@ bool LedKeyboard::setNativeEffect(NativeEffect effect, NativeEffectPart part, ui } -// Devil code ... bool LedKeyboard::sendDataInternal(byte_buffer_t &data) { if (! m_isOpen) return false; From d9a7c4c5615ecf60008b85e48d2a21671b383ad2 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 18 Mar 2017 19:44:37 +0100 Subject: [PATCH 113/187] Remove logo for G410 --- src/classes/Keyboard.cpp | 1 - src/helpers/help.cpp | 12 +++--------- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index 415c253..a615cc0 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -267,7 +267,6 @@ bool LedKeyboard::setKeys(KeyValueArray keyValues) { switch(static_cast(static_cast(keyValues[i].key) >> 8 )) { case LedKeyboard::KeyAddressGroup::logo: switch (m_keyboardModel) { - case LedKeyboard::KeyboardModel::g410: case LedKeyboard::KeyboardModel::g610: case LedKeyboard::KeyboardModel::g810: if (SortedKeys[0].size() <= 1 && keyValues[i].key == LedKeyboard::Key::logo) diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index c1a3f6d..e263dc1 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -65,8 +65,7 @@ namespace help { cout< Date: Sat, 18 Mar 2017 19:51:43 +0100 Subject: [PATCH 114/187] Remove logo for G410 --- CONTRIBUTORS.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 64cf9bf..4c1003a 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -25,6 +25,9 @@ ## [jdagerbo](https://github.com/jdagerbo) : * Refactor many of the code (very hard work) +## [Landrovan](https://github.com/Landrovan) : +* Improve support of G410 + ## [larsnaesbye](https://github.com/larsnaesbye) : * Fix typo From 4d594583a05ed8cfb2c03dcb00c465aaa612e733 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 18 Mar 2017 21:52:57 +0100 Subject: [PATCH 115/187] Add sample python effect --- TODO.md | 1 - sample_effects/python/k2000 | 96 +++++++++++++++++++++++++++++++++++++ 2 files changed, 96 insertions(+), 1 deletion(-) create mode 100755 sample_effects/python/k2000 diff --git a/TODO.md b/TODO.md index 14ede3f..9b86440 100644 --- a/TODO.md +++ b/TODO.md @@ -2,7 +2,6 @@ ## Tasks (Help wanted) : * (0%) EASY: [Edit arch logitech gaming keyboard wiki](https://wiki.archlinux.org/index.php/Logitech_Gaming_Keyboards) -* (0%) EASY: Add a python sample effects that use stdin * (0%) AVERAGE: Add support of multiple keyboards * (0%) AVERAGE: Improve INSTALL.md to support more distributions (And CentOS with hidapi) * (5%) AVERAGE: Make distributions ready package diff --git a/sample_effects/python/k2000 b/sample_effects/python/k2000 new file mode 100755 index 0000000..ce3c031 --- /dev/null +++ b/sample_effects/python/k2000 @@ -0,0 +1,96 @@ +#!/usr/bin/python2 + +import sys +import subprocess +import time + + +if len(sys.argv) > 1: + if sys.argv[1] == '--help': + print 'k2000 [speed (default:0.01] [colorOff] [colorOn] [colorFade1] [colorFade2]' + sys.exit() + + +speed = 0.01 +colorOff = '000000' +colorOn = 'ff0000' +colorFade1 = 'aa0000' +colorFade2 = '550000' + +if len(sys.argv) > 1: + try: + speed = float(sys.argv[1]) + except: + print 'Speed arg error' +if len(sys.argv) > 2: + try: + colorOff = sys.argv[2] + except: + print 'colorOff arg error' +if len(sys.argv) > 3: + try: + colorOn = sys.argv[3] + except: + print 'colorOn arg error' +if len(sys.argv) > 4: + try: + colorFade1 = sys.argv[4] + except: + print 'colorFade1 arg error' +if len(sys.argv) > 5: + try: + colorFade2 = sys.argv[5] + except: + print 'colorFade2 arg error' + + +def setKeys(keys): + pipeValue = '' + for index in range(len(keys)): + if index == 0: + pipeValue = pipeValue + 'k ' + keys[index] + ' ' + colorOn + '\\n' + elif index == 1: + pipeValue = pipeValue + 'k ' + keys[index] + ' ' + colorFade1 + '\\n' + elif index == 2: + pipeValue = pipeValue + 'k ' + keys[index] + ' ' + colorFade2 + '\\n' + elif index == 3: + pipeValue = pipeValue + 'k ' + keys[index] + ' ' + colorOff + '\\n' + pipeValue = pipeValue + 'c' + subprocess.call('echo -e "' + pipeValue + '" | g810-led -pp', shell=True) + time.sleep(speed) + + +subprocess.call('g810-led -gn fkeys ' + colorOff, shell=True) + +setKeys(['F1']) +setKeys(['F2']) +setKeys(['F3']) +setKeys(['F4']) +setKeys(['F5','F1']) +setKeys(['F6','F2','F1']) +setKeys(['F7','F3','F2','F1']) +setKeys(['F8','F4','F3','F2']) +setKeys(['F9','F5','F4','F3']) +setKeys(['F10','F6','F5','F4']) +setKeys(['F11','F7','F6','F5']) +setKeys(['F12','F8','F7','F6']) +setKeys(['F12','F9','F8','F7']) +setKeys(['F12','F10','F9','F8']) +setKeys(['F12','F11','F10','F9']) +setKeys(['F11','F10','F10','F10']) +setKeys(['F10']) +setKeys(['F9']) +setKeys(['F8','F12']) +setKeys(['F7','F11','F12']) +setKeys(['F6','F10','F11','F12']) +setKeys(['F5','F9','F10','F11']) +setKeys(['F4','F8','F9','F10']) +setKeys(['F3','F7','F8','F9']) +setKeys(['F2','F6','F7','F8']) +setKeys(['F1','F5','F6','F7']) +setKeys(['F1','F4','F5','F6']) +setKeys(['F1','F3','F4','F5']) +setKeys(['F1','F2','F3','F4']) +setKeys(['F1','F1','F2','F3']) +setKeys(['F1','F1','F1','F2']) +setKeys(['F1','F1','F1','F1']) From 9545bfc79fbfb7a902c4ec294197a3003df9dd0c Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 18 Mar 2017 22:10:45 +0100 Subject: [PATCH 116/187] Add gkeys --- sample_profiles/group_keys | 1 + 1 file changed, 1 insertion(+) diff --git a/sample_profiles/group_keys b/sample_profiles/group_keys index ebc0716..53c92df 100644 --- a/sample_profiles/group_keys +++ b/sample_profiles/group_keys @@ -9,5 +9,6 @@ g arrows ffff00 g numeric 00ffff g functions ffffff g keys 009696 +g gkeys ffffff c # Commit changes From 16b8b7d12c022a2e9d1819c4adbd1601e9cdda05 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 18 Mar 2017 22:17:43 +0100 Subject: [PATCH 117/187] Version 0.1.3 --- src/helpers/help.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index e263dc1..0e76c32 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -8,7 +8,7 @@ using namespace std; namespace help { - string version = "0.1.2"; + string version = "0.1.3"; void usage(char *arg0) { string cmdName = utils::getCmdName(arg0); From 16897f069af26a3b447519780f981b7cf2100ded Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sun, 19 Mar 2017 00:40:29 +0100 Subject: [PATCH 118/187] Update TODO.md --- TODO.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TODO.md b/TODO.md index 9b86440..61cb4d7 100644 --- a/TODO.md +++ b/TODO.md @@ -1,7 +1,7 @@ # g810-led TODO ## Tasks (Help wanted) : -* (0%) EASY: [Edit arch logitech gaming keyboard wiki](https://wiki.archlinux.org/index.php/Logitech_Gaming_Keyboards) +* (20%) EASY: [Edit arch logitech gaming keyboard wiki](https://wiki.archlinux.org/index.php/Logitech_Gaming_Keyboards) * (0%) AVERAGE: Add support of multiple keyboards * (0%) AVERAGE: Improve INSTALL.md to support more distributions (And CentOS with hidapi) * (5%) AVERAGE: Make distributions ready package From a61eaade55e754bffb96293939cb49411546d903 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sun, 19 Mar 2017 01:01:13 +0100 Subject: [PATCH 119/187] Update TODO.md --- TODO.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TODO.md b/TODO.md index 61cb4d7..38fd1db 100644 --- a/TODO.md +++ b/TODO.md @@ -1,7 +1,7 @@ # g810-led TODO ## Tasks (Help wanted) : -* (20%) EASY: [Edit arch logitech gaming keyboard wiki](https://wiki.archlinux.org/index.php/Logitech_Gaming_Keyboards) +* (40%) EASY: [Edit arch logitech gaming keyboard wiki](https://wiki.archlinux.org/index.php/Logitech_Gaming_Keyboards) * (0%) AVERAGE: Add support of multiple keyboards * (0%) AVERAGE: Improve INSTALL.md to support more distributions (And CentOS with hidapi) * (5%) AVERAGE: Make distributions ready package From 78108952befb8970038682438e9ae9c2afc6e116 Mon Sep 17 00:00:00 2001 From: wextia Date: Wed, 22 Mar 2017 15:07:45 +0100 Subject: [PATCH 120/187] Fixed markdown formatting on README.md --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index ba91790..7b6cfed 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Linux led controller for Logitech G410, G610, G810 and G910 Keyboards.
-##Compatible keyboards :
+## Compatible keyboards :
- **G410 Atlas Spectrum**
- **G610 Orion Brown**
- **G610 Orion Red**
@@ -10,13 +10,13 @@ Linux led controller for Logitech G410, G610, G810 and G910 Keyboards.
- **G910 Orion Spark**
- **G910 Orion Spectrum**
-##Contribute and evolution :
+## Contribute and evolution :
* [TODO.md](https://github.com/MatMoul/g810-led/blob/master/TODO.md) -##Install :
+## Install :
* [INSTALL.md](https://github.com/MatMoul/g810-led/blob/master/INSTALL.md) -##Help :
+## Help :
`g410-led --help`
`g610-led --help`
`g810-led --help`
@@ -26,7 +26,7 @@ Linux led controller for Logitech G410, G610, G810 and G910 Keyboards.
`g810-led --help-effects`
`g810-led --help-samples`
-##Samples :
+## Samples :
`g810-led -p /etc/g810/profile # Load a profile`
`g810-led -k logo ff0000 # Set color of a key`
`g810-led -a 00ff00 # Set color of all keys`
@@ -39,7 +39,7 @@ Linux led controller for Logitech G410, G610, G810 and G910 Keyboards.
`g810-led -fx vwave keys 0a # Set vertical wave effect`
`g810-led -fx cwave keys 0a # Set center wave effect`
-##Samples with no commit :
+## Samples with no commit :
`g810-led -an 000000 # Set color of all key with no action`
`g810-led -gn modifiers ff0000 # Set color of a group with no action`
`g810-led -kn w ff0000 # Set color of a key with no action`
@@ -48,11 +48,11 @@ Linux led controller for Logitech G410, G610, G810 and G910 Keyboards.
`g810-led -kn d ff0000 # Set color of a key with no action`
`g810-led -c # Commit all changes`
-##Samples for g610 :
+## Samples for g610 :
`g610-led -a 60 # Set intensity of all keys`
`g610-led -k logo ff # Set intensity of a key`
`g610-led -g fkeys aa # Set intensity of a group of keys`
-##Samples with pipe (for effects) :
+## Samples with pipe (for effects) :
`g810-led -pp < profilefile # Load a profile`
`echo -e "k w ff0000\nk a ff0000\nk s ff0000\nk d ff0000\nc" | g810-led -pp # Set multiple keys`
From 667d06042354267a24dbdfc4244e10afb259b26d Mon Sep 17 00:00:00 2001 From: Victor Alcazar Date: Fri, 24 Mar 2017 09:20:22 +0100 Subject: [PATCH 121/187] Update CONTRIBUTORS.md --- CONTRIBUTORS.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 4c1003a..2850a87 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -44,3 +44,6 @@ ## [noisycat](https://github.com/noisycat) : * Add wireshark dump effects * Improve makefile + +## [wextia](https://github.com/wextia) : +* Fixed incorrect markdown formatting in README.md From 970c857d5b97216a49d21505af5b6d49f102e089 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 24 Mar 2017 23:26:38 +0100 Subject: [PATCH 122/187] Update TODO --- TODO.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/TODO.md b/TODO.md index 38fd1db..8d69abf 100644 --- a/TODO.md +++ b/TODO.md @@ -1,7 +1,8 @@ # g810-led TODO ## Tasks (Help wanted) : -* (40%) EASY: [Edit arch logitech gaming keyboard wiki](https://wiki.archlinux.org/index.php/Logitech_Gaming_Keyboards) +* (40%) EASY: [Edit arch logitech gaming keyboard wiki](https://wiki.archlinux.org/index.php/Logitech_Gaming_Keyboards) +* (0%) EASY: Add more sample profiles * (0%) AVERAGE: Add support of multiple keyboards * (0%) AVERAGE: Improve INSTALL.md to support more distributions (And CentOS with hidapi) * (5%) AVERAGE: Make distributions ready package From a1d4c814711fc8697d1249472af9ddae2caab019 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 24 Mar 2017 23:53:38 +0100 Subject: [PATCH 123/187] Improve code layout --- src/classes/Keyboard.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index a615cc0..40505d1 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -310,7 +310,8 @@ bool LedKeyboard::setKeys(KeyValueArray keyValues) { break; case LedKeyboard::KeyboardModel::g410: if (SortedKeys[4].size() <= 120) - if (keyValues[i].key < LedKeyboard::Key::num_lock || keyValues[i].key > LedKeyboard::Key::num_dot) + if (keyValues[i].key < LedKeyboard::Key::num_lock || + keyValues[i].key > LedKeyboard::Key::num_dot) SortedKeys[4].push_back(keyValues[i]); break; default: From 95fb9c084e7eaba1e2adb11f2d0ad851ead07e57 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 25 Mar 2017 00:03:05 +0100 Subject: [PATCH 124/187] Update g410effects support --- CONTRIBUTORS.md | 2 +- src/classes/Keyboard.cpp | 2 +- src/helpers/help.cpp | 6 +++++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 2850a87..0c89cb7 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -26,7 +26,7 @@ * Refactor many of the code (very hard work) ## [Landrovan](https://github.com/Landrovan) : -* Improve support of G410 +* Improve support of G410 (two times) ## [larsnaesbye](https://github.com/larsnaesbye) : * Fix typo diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index 40505d1..03f3020 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -535,7 +535,7 @@ bool LedKeyboard::setNativeEffect(NativeEffect effect, NativeEffectPart part, ui uint8_t protocolByte = 0; switch (m_keyboardModel) { - case KeyboardModel::g410: // Unconfirmed + case KeyboardModel::g410: case KeyboardModel::g610: // Unconfirmed case KeyboardModel::g810: protocolByte = 0x0d; diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index 0e76c32..3c345ec 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -201,7 +201,11 @@ namespace help { cout<<" -fx vwave {target} {speed}"< Date: Sat, 25 Mar 2017 00:04:44 +0100 Subject: [PATCH 125/187] Version 0.1.4 --- src/helpers/help.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index 3c345ec..66587a4 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -8,7 +8,7 @@ using namespace std; namespace help { - string version = "0.1.3"; + string version = "0.1.4"; void usage(char *arg0) { string cmdName = utils::getCmdName(arg0); From b4ab4b893988f926ff3cd0dbed40594176acc521 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 25 Mar 2017 01:13:31 +0100 Subject: [PATCH 126/187] Version 0.1.5 --- src/helpers/help.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index 66587a4..dc1c1d9 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -8,7 +8,7 @@ using namespace std; namespace help { - string version = "0.1.4"; + string version = "0.1.5"; void usage(char *arg0) { string cmdName = utils::getCmdName(arg0); From d0c5b91815ece6f22d59d2058fe7218916dcff6a Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 25 Mar 2017 01:15:37 +0100 Subject: [PATCH 127/187] Version 0.1.6 --- src/helpers/help.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index dc1c1d9..3492552 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -8,7 +8,7 @@ using namespace std; namespace help { - string version = "0.1.5"; + string version = "0.1.6"; void usage(char *arg0) { string cmdName = utils::getCmdName(arg0); From c4c1e569d058f6001a4e78d8bba250bf14502ad6 Mon Sep 17 00:00:00 2001 From: Daniel Aleksandersen Date: Wed, 5 Apr 2017 00:25:38 +0200 Subject: [PATCH 128/187] Improve langauge in INSTALL.md --- INSTALL.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index 51642af..d83547f 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -9,8 +9,8 @@ * hidapi or libusb ## hidapi vs libusb :
-hidapi is the new implementation but need to be tested.
-hidapi is very more speed than libusb (~20ms vs ~150ms).
+hidapi is a newer implementation but needs more testing.
+hidapi is more responsive than libusb (~20ms vs ~150ms).
hidapi seem not work on CentOS, writing on hidraw is not allowed.
hidapi is recommended but if you encounter problem on your system, switch to libusb.
From d69ce2855f17781781db088bc43fba9661db689b Mon Sep 17 00:00:00 2001 From: Kevin Pearson Date: Thu, 6 Apr 2017 09:18:23 -0400 Subject: [PATCH 129/187] Fix spelling of SupportedKeyboards Signed-off-by: Kevin Pearson --- src/classes/Keyboard.cpp | 28 ++++++++++++++-------------- src/classes/Keyboard.h | 2 +- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index 03f3020..37a7fd8 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -28,9 +28,9 @@ bool LedKeyboard::listKeyboards() { devs = hid_enumerate(0x0, 0x0); dev = devs; while (dev) { - for (int i=0; i<(int)SuportedKeyboards.size(); i++) { - if (dev->vendor_id == SuportedKeyboards[i][0]) { - if (dev->product_id == SuportedKeyboards[i][1]) { + for (int i=0; i<(int)SupportedKeyboards.size(); i++) { + if (dev->vendor_id == SupportedKeyboards[i][0]) { + if (dev->product_id == SupportedKeyboards[i][1]) { cout<<"0x"<vendor_id \ <<" 0x"<product_id \ <<" "<serial_number \ @@ -59,9 +59,9 @@ bool LedKeyboard::listKeyboards() { libusb_device *device = devs[i]; libusb_device_descriptor desc; libusb_get_device_descriptor(device, &desc); - for (int i=0; i<(int)SuportedKeyboards.size(); i++) { - if (desc.idVendor == SuportedKeyboards[i][0]) { - if (desc.idProduct == SuportedKeyboards[i][1]) { + for (int i=0; i<(int)SupportedKeyboards.size(); i++) { + if (desc.idVendor == SupportedKeyboards[i][0]) { + if (desc.idProduct == SupportedKeyboards[i][1]) { cout<<"0x"<vendor_id == SuportedKeyboards[i][0]) { - if (dev->product_id == SuportedKeyboards[i][1]) { + for (int i=0; i<(int)SupportedKeyboards.size(); i++) { + if (dev->vendor_id == SupportedKeyboards[i][0]) { + if (dev->product_id == SupportedKeyboards[i][1]) { m_vendorID = dev->vendor_id; m_productID = dev->product_id; - m_keyboardModel = (KeyboardModel)SuportedKeyboards[i][2]; + m_keyboardModel = (KeyboardModel)SupportedKeyboards[i][2]; break; } } @@ -139,12 +139,12 @@ bool LedKeyboard::open() { libusb_device *device = devs[i]; libusb_device_descriptor desc; libusb_get_device_descriptor(device, &desc); - for (int i=0; i<(int)SuportedKeyboards.size(); i++) { - if (desc.idVendor == SuportedKeyboards[i][0]) { - if (desc.idProduct == SuportedKeyboards[i][1]) { + for (int i=0; i<(int)SupportedKeyboards.size(); i++) { + if (desc.idVendor == SupportedKeyboards[i][0]) { + if (desc.idProduct == SupportedKeyboards[i][1]) { m_vendorID = desc.idVendor; m_productID = desc.idProduct; - m_keyboardModel = (KeyboardModel)SuportedKeyboards[i][2]; + m_keyboardModel = (KeyboardModel)SupportedKeyboards[i][2]; break; } } diff --git a/src/classes/Keyboard.h b/src/classes/Keyboard.h index 946382f..fdf7bbf 100644 --- a/src/classes/Keyboard.h +++ b/src/classes/Keyboard.h @@ -16,7 +16,7 @@ class LedKeyboard { private: - const std::vector> SuportedKeyboards = { + const std::vector> SupportedKeyboards = { { 0x46d, 0xc330, (u_int16_t)KeyboardModel::g410 }, { 0x46d, 0xc333, (u_int16_t)KeyboardModel::g610 }, { 0x46d, 0xc338, (u_int16_t)KeyboardModel::g610 }, From e5193b5985c3079462cc1df586ea85e477799eba Mon Sep 17 00:00:00 2001 From: Kevin Pearson Date: Mon, 10 Apr 2017 14:12:13 -0400 Subject: [PATCH 130/187] Implement device IO as a shared library Provide make targets and build configuration to create a shared object for other systems/applications to use to control keyboard LEDs without the need for instantiating the g810-led process. Provide make targets for installing library and development files into environments, such as the current system or package builders. Currently preserves precious behavior of building g810-led binary as statically linked. Provides an alternative build target of "bin-linked" which will create a dynamically linked variant. Signed-off-by: Kevin Pearson --- .gitignore | 1 + CONTRIBUTORS.md | 3 +++ INSTALL.md | 8 ++++++++ README.md | 10 ++++++++++ makefile | 53 ++++++++++++++++++++++++++++++++++++++++++------- 5 files changed, 68 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index e31e806..698d71a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ g810-led.* bin/* +lib/* . diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 0c89cb7..e537304 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -45,5 +45,8 @@ * Add wireshark dump effects * Improve makefile +## [pearsonk](https://github.com/pearsonk) : +* Implement underlying device IO as a shared library + ## [wextia](https://github.com/wextia) : * Fixed incorrect markdown formatting in README.md diff --git a/INSTALL.md b/INSTALL.md index d83547f..85cc50b 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -38,6 +38,14 @@ Fedora :
`make` # for hidapi
`make LIB=libusb` # for libusb
`sudo make install`
+`make install-lib` to install the libg810-led library.
+`make install-dev` to install the libg810-led library and headers for development.
+ +## Building the library :
+The library is built by default when running the `make` (default target "all").
+ +To specifically build the library as a standalone component:
+`make lib`
## Update :
Same as install, but your profile and reboot files are preserved.
diff --git a/README.md b/README.md index 7b6cfed..4c1cbb1 100644 --- a/README.md +++ b/README.md @@ -56,3 +56,13 @@ Linux led controller for Logitech G410, G610, G810 and G910 Keyboards.
## Samples with pipe (for effects) :
`g810-led -pp < profilefile # Load a profile`
`echo -e "k w ff0000\nk a ff0000\nk s ff0000\nk d ff0000\nc" | g810-led -pp # Set multiple keys`
+ +## Building and linking against the libg810-led library :
+Include in implementing source files.
+```cpp +#include +``` +To link, simply provide `-lg810-led` to the build flags.
+ +To build the g810-led application as a dynamically-linked variant, run the target:
+`make bin-linked`
diff --git a/makefile b/makefile index 850dda5..a82f339 100644 --- a/makefile +++ b/makefile @@ -8,22 +8,46 @@ else CPPFLAGS=-Dhidapi LDFLAGS=-lhidapi-hidraw endif -PROGN=g810-led SYSTEMDDIR?=/usr/lib/systemd -.PHONY: all debug clean setup install uninstall +prefix?=$(DESTDIR)/usr +libdir?=$(prefix)/lib +includedir?=$(prefix)/include -all: bin/$(PROGN) +# Program & versioning information +PROGN=g810-led +MAJOR=0 +MINOR=1 +MICRO=6 -bin/$(PROGN): src/main.cpp src/helpers/*.cpp src/helpers/*.h src/classes/*.cpp src/classes/*.h +APPSRCS=src/main.cpp src/helpers/*.cpp src/helpers/*.h +LIBSRCS=src/classes/*.cpp src/classes/*.h + +.PHONY: all debug clean setup install uninstall lib install-lib install-dev + +all: lib/lib$(PROGN).so bin/$(PROGN) + +bin/$(PROGN): $(APPSRCS) $(LIBSRCS) @mkdir -p bin $(CC) $(CPPFLAGS) $(CFLAGS) $^ -o $@ $(LDFLAGS) debug: CFLAGS += -g -Wextra -pedantic debug: bin/$(PROGN) - + +lib/lib$(PROGN).so: $(LIBSRCS) + @mkdir -p lib + $(CC) $(CPPFLAGS) $(CFLAGS) -fPIC -shared -Wl,-soname,lib$(PROGN).so -o lib/lib$(PROGN).so.$(MAJOR).$(MINOR).$(MICRO) $^ $(LDFLAGS) + @ln -sf lib$(PROGN).so.$(MAJOR).$(MINOR).$(MICRO) lib/lib$(PROGN).so + +bin-linked: lib/lib$(PROGN).so + @mkdir -p bin + $(CC) $(CPPFLAGS) $(CFLAGS) $(APPSRCS) -o bin/$(PROGN) $(LDFLAGS) -L./lib -l$(PROGN) + +lib: lib/lib$(PROGN).so + clean: @rm -rf bin + @rm -rf lib setup: @install -m 755 -d \ @@ -40,7 +64,16 @@ setup: install -m 755 -d $(DESTDIR)$(SYSTEMDDIR)/system && \ cp systemd/$(PROGN).service $(DESTDIR)$(SYSTEMDDIR)/system && \ cp systemd/$(PROGN)-reboot.service $(DESTDIR)$(SYSTEMDDIR)/system - + +install-lib: lib + @install -m 755 -d $(libdir) + @install -m 644 lib/lib$(PROGN).so.$(MAJOR).$(MINOR).$(MICRO) $(libdir)/ + @ln -sf lib$(PROGN).so.$(MAJOR).$(MINOR).$(MICRO) $(libdir)/lib$(PROGN).so + +install-dev: install-lib + @mkdir -p $(includedir)/$(PROGN)/ + @install -m 644 src/classes/*.h $(includedir)/$(PROGN) + install: setup @test -s /etc/$(PROGN)/profile || \ cp /etc/$(PROGN)/samples/group_keys /etc/$(PROGN)/profile @@ -52,7 +85,13 @@ install: setup systemctl start $(PROGN) && \ systemctl enable $(PROGN) && \ systemctl enable $(PROGN)-reboot - + +uninstall-lib: + @rm -f $(libdir)/lib$(PROGN).so* + +uninstall-dev: + @rm -rf $(includedir)/$(PROGN) + uninstall: @test -s /usr/bin/systemd-run && \ systemctl disable $(PROGN) && \ From 12f50a5fdab3b3cddf10223ef259b7e45094da51 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 14 Apr 2017 02:10:13 +0200 Subject: [PATCH 131/187] Add kdev4 file --- .gitignore | 1 - g810-led.kdev4 | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 g810-led.kdev4 diff --git a/.gitignore b/.gitignore index 698d71a..c948f71 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ -g810-led.* bin/* lib/* . diff --git a/g810-led.kdev4 b/g810-led.kdev4 new file mode 100644 index 0000000..eed8394 --- /dev/null +++ b/g810-led.kdev4 @@ -0,0 +1,3 @@ +[Project] +Manager=KDevCustomMakeManager +Name=g810-led From 9465e7638f24672b0e963a5e9c8827da09d26209 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 14 Apr 2017 02:40:33 +0200 Subject: [PATCH 132/187] Update makerelease --- makerelease | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/makerelease b/makerelease index c5a3b6d..631ca16 100755 --- a/makerelease +++ b/makerelease @@ -34,12 +34,22 @@ esac version=$1 sed -i "/string version = /c\\\tstring version = \"$version\";" src/helpers/help.cpp +IFS='.' read -ra VPART <<< "$version" +sed -i "/MAJOR=/cMAJOR=\"${VPART[0]}\"" makefile +sed -i "/MINOR=/cMINOR=\"${VPART[1]}\"" makefile +sed -i "/MICRO=/cMICRO=\"${VPART[2]}\"" makefile + git commit -m "Version $version" src/* git push +git checkout master +git merge develop + git tag -a "v$version" -m "Version $version" git push --tags +git checkout $branch + #wget https://github.com/MatMoul/g810-led/archive/v$version.zip #wget https://github.com/MatMoul/g810-led/archive/v$version.tar.gz From 468b133cf058f11fa38cec9739de789fc5c70d84 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 14 Apr 2017 02:42:55 +0200 Subject: [PATCH 133/187] Version 0.1.7 --- src/helpers/help.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index 3492552..2b5c155 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -8,7 +8,7 @@ using namespace std; namespace help { - string version = "0.1.6"; + string version = "0.1.7"; void usage(char *arg0) { string cmdName = utils::getCmdName(arg0); From c986c7e2a99024cd5d0109109630b8b6f90679ec Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 14 Apr 2017 02:45:14 +0200 Subject: [PATCH 134/187] Update make file --- makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/makefile b/makefile index a82f339..cdb117e 100644 --- a/makefile +++ b/makefile @@ -16,9 +16,9 @@ includedir?=$(prefix)/include # Program & versioning information PROGN=g810-led -MAJOR=0 -MINOR=1 -MICRO=6 +MAJOR="0" +MINOR="1" +MICRO="7" APPSRCS=src/main.cpp src/helpers/*.cpp src/helpers/*.h LIBSRCS=src/classes/*.cpp src/classes/*.h From cb24ce890909ac525097e2a14c0f371e8c876c28 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 14 Apr 2017 03:05:50 +0200 Subject: [PATCH 135/187] Update udev and remove systemd start service --- makefile | 4 +--- makerelease | 2 +- udev/g810-led.rules | 14 +++++++------- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/makefile b/makefile index cdb117e..f170d74 100644 --- a/makefile +++ b/makefile @@ -62,7 +62,6 @@ setup: @cp udev/$(PROGN).rules $(DESTDIR)/etc/udev/rules.d @test -s /usr/bin/systemd-run && \ install -m 755 -d $(DESTDIR)$(SYSTEMDDIR)/system && \ - cp systemd/$(PROGN).service $(DESTDIR)$(SYSTEMDDIR)/system && \ cp systemd/$(PROGN)-reboot.service $(DESTDIR)$(SYSTEMDDIR)/system install-lib: lib @@ -80,10 +79,9 @@ install: setup @test -s /etc/$(PROGN)/reboot || \ cp /etc/$(PROGN)/samples/all_off /etc/$(PROGN)/reboot @udevadm control --reload-rules + @$(PROGN) -p /etc/$(PROGN)/profile @test -s /usr/bin/systemd-run && \ systemctl daemon-reload && \ - systemctl start $(PROGN) && \ - systemctl enable $(PROGN) && \ systemctl enable $(PROGN)-reboot uninstall-lib: diff --git a/makerelease b/makerelease index 631ca16..9053726 100755 --- a/makerelease +++ b/makerelease @@ -39,7 +39,7 @@ sed -i "/MAJOR=/cMAJOR=\"${VPART[0]}\"" makefile sed -i "/MINOR=/cMINOR=\"${VPART[1]}\"" makefile sed -i "/MICRO=/cMICRO=\"${VPART[2]}\"" makefile -git commit -m "Version $version" src/* +git commit -m "Version $version" makefile src/* git push git checkout master diff --git a/udev/g810-led.rules b/udev/g810-led.rules index 8cb72ec..68ead9d 100644 --- a/udev/g810-led.rules +++ b/udev/g810-led.rules @@ -1,7 +1,7 @@ -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c331", MODE="666" -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c337", MODE="666" -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c330", MODE="666" -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c333", MODE="666" -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c338", MODE="666" -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c32b", MODE="666" -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c335", MODE="666" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c330", MODE="666" RUN+="/usr/bin/g410-led -p /etc/g810-led/profile" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c333", MODE="666" RUN+="/usr/bin/g610-led -p /etc/g810-led/profile" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c338", MODE="666" RUN+="/usr/bin/g610-led -p /etc/g810-led/profile" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c331", MODE="666" RUN+="/usr/bin/g810-led -p /etc/g810-led/profile" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c337", MODE="666" RUN+="/usr/bin/g810-led -p /etc/g810-led/profile" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c32b", MODE="666" RUN+="/usr/bin/g910-led -p /etc/g810-led/profile" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c335", MODE="666" RUN+="/usr/bin/g910-led -p /etc/g810-led/profile" From 0e952273c0d1632c5f370492c5503b90cb74ea06 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 14 Apr 2017 03:06:24 +0200 Subject: [PATCH 136/187] Version 0.1.8 --- makefile | 2 +- src/helpers/help.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/makefile b/makefile index f170d74..3115883 100644 --- a/makefile +++ b/makefile @@ -18,7 +18,7 @@ includedir?=$(prefix)/include PROGN=g810-led MAJOR="0" MINOR="1" -MICRO="7" +MICRO="8" APPSRCS=src/main.cpp src/helpers/*.cpp src/helpers/*.h LIBSRCS=src/classes/*.cpp src/classes/*.h diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index 2b5c155..711c67e 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -8,7 +8,7 @@ using namespace std; namespace help { - string version = "0.1.7"; + string version = "0.1.8"; void usage(char *arg0) { string cmdName = utils::getCmdName(arg0); From 9d23cb4e233687c2d2d3280f6d7bed741d06459d Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 14 Apr 2017 03:08:04 +0200 Subject: [PATCH 137/187] Update makerelease --- makerelease | 1 + 1 file changed, 1 insertion(+) diff --git a/makerelease b/makerelease index 9053726..7b63a5b 100755 --- a/makerelease +++ b/makerelease @@ -44,6 +44,7 @@ git push git checkout master git merge develop +git push git tag -a "v$version" -m "Version $version" git push --tags From 1f0458ea4f3ff91b19bae76a856681614fef1d4e Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 14 Apr 2017 03:08:51 +0200 Subject: [PATCH 138/187] Version 0.1.9 --- makefile | 2 +- src/helpers/help.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/makefile b/makefile index 3115883..3b420a6 100644 --- a/makefile +++ b/makefile @@ -18,7 +18,7 @@ includedir?=$(prefix)/include PROGN=g810-led MAJOR="0" MINOR="1" -MICRO="8" +MICRO="9" APPSRCS=src/main.cpp src/helpers/*.cpp src/helpers/*.h LIBSRCS=src/classes/*.cpp src/classes/*.h diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index 711c67e..cbcd74e 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -8,7 +8,7 @@ using namespace std; namespace help { - string version = "0.1.8"; + string version = "0.1.9"; void usage(char *arg0) { string cmdName = utils::getCmdName(arg0); From 793aa0d557a400757cd307fafe720444ca5e1a30 Mon Sep 17 00:00:00 2001 From: Kevin Pearson Date: Mon, 17 Apr 2017 12:37:57 -0400 Subject: [PATCH 139/187] Initial work to add G213 support Currently supported: - G213 by region {1..5} - Standard FX calls - Startup behavior - Help and command-line app support resolves MatMoul/g810-led#69 Signed-off-by: Kevin Pearson --- makefile | 2 + src/classes/Keyboard.cpp | 61 ++++++++++++++---- src/classes/Keyboard.h | 3 + src/helpers/help.cpp | 8 +++ src/main.cpp | 10 +++ .../g213-prodigy/DisableStartupEffect.pcapng | Bin 0 -> 520 bytes .../g213-prodigy/EnableStartupEffect.pcapng | Bin 0 -> 520 bytes .../g213-prodigy/Region1_E2-3F-5C.pcapng | Bin 0 -> 3112 bytes .../g213-prodigy/Region2_E2-3F-5C.pcapng | Bin 0 -> 3112 bytes .../g213-prodigy/Region3_E2-3F-5C.pcapng | Bin 0 -> 7432 bytes .../g213-prodigy/Region4_E2-3F-5C.pcapng | Bin 0 -> 7432 bytes .../g213-prodigy/Region5_E2-3F-5C.pcapng | Bin 0 -> 3112 bytes .../SetFX_FixedColor_E2-3F-5C.pcapng | Bin 0 -> 808 bytes 13 files changed, 73 insertions(+), 11 deletions(-) create mode 100644 wireshark_dumps/g213-prodigy/DisableStartupEffect.pcapng create mode 100644 wireshark_dumps/g213-prodigy/EnableStartupEffect.pcapng create mode 100644 wireshark_dumps/g213-prodigy/Region1_E2-3F-5C.pcapng create mode 100644 wireshark_dumps/g213-prodigy/Region2_E2-3F-5C.pcapng create mode 100644 wireshark_dumps/g213-prodigy/Region3_E2-3F-5C.pcapng create mode 100644 wireshark_dumps/g213-prodigy/Region4_E2-3F-5C.pcapng create mode 100644 wireshark_dumps/g213-prodigy/Region5_E2-3F-5C.pcapng create mode 100644 wireshark_dumps/g213-prodigy/SetFX_FixedColor_E2-3F-5C.pcapng diff --git a/makefile b/makefile index 3b420a6..bef2777 100644 --- a/makefile +++ b/makefile @@ -55,6 +55,7 @@ setup: $(DESTDIR)/etc/$(PROGN)/samples \ $(DESTDIR)/etc/udev/rules.d @cp bin/$(PROGN) $(DESTDIR)/usr/bin + @test -s $(DESTDIR)/usr/bin/g213-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g213-led @test -s $(DESTDIR)/usr/bin/g410-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g410-led @test -s $(DESTDIR)/usr/bin/g610-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g610-led @test -s $(DESTDIR)/usr/bin/g910-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g910-led @@ -99,6 +100,7 @@ uninstall: systemctl daemon-reload && \ rm -R /etc/$(PROGN) + @rm /usr/bin/g213-led @rm /usr/bin/g410-led @rm /usr/bin/g610-led @rm /usr/bin/g910-led diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index 37a7fd8..7d02fff 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -231,6 +231,8 @@ LedKeyboard::KeyboardModel LedKeyboard::getKeyboardModel() { bool LedKeyboard::commit() { byte_buffer_t data; switch (m_keyboardModel) { + case KeyboardModel::g213: + break; // Keyboard is non-transactional case KeyboardModel::g410: case KeyboardModel::g610: case KeyboardModel::g810: @@ -430,17 +432,32 @@ bool LedKeyboard::setGroupKeys(KeyGroup keyGroup, LedKeyboard::Color color) { bool LedKeyboard::setAllKeys(LedKeyboard::Color color) { KeyValueArray keyValues; - for (uint8_t i = 0; i < keyGroupLogo.size(); i++) keyValues.push_back({keyGroupLogo[i], color}); - for (uint8_t i = 0; i < keyGroupIndicators.size(); i++) keyValues.push_back({keyGroupIndicators[i], color}); - for (uint8_t i = 0; i < keyGroupMultimedia.size(); i++) keyValues.push_back({keyGroupMultimedia[i], color}); - for (uint8_t i = 0; i < keyGroupGKeys.size(); i++) keyValues.push_back({keyGroupGKeys[i], color}); - for (uint8_t i = 0; i < keyGroupFKeys.size(); i++) keyValues.push_back({keyGroupFKeys[i], color}); - for (uint8_t i = 0; i < keyGroupFunctions.size(); i++) keyValues.push_back({keyGroupFunctions[i], color}); - for (uint8_t i = 0; i < keyGroupArrows.size(); i++) keyValues.push_back({keyGroupArrows[i], color}); - for (uint8_t i = 0; i < keyGroupNumeric.size(); i++) keyValues.push_back({keyGroupNumeric[i], color}); - for (uint8_t i = 0; i < keyGroupModifiers.size(); i++) keyValues.push_back({keyGroupModifiers[i], color}); - for (uint8_t i = 0; i < keyGroupKeys.size(); i++) keyValues.push_back({keyGroupKeys[i], color}); - return setKeys(keyValues); + + switch (m_keyboardModel) { + case KeyboardModel::g213: + for (uint8_t rIndex=0x01; rIndex <= 0x05; rIndex++) { + if (! setRegion(rIndex,color)) return false; + } + return true; + case KeyboardModel::g410: + case KeyboardModel::g610: + case KeyboardModel::g810: + case KeyboardModel::g910: + for (uint8_t i = 0; i < keyGroupLogo.size(); i++) keyValues.push_back({keyGroupLogo[i], color}); + for (uint8_t i = 0; i < keyGroupIndicators.size(); i++) keyValues.push_back({keyGroupIndicators[i], color}); + for (uint8_t i = 0; i < keyGroupMultimedia.size(); i++) keyValues.push_back({keyGroupMultimedia[i], color}); + for (uint8_t i = 0; i < keyGroupGKeys.size(); i++) keyValues.push_back({keyGroupGKeys[i], color}); + for (uint8_t i = 0; i < keyGroupFKeys.size(); i++) keyValues.push_back({keyGroupFKeys[i], color}); + for (uint8_t i = 0; i < keyGroupFunctions.size(); i++) keyValues.push_back({keyGroupFunctions[i], color}); + for (uint8_t i = 0; i < keyGroupArrows.size(); i++) keyValues.push_back({keyGroupArrows[i], color}); + for (uint8_t i = 0; i < keyGroupNumeric.size(); i++) keyValues.push_back({keyGroupNumeric[i], color}); + for (uint8_t i = 0; i < keyGroupModifiers.size(); i++) keyValues.push_back({keyGroupModifiers[i], color}); + for (uint8_t i = 0; i < keyGroupKeys.size(); i++) keyValues.push_back({keyGroupKeys[i], color}); + return setKeys(keyValues); + default: + return false; + } + return false; } @@ -510,10 +527,25 @@ bool LedKeyboard::setGKeysMode(uint8_t value) { return false; } +bool LedKeyboard::setRegion(uint8_t region, LedKeyboard::Color color) { + LedKeyboard::byte_buffer_t data; + switch (m_keyboardModel) { + case KeyboardModel::g213: + data = {0x11, 0xff, 0x0c, 0x3a, region, 0x01, color.red, color.green, color.blue }; + data.resize(20,0x00); + return sendDataInternal(data); + break; + default: + break; + } + + return false; +} bool LedKeyboard::setStartupMode(StartupMode startupMode) { byte_buffer_t data; switch (m_keyboardModel) { + case KeyboardModel::g213: case KeyboardModel::g410: case KeyboardModel::g610: case KeyboardModel::g810: @@ -535,6 +567,11 @@ bool LedKeyboard::setNativeEffect(NativeEffect effect, NativeEffectPart part, ui uint8_t protocolByte = 0; switch (m_keyboardModel) { + case KeyboardModel::g213: + protocolByte = 0x0c; + + if (part == NativeEffectPart::logo) return false; //Does not have logo component + break; case KeyboardModel::g410: case KeyboardModel::g610: // Unconfirmed case KeyboardModel::g810: @@ -653,6 +690,8 @@ bool LedKeyboard::sendDataInternal(byte_buffer_t &data) { LedKeyboard::byte_buffer_t LedKeyboard::getKeyGroupAddress(LedKeyboard::KeyAddressGroup keyAddressGroup) { switch (m_keyboardModel) { + case KeyboardModel::g213: + return {}; // Device doesn't support per-key setting case KeyboardModel::g410: case KeyboardModel::g610: case KeyboardModel::g810: diff --git a/src/classes/Keyboard.h b/src/classes/Keyboard.h index fdf7bbf..d99adda 100644 --- a/src/classes/Keyboard.h +++ b/src/classes/Keyboard.h @@ -17,6 +17,7 @@ class LedKeyboard { private: const std::vector> SupportedKeyboards = { + { 0x46d, 0xc336, (u_int16_t)KeyboardModel::g213 }, { 0x46d, 0xc330, (u_int16_t)KeyboardModel::g410 }, { 0x46d, 0xc333, (u_int16_t)KeyboardModel::g610 }, { 0x46d, 0xc338, (u_int16_t)KeyboardModel::g610 }, @@ -40,6 +41,7 @@ class LedKeyboard { enum class KeyboardModel : uint8_t { unknown = 0x00, + g213, g410, g610, g810, @@ -144,6 +146,7 @@ class LedKeyboard { bool setMNKey(uint8_t value); bool setGKeysMode(uint8_t value); + bool setRegion(uint8_t region, Color color); bool setStartupMode(StartupMode startupMode); bool setNativeEffect(NativeEffect effect, NativeEffectPart part, uint8_t speed, Color color); diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index cbcd74e..dffbd2f 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -19,6 +19,10 @@ namespace help { cout<<" -a {color}\t\t\t\tSet all keys color"< 2 && arg == "-an") return setAllKeys(kbd, argv[2], false); else if (argc > 3 && arg == "-gn") return setGroupKeys(kbd, argv[2], argv[3], false); else if (argc > 3 && arg == "-kn") return setKey(kbd, argv[2], argv[3], false); + else if (argc > 3 && arg == "-r") return setRegion(kbd, argv[2], argv[3]); else if (argc > 2 && arg == "-gkm") return setGKeysMode(kbd, argv[2]); diff --git a/wireshark_dumps/g213-prodigy/DisableStartupEffect.pcapng b/wireshark_dumps/g213-prodigy/DisableStartupEffect.pcapng new file mode 100644 index 0000000000000000000000000000000000000000..6631133cc0fa721491079e0db0dc19ae1f34c216 GIT binary patch literal 520 zcmd<$<>jhiU|{gI(UxKa(*L1=nL&=h%tSXSvqT|0GcP5-yja1|Kt~~|G&3hf!O+Cm z(wKpPg+Z6Wr8Ku7Ik7-NBRsPxwKyZOC|gs(NY6;mOhKazOzRrxrW+fjBqp0BY68s% z0g!zly9$8#ClLSt&%nUMpurFmqZd<jhiU|{gI(UxKa(*L1=nL&=h%tSXSvqT|0GcP5-yja1|Kt~~|G&3hf!O+Cm z(wKpPg+Z6Wr8Ku7Ik7-NBRsPxwKyZOC|gs(NY6;mOhKazOzRrxrW+fjBqp0BY68s% z0g!zly9$8#ClLSt&%nUMpurFmqZd<|mSJcJdGNpaI>;Ri4ALOS@d91M z0pclg3NkS=h=BEi%m@Gp0s+Vj?iCxZ8vxlLjA{l410%!?5ug;K;D4T2kN`3OnFBJ< z1}X?L&j@Iq43H1O$Zmq02U5)h(u3}nC*B*c>jT9>SehZ>Rhm!>)IY$`0=cD$5#$zZ IP67J~03n%XeEHV%7>Cbk(vPT>8puRaWF!!YXi_^4sfa3-p#vEjv2}?^(+CwqgVR z0VY-$Kq_JY2L1qq)B%vXKqX)(od5wdWijuY#L0W{Ss0s>PWHLJ$FHCM&X@4mSa_2$ zHa~Obm;^_&(+1damdmD=^fh@wH>&lGRasRg<)wA~T2)rF+BuD}AWN~i_3Mr0N<&U8 z=*`;d71On(K@D-)QXm=R+e*>B=E7}^YB>>=!eivld%9xuu>^qYUqtx zX~SZbYny98FJ}~WTFI)@s;cJBY9lav5ax}#s1a^!JqPcf!vVBQ^C33*+9;lcbL?@p zTX->kXAkROEQZAep`u|NofwG(Bo=MWMaD(E2n`uiZ;YY>=h%71Fq7JhDEvu^n4@7h zat%4io9SFdo&vl$jN6^o)aBvb0i4rci}B7VPQi8TF}C<&(Y)PxAFzeB+>)>sEM>4I z9|l&lYN3Ag_ne>Yryl$q-Q)ZaM)!RzKY2+ym@NgYirSw0{Y(Il_!03CAoO$UGxejq zEJUsUcfX%}uZYf>$WP>e^Rso=gP$kB!0cd${1ArCkE{G3kN6Ss@Qs9iK7FTt{O9N6 z56+LL_4Vv0=Z7$Ce)6zL-Fl>HY z<>w0Uh#wKp(T@?V|JU!&P^eD7&)W|@_}K>rSzm-<^OGNNk)LnCBYs3YM?cy)_2WN3 zuYl)w|GFRH{D{_r^?i1gp9jDrendP+Kl?H2$N%@|W}Ndw_6qm=`-KV44`JBz6LgWE z0`Q0*5zo=jz0=f>|NN*4>gRm(ad$s-?1+^#$DzqM~JqVU62p%dPdZ{N5y1tiW=;PLv%GITL-84?&bCzt~x(co|_%iGwDn^uP3k7k0~Q{F`KEBr}O1ORd@hDzAieu^n zuzB#szMCJZ4uF0tE`$|DXm%vprz)V;?X1wV|@`aZ6of}(sqT~ghO8lKzzq>;z`$an;h`U$`0 zevDUVHTU;!_fz;=L~|tbvxYpDpF1mEszIUt8YM!mmczz!L7W}X*`}cF(5&SSlho3^oM}COM{K$Bo ze(Y$1{l5p#55y8YKi@xeu|MBO2EF@G$M+w`=&Oeb hzLpONeq`&Rwf}^D(I>)6W;3`}zO;`~hHG#1;Sm literal 0 HcmV?d00001 diff --git a/wireshark_dumps/g213-prodigy/Region3_E2-3F-5C.pcapng b/wireshark_dumps/g213-prodigy/Region3_E2-3F-5C.pcapng new file mode 100644 index 0000000000000000000000000000000000000000..52b69f8224708aba7d4d41b34f00a34809a8047f GIT binary patch literal 7432 zcmeI1U2GIp6vxlZbo;Tkvel}ktuQEoMc8$Bww89O?$#D?4JavYFuK}qKfv{)-B6Hf zVgr<@U}Dq+UQA4^_++AuK7b@OYJ8Ad5<_T+9}h}Q#4H-44?-la=giI>?wy@Yhg~(O zy~*vlb7$`Vp8d@^bMH*uH8t*00NB{RvOz+dHHrd@przT@m)fCjNevAQ?;25qfmLeX z&eY=rYOp!f76K>(A9U?}BHf=%tKKcC?SmtaB)31dLe>15zeV*vsas#bw=JX%B>P*E zD^Q;b%|~;kv0lKM%>u~ag+#)iNT8Gkn3#&hmtvc06MSA3^XxlKegHI*b7kmJB^@oPs+A?E)5ns= zChEjO8si^C;sI<^6*VeB%4yW$DXBJF?M5pU(jmQeqnGp!prMTd|*NBlLdRn;kcP57HuE_DbXnxl*pf#{*WFFFc>ujthL+9xQ^-$h5$R(=dMz z;}e#oGm(VMJj!vl@_7#RI6iiIBw))YeTwH3_&8R_?zfds_>vPw%Z`tGR^W5|!y@>6 zff^J$R55-yjXXY%;^!jjaeVCb=oi`YS@I3fr}X$~|5o7h!)y_Ju0A91;WYC2gk=Zu zvlR6>K6ZKq`JB%1d`gd>qvr%Z+`V%C{F(Ss;KOO;@o^MC@1q{a$4;*xpO=2)`IH_% zW9J1v`@bt9eimO4_;4C|e8P%@_~}GFj*p#QK|V1h$~~V;j~}fp%CBFkJw@=Tc18K; z52umG$5H&;jCvd&JH3K@U;)pk^!RxT^|>Q{uOOf08qcS=_(_mD7TT*GoK3`Or$n_8CXY>+&z~yV zKf6Iz7UQY-<~uv-BzW)u+_wO%dHFK{eQQlUK$`kKPro3iok8tJJl3ndHtDU4ZCD!s z1>UL0w+Ac=npT|qEWKOc2A&lcHrlZ&MhDH*YqZJSg|!~*{zb1YeDTOhY5euWf@S?G zUSlogT*|X^0c_AKPOd2M05Lg?nHOg5by3 zkxu9^&eOcl8*SX>>90M1#k@C2-7pB-AO*uPgtPXb7aG3$g zZ)y_r-$OacSo2@I%=|BQ zUNQf*IrBe?{(23c0bF{T)AMy-a`Mzx_50fQD$h?J-PHHdZtN@mIUz%b^oE1ygz3n9 z<3B|}HuL|hRk>`Z{BFg1zs>r82liJOzrRraw_I~}DDvx!^iyVX;fBnN^mN}ZH@;GF zLb^D8UEk<4CnePw&zq}qiyYsjf6hspJ!R01ZCZzEeWq2>IuD!g+}%Gn(0puNeAigw zRDB$7nv^csiYsrczTVPGOY82CWxdT`7o)~_t1i(7TNGkMQVr=T6IBhtT{2%wg00X$ZO2Q3rKXEg`hb`D8B}uyA<=mk=Z-^9>!V{>JH5 z8KHzY(Gu|hE-r3k#t+21wQB*>6L%)^b5N^T>##5WG=azTrDo+eI{giMa?L#A_`Dpy zeXG{uE5~Q$JK8?CRFM8a09=PyC=|Rs^+gmj(ftPUXur~-JJjhs+p!7Q1Z)B}0h@qL zz$Rc5_#X*S&46kLdy5m!P3Eo^*obppj0( z*%U6uYiflsG5S=iZxm2{1Ap9z4tjR8(=7^+r;H_yCc2468t+|AVfs-|O|RhqjDCwf!@wsXTF9SU zsJF<+R4*l;&y}1{`uWpZrQ80dzV;AR>e*SEz z=X`iBTVG!Z)Udd|0vQ(aM+|a4JSL5INx=D$*7;m*Yf_jY4Z|y&!RvjOvVc-*3VMimy)l12z?F{F$^8EP)_5`mj literal 0 HcmV?d00001 diff --git a/wireshark_dumps/g213-prodigy/Region5_E2-3F-5C.pcapng b/wireshark_dumps/g213-prodigy/Region5_E2-3F-5C.pcapng new file mode 100644 index 0000000000000000000000000000000000000000..d736fee8016b277dcf95155791255de2d099951d GIT binary patch literal 3112 zcmbu9&ui0Q7{}jq?O4l(oAjWrN<_g9*EUH@=fXhHdGIjsAgqV7ty{|${1w~H?VuMG ze;^`7J?q_xHx)dHo99_jrV~UF!9QRgoFMgi+Gc&;CV|)Hg@@!#^M3N=)9;&5Pfuux zF*Y`Gc#j0fYGZV;eJq`dO&jy_xN$yzVX-8u%Ah>GV4Tg%YAQLLWX#WEY;@tAIg>Nx z=(tfVl;(29GXt^~*Wzh8dZ~7dDY4n4me0+ka|6J~fzQKdnNV9$)hc5?7G>FNJZlmRWX#`>{2KXlZEv;Dz7pTxqowa7Sy7hxcyG*`|jaE`?@x|mdFgyAQtui71g zBR7zPyphIL5*Il?yPvk0m`~l~OWLezLp@*Cw z!m#-f%1;`2#E%ot)sOLr`thEh1CObnZ@VVi*kA8~(cE8@Ve_MR2;}D%@S1)cd9Hr; zKB0cR=V!+<^;02P7SGQQU^M+uhRu&qe*OTj>Bo`h>Sz5q_2WH1>n}Jz1E1RX{w%-b z{1ArCkM0-9&nobUA19uxpSvs6kN5l(RyjW#Z`#;jgKs%Mgkkd|l%He3BYvECu6|Ce sQ9s`E6M0Ad(7i6czczu<++UPo^P>j@@)N31KaMmN5dZ)H literal 0 HcmV?d00001 diff --git a/wireshark_dumps/g213-prodigy/SetFX_FixedColor_E2-3F-5C.pcapng b/wireshark_dumps/g213-prodigy/SetFX_FixedColor_E2-3F-5C.pcapng new file mode 100644 index 0000000000000000000000000000000000000000..f239f7b81e64a0b1a332c36a674fa30af0f3fa8e GIT binary patch literal 808 zcma)&%}&BV5XWbW5+Gn8;b4TAHSqw^Vp~dygv1LsLNs2uG{N$rHua<7!*cfQ3+TmH z@DY3h<1_dIo;}r>LQ5eWm}W9N+nwM3_n%0m5>o(Z)sOZVR(Bo|*auA&yXKg;&4>P@ zGvcyz%)1lwuFqw)d|C$B0udUMd%I`YywEm>gVC)qw2E9QDJ6{;p1dkb;!RoU8$Hb^ zBAI|l1q<0iau1cz`$yG(ERO2`u#ku4L8u6HS z51nsNgK^&4hIeK)4{=SIhwu3H>&qAE0LTGE@B<-6-9bDfFvxnd#JHeM3}RdgR#U;67yz(jQLn9(0Se zJTuZlQlg&u*!baV3H#%u!v3T`&49PLKe3&#KVe4j9^aoDu%9zs@DjKUbCDJ*)oI79!>=^5-8m<$})u literal 0 HcmV?d00001 From 9ae812b88e7d9f2b36efa0fca7e904a31ea73f73 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 21 Apr 2017 23:00:21 +0200 Subject: [PATCH 140/187] Finalization of g213 support --- CONTRIBUTORS.md | 2 ++ src/classes/Keyboard.cpp | 7 ++----- src/helpers/help.cpp | 6 ++---- src/main.cpp | 5 +++-- udev/g810-led.rules | 1 + 5 files changed, 10 insertions(+), 11 deletions(-) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index e537304..7a50138 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -46,6 +46,8 @@ * Improve makefile ## [pearsonk](https://github.com/pearsonk) : +* Add g213 protocol (very hard work) +* Add support of g213 * Implement underlying device IO as a shared library ## [wextia](https://github.com/wextia) : diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index 7d02fff..7dae4fd 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -435,9 +435,7 @@ bool LedKeyboard::setAllKeys(LedKeyboard::Color color) { switch (m_keyboardModel) { case KeyboardModel::g213: - for (uint8_t rIndex=0x01; rIndex <= 0x05; rIndex++) { - if (! setRegion(rIndex,color)) return false; - } + for (uint8_t rIndex=0x01; rIndex <= 0x05; rIndex++) if (! setRegion(rIndex, color)) return false; return true; case KeyboardModel::g410: case KeyboardModel::g610: @@ -531,7 +529,7 @@ bool LedKeyboard::setRegion(uint8_t region, LedKeyboard::Color color) { LedKeyboard::byte_buffer_t data; switch (m_keyboardModel) { case KeyboardModel::g213: - data = {0x11, 0xff, 0x0c, 0x3a, region, 0x01, color.red, color.green, color.blue }; + data = { 0x11, 0xff, 0x0c, 0x3a, region, 0x01, color.red, color.green, color.blue }; data.resize(20,0x00); return sendDataInternal(data); break; @@ -569,7 +567,6 @@ bool LedKeyboard::setNativeEffect(NativeEffect effect, NativeEffectPart part, ui switch (m_keyboardModel) { case KeyboardModel::g213: protocolByte = 0x0c; - if (part == NativeEffectPart::logo) return false; //Does not have logo component break; case KeyboardModel::g410: diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index dffbd2f..ac3ca0d 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -19,8 +19,7 @@ namespace help { cout<<" -a {color}\t\t\t\tSet all keys color"< 2) { + if (setRegion(kbd, args[1], args[2]) == 1) retval = 1; } else if (args[0] == "mr" && args.size() > 1) { if (setMRKey(kbd, args[1]) == 1) retval = 1; } else if (args[0] == "mn" && args.size() > 1) { diff --git a/udev/g810-led.rules b/udev/g810-led.rules index 68ead9d..a4edd40 100644 --- a/udev/g810-led.rules +++ b/udev/g810-led.rules @@ -1,3 +1,4 @@ +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c336", MODE="666" RUN+="/usr/bin/g213-led -p /etc/g810-led/profile" ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c330", MODE="666" RUN+="/usr/bin/g410-led -p /etc/g810-led/profile" ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c333", MODE="666" RUN+="/usr/bin/g610-led -p /etc/g810-led/profile" ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c338", MODE="666" RUN+="/usr/bin/g610-led -p /etc/g810-led/profile" From 539f2e9fba9f125fe6062d2c4945df055bb794c9 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 21 Apr 2017 23:04:50 +0200 Subject: [PATCH 141/187] Finalization of g213 support --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 4c1cbb1..84315e0 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,7 @@ Linux led controller for Logitech G410, G610, G810 and G910 Keyboards.
## Compatible keyboards :
+- **G213 Prodigy**
- **G410 Atlas Spectrum**
- **G610 Orion Brown**
- **G610 Orion Red**
From 26e283bbe7971af67ae7298d1ef58ce732e1a3b1 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 21 Apr 2017 23:06:36 +0200 Subject: [PATCH 142/187] Finalization of g213 support --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 84315e0..2a62784 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # g810-led
-Linux led controller for Logitech G410, G610, G810 and G910 Keyboards.
+Linux led controller for Logitech G213, G410, G610, G810 and G910 Keyboards.
## Compatible keyboards :
- **G213 Prodigy**
From bc8fa498f37b220a1be0df5a69870c854f94afef Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 21 Apr 2017 23:07:09 +0200 Subject: [PATCH 143/187] remove kdev4 files --- g810-led.kdev4 | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 g810-led.kdev4 diff --git a/g810-led.kdev4 b/g810-led.kdev4 deleted file mode 100644 index eed8394..0000000 --- a/g810-led.kdev4 +++ /dev/null @@ -1,3 +0,0 @@ -[Project] -Manager=KDevCustomMakeManager -Name=g810-led From b4d96ffa15d353b88063e802ee1a8bfe230c8999 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 21 Apr 2017 23:08:03 +0200 Subject: [PATCH 144/187] Version 0.2.0 --- makefile | 4 ++-- src/helpers/help.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/makefile b/makefile index bef2777..719c410 100644 --- a/makefile +++ b/makefile @@ -17,8 +17,8 @@ includedir?=$(prefix)/include # Program & versioning information PROGN=g810-led MAJOR="0" -MINOR="1" -MICRO="9" +MINOR="2" +MICRO="0" APPSRCS=src/main.cpp src/helpers/*.cpp src/helpers/*.h LIBSRCS=src/classes/*.cpp src/classes/*.h diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index ac3ca0d..c77472f 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -8,7 +8,7 @@ using namespace std; namespace help { - string version = "0.1.9"; + string version = "0.2.0"; void usage(char *arg0) { string cmdName = utils::getCmdName(arg0); From ca1ecadf981701239e53be663287b3aa7c9cddb7 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 22 Apr 2017 01:07:05 +0200 Subject: [PATCH 145/187] Move wireshark dump to g810-led-wireshark project --- .../g213-prodigy/DisableStartupEffect.pcapng | Bin 520 -> 0 bytes .../g213-prodigy/EnableStartupEffect.pcapng | Bin 520 -> 0 bytes .../g213-prodigy/Region1_E2-3F-5C.pcapng | Bin 3112 -> 0 bytes .../g213-prodigy/Region2_E2-3F-5C.pcapng | Bin 3112 -> 0 bytes .../g213-prodigy/Region3_E2-3F-5C.pcapng | Bin 7432 -> 0 bytes .../g213-prodigy/Region4_E2-3F-5C.pcapng | Bin 7432 -> 0 bytes .../g213-prodigy/Region5_E2-3F-5C.pcapng | Bin 3112 -> 0 bytes .../SetFX_FixedColor_E2-3F-5C.pcapng | Bin 808 -> 0 bytes .../g810-spectrum/set_boot_color.pcapng | Bin 1052 -> 0 bytes .../g810-spectrum/set_boot_rainbow.pcapng | Bin 1052 -> 0 bytes .../set_fx_breathing_fast_00ff00.pcapng | Bin 211196 -> 0 bytes .../set_fx_breathing_slow_00ff00.pcapng | Bin 298288 -> 0 bytes .../g810-spectrum/set_fx_color_00ff00.pcapng | Bin 293528 -> 0 bytes .../set_fx_color_cycle_fast_00ff00.pcapng | Bin 204820 -> 0 bytes .../set_fx_color_cycle_slow_00ff00.pcapng | Bin 180492 -> 0 bytes .../set_fx_color_wave_center_slow.pcapng | Bin 199424 -> 0 bytes .../set_fx_color_wave_horizontal_fast.pcapng | Bin 215416 -> 0 bytes .../set_fx_color_wave_horizontal_slow.pcapng | Bin 180384 -> 0 bytes .../set_fx_color_wave_vertical_slow.pcapng | Bin 202708 -> 0 bytes .../g810-spectrum/set_keys_colors.pcapng | Bin 18512 -> 0 bytes .../G910_gkey_mapping_and_mkeys.pcapng | Bin 1195720 -> 0 bytes .../g910-spark/G910_test_blue.pcapng | Bin 230740 -> 0 bytes wireshark_dumps/g910-spark/logo_g910.pcapng | Bin 172868 -> 0 bytes 23 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 wireshark_dumps/g213-prodigy/DisableStartupEffect.pcapng delete mode 100644 wireshark_dumps/g213-prodigy/EnableStartupEffect.pcapng delete mode 100644 wireshark_dumps/g213-prodigy/Region1_E2-3F-5C.pcapng delete mode 100644 wireshark_dumps/g213-prodigy/Region2_E2-3F-5C.pcapng delete mode 100644 wireshark_dumps/g213-prodigy/Region3_E2-3F-5C.pcapng delete mode 100644 wireshark_dumps/g213-prodigy/Region4_E2-3F-5C.pcapng delete mode 100644 wireshark_dumps/g213-prodigy/Region5_E2-3F-5C.pcapng delete mode 100644 wireshark_dumps/g213-prodigy/SetFX_FixedColor_E2-3F-5C.pcapng delete mode 100644 wireshark_dumps/g810-spectrum/set_boot_color.pcapng delete mode 100644 wireshark_dumps/g810-spectrum/set_boot_rainbow.pcapng delete mode 100644 wireshark_dumps/g810-spectrum/set_fx_breathing_fast_00ff00.pcapng delete mode 100644 wireshark_dumps/g810-spectrum/set_fx_breathing_slow_00ff00.pcapng delete mode 100644 wireshark_dumps/g810-spectrum/set_fx_color_00ff00.pcapng delete mode 100644 wireshark_dumps/g810-spectrum/set_fx_color_cycle_fast_00ff00.pcapng delete mode 100644 wireshark_dumps/g810-spectrum/set_fx_color_cycle_slow_00ff00.pcapng delete mode 100644 wireshark_dumps/g810-spectrum/set_fx_color_wave_center_slow.pcapng delete mode 100644 wireshark_dumps/g810-spectrum/set_fx_color_wave_horizontal_fast.pcapng delete mode 100644 wireshark_dumps/g810-spectrum/set_fx_color_wave_horizontal_slow.pcapng delete mode 100644 wireshark_dumps/g810-spectrum/set_fx_color_wave_vertical_slow.pcapng delete mode 100644 wireshark_dumps/g810-spectrum/set_keys_colors.pcapng delete mode 100644 wireshark_dumps/g910-spark/G910_gkey_mapping_and_mkeys.pcapng delete mode 100755 wireshark_dumps/g910-spark/G910_test_blue.pcapng delete mode 100755 wireshark_dumps/g910-spark/logo_g910.pcapng diff --git a/wireshark_dumps/g213-prodigy/DisableStartupEffect.pcapng b/wireshark_dumps/g213-prodigy/DisableStartupEffect.pcapng deleted file mode 100644 index 6631133cc0fa721491079e0db0dc19ae1f34c216..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 520 zcmd<$<>jhiU|{gI(UxKa(*L1=nL&=h%tSXSvqT|0GcP5-yja1|Kt~~|G&3hf!O+Cm z(wKpPg+Z6Wr8Ku7Ik7-NBRsPxwKyZOC|gs(NY6;mOhKazOzRrxrW+fjBqp0BY68s% z0g!zly9$8#ClLSt&%nUMpurFmqZd<jhiU|{gI(UxKa(*L1=nL&=h%tSXSvqT|0GcP5-yja1|Kt~~|G&3hf!O+Cm z(wKpPg+Z6Wr8Ku7Ik7-NBRsPxwKyZOC|gs(NY6;mOhKazOzRrxrW+fjBqp0BY68s% z0g!zly9$8#ClLSt&%nUMpurFmqZd<|mSJcJdGNpaI>;Ri4ALOS@d91M z0pclg3NkS=h=BEi%m@Gp0s+Vj?iCxZ8vxlLjA{l410%!?5ug;K;D4T2kN`3OnFBJ< z1}X?L&j@Iq43H1O$Zmq02U5)h(u3}nC*B*c>jT9>SehZ>Rhm!>)IY$`0=cD$5#$zZ IP67J~03n%XeEHV%7>Cbk(vPT>8puRaWF!!YXi_^4sfa3-p#vEjv2}?^(+CwqgVR z0VY-$Kq_JY2L1qq)B%vXKqX)(od5wdWijuY#L0W{Ss0s>PWHLJ$FHCM&X@4mSa_2$ zHa~Obm;^_&(+1damdmD=^fh@wH>&lGRasRg<)wA~T2)rF+BuD}AWN~i_3Mr0N<&U8 z=*`;d71On(K@D-)QXm=R+e*>B=E7}^YB>>=!eivld%9xuu>^qYUqtx zX~SZbYny98FJ}~WTFI)@s;cJBY9lav5ax}#s1a^!JqPcf!vVBQ^C33*+9;lcbL?@p zTX->kXAkROEQZAep`u|NofwG(Bo=MWMaD(E2n`uiZ;YY>=h%71Fq7JhDEvu^n4@7h zat%4io9SFdo&vl$jN6^o)aBvb0i4rci}B7VPQi8TF}C<&(Y)PxAFzeB+>)>sEM>4I z9|l&lYN3Ag_ne>Yryl$q-Q)ZaM)!RzKY2+ym@NgYirSw0{Y(Il_!03CAoO$UGxejq zEJUsUcfX%}uZYf>$WP>e^Rso=gP$kB!0cd${1ArCkE{G3kN6Ss@Qs9iK7FTt{O9N6 z56+LL_4Vv0=Z7$Ce)6zL-Fl>HY z<>w0Uh#wKp(T@?V|JU!&P^eD7&)W|@_}K>rSzm-<^OGNNk)LnCBYs3YM?cy)_2WN3 zuYl)w|GFRH{D{_r^?i1gp9jDrendP+Kl?H2$N%@|W}Ndw_6qm=`-KV44`JBz6LgWE z0`Q0*5zo=jz0=f>|NN*4>gRm(ad$s-?1+^#$DzqM~JqVU62p%dPdZ{N5y1tiW=;PLv%GITL-84?&bCzt~x(co|_%iGwDn^uP3k7k0~Q{F`KEBr}O1ORd@hDzAieu^n zuzB#szMCJZ4uF0tE`$|DXm%vprz)V;?X1wV|@`aZ6of}(sqT~ghO8lKzzq>;z`$an;h`U$`0 zevDUVHTU;!_fz;=L~|tbvxYpDpF1mEszIUt8YM!mmczz!L7W}X*`}cF(5&SSlho3^oM}COM{K$Bo ze(Y$1{l5p#55y8YKi@xeu|MBO2EF@G$M+w`=&Oeb hzLpONeq`&Rwf}^D(I>)6W;3`}zO;`~hHG#1;Sm diff --git a/wireshark_dumps/g213-prodigy/Region3_E2-3F-5C.pcapng b/wireshark_dumps/g213-prodigy/Region3_E2-3F-5C.pcapng deleted file mode 100644 index 52b69f8224708aba7d4d41b34f00a34809a8047f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7432 zcmeI1U2GIp6vxlZbo;Tkvel}ktuQEoMc8$Bww89O?$#D?4JavYFuK}qKfv{)-B6Hf zVgr<@U}Dq+UQA4^_++AuK7b@OYJ8Ad5<_T+9}h}Q#4H-44?-la=giI>?wy@Yhg~(O zy~*vlb7$`Vp8d@^bMH*uH8t*00NB{RvOz+dHHrd@przT@m)fCjNevAQ?;25qfmLeX z&eY=rYOp!f76K>(A9U?}BHf=%tKKcC?SmtaB)31dLe>15zeV*vsas#bw=JX%B>P*E zD^Q;b%|~;kv0lKM%>u~ag+#)iNT8Gkn3#&hmtvc06MSA3^XxlKegHI*b7kmJB^@oPs+A?E)5ns= zChEjO8si^C;sI<^6*VeB%4yW$DXBJF?M5pU(jmQeqnGp!prMTd|*NBlLdRn;kcP57HuE_DbXnxl*pf#{*WFFFc>ujthL+9xQ^-$h5$R(=dMz z;}e#oGm(VMJj!vl@_7#RI6iiIBw))YeTwH3_&8R_?zfds_>vPw%Z`tGR^W5|!y@>6 zff^J$R55-yjXXY%;^!jjaeVCb=oi`YS@I3fr}X$~|5o7h!)y_Ju0A91;WYC2gk=Zu zvlR6>K6ZKq`JB%1d`gd>qvr%Z+`V%C{F(Ss;KOO;@o^MC@1q{a$4;*xpO=2)`IH_% zW9J1v`@bt9eimO4_;4C|e8P%@_~}GFj*p#QK|V1h$~~V;j~}fp%CBFkJw@=Tc18K; z52umG$5H&;jCvd&JH3K@U;)pk^!RxT^|>Q{uOOf08qcS=_(_mD7TT*GoK3`Or$n_8CXY>+&z~yV zKf6Iz7UQY-<~uv-BzW)u+_wO%dHFK{eQQlUK$`kKPro3iok8tJJl3ndHtDU4ZCD!s z1>UL0w+Ac=npT|qEWKOc2A&lcHrlZ&MhDH*YqZJSg|!~*{zb1YeDTOhY5euWf@S?G zUSlogT*|X^0c_AKPOd2M05Lg?nHOg5by3 zkxu9^&eOcl8*SX>>90M1#k@C2-7pB-AO*uPgtPXb7aG3$g zZ)y_r-$OacSo2@I%=|BQ zUNQf*IrBe?{(23c0bF{T)AMy-a`Mzx_50fQD$h?J-PHHdZtN@mIUz%b^oE1ygz3n9 z<3B|}HuL|hRk>`Z{BFg1zs>r82liJOzrRraw_I~}DDvx!^iyVX;fBnN^mN}ZH@;GF zLb^D8UEk<4CnePw&zq}qiyYsjf6hspJ!R01ZCZzEeWq2>IuD!g+}%Gn(0puNeAigw zRDB$7nv^csiYsrczTVPGOY82CWxdT`7o)~_t1i(7TNGkMQVr=T6IBhtT{2%wg00X$ZO2Q3rKXEg`hb`D8B}uyA<=mk=Z-^9>!V{>JH5 z8KHzY(Gu|hE-r3k#t+21wQB*>6L%)^b5N^T>##5WG=azTrDo+eI{giMa?L#A_`Dpy zeXG{uE5~Q$JK8?CRFM8a09=PyC=|Rs^+gmj(ftPUXur~-JJjhs+p!7Q1Z)B}0h@qL zz$Rc5_#X*S&46kLdy5m!P3Eo^*obppj0( z*%U6uYiflsG5S=iZxm2{1Ap9z4tjR8(=7^+r;H_yCc2468t+|AVfs-|O|RhqjDCwf!@wsXTF9SU zsJF<+R4*l;&y}1{`uWpZrQ80dzV;AR>e*SEz z=X`iBTVG!Z)Udd|0vQ(aM+|a4JSL5INx=D$*7;m*Yf_jY4Z|y&!RvjOvVc-*3VMimy)l12z?F{F$^8EP)_5`mj diff --git a/wireshark_dumps/g213-prodigy/Region5_E2-3F-5C.pcapng b/wireshark_dumps/g213-prodigy/Region5_E2-3F-5C.pcapng deleted file mode 100644 index d736fee8016b277dcf95155791255de2d099951d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3112 zcmbu9&ui0Q7{}jq?O4l(oAjWrN<_g9*EUH@=fXhHdGIjsAgqV7ty{|${1w~H?VuMG ze;^`7J?q_xHx)dHo99_jrV~UF!9QRgoFMgi+Gc&;CV|)Hg@@!#^M3N=)9;&5Pfuux zF*Y`Gc#j0fYGZV;eJq`dO&jy_xN$yzVX-8u%Ah>GV4Tg%YAQLLWX#WEY;@tAIg>Nx z=(tfVl;(29GXt^~*Wzh8dZ~7dDY4n4me0+ka|6J~fzQKdnNV9$)hc5?7G>FNJZlmRWX#`>{2KXlZEv;Dz7pTxqowa7Sy7hxcyG*`|jaE`?@x|mdFgyAQtui71g zBR7zPyphIL5*Il?yPvk0m`~l~OWLezLp@*Cw z!m#-f%1;`2#E%ot)sOLr`thEh1CObnZ@VVi*kA8~(cE8@Ve_MR2;}D%@S1)cd9Hr; zKB0cR=V!+<^;02P7SGQQU^M+uhRu&qe*OTj>Bo`h>Sz5q_2WH1>n}Jz1E1RX{w%-b z{1ArCkM0-9&nobUA19uxpSvs6kN5l(RyjW#Z`#;jgKs%Mgkkd|l%He3BYvECu6|Ce sQ9s`E6M0Ad(7i6czczu<++UPo^P>j@@)N31KaMmN5dZ)H diff --git a/wireshark_dumps/g213-prodigy/SetFX_FixedColor_E2-3F-5C.pcapng b/wireshark_dumps/g213-prodigy/SetFX_FixedColor_E2-3F-5C.pcapng deleted file mode 100644 index f239f7b81e64a0b1a332c36a674fa30af0f3fa8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 808 zcma)&%}&BV5XWbW5+Gn8;b4TAHSqw^Vp~dygv1LsLNs2uG{N$rHua<7!*cfQ3+TmH z@DY3h<1_dIo;}r>LQ5eWm}W9N+nwM3_n%0m5>o(Z)sOZVR(Bo|*auA&yXKg;&4>P@ zGvcyz%)1lwuFqw)d|C$B0udUMd%I`YywEm>gVC)qw2E9QDJ6{;p1dkb;!RoU8$Hb^ zBAI|l1q<0iau1cz`$yG(ERO2`u#ku4L8u6HS z51nsNgK^&4hIeK)4{=SIhwu3H>&qAE0LTGE@B<-6-9bDfFvxnd#JHeM3}RdgR#U;67yz(jQLn9(0Se zJTuZlQlg&u*!baV3H#%u!v3T`&49PLKe3&#KVe4j9^aoDu%9zs@DjKUbCDJ*)oI79!>=^5-8m<$})u diff --git a/wireshark_dumps/g810-spectrum/set_boot_color.pcapng b/wireshark_dumps/g810-spectrum/set_boot_color.pcapng deleted file mode 100644 index ca2d889b0ce7796dadc5e9c7cdb3f4b730094853..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1052 zcmbVLK}!Nb6n-Y+nkG79QqriUn3DUAvQiGmJwuUpW; zbN@i9pV6g1&_9Unz1dk^EGl~NcHVn4^L_KpybXpz!59GKt=S2Nqa%%Kl;_Z2(E(K8 zFbvJ3Qnh9;KmcclusQ-^SlzRmCuVXkHJ6Mh;%60Gtata)nxf1*NevR*(9@WcckgfS z*p=fHc$+H#*3%-L)#TxlkAk3MFF!5Q~ z32gzBmn!QG90%_)WzF<^Lvm(0amJTD&Xi&Z1mgS2ia0sg8$8$7)PCz+Q14~gIpOy- zaifp#=b(QOQ&YJS*`Ex)H&$l-zbe4x+3E!?o%<=C6?BU+yZfY0@$9D`~Uy| diff --git a/wireshark_dumps/g810-spectrum/set_boot_rainbow.pcapng b/wireshark_dumps/g810-spectrum/set_boot_rainbow.pcapng deleted file mode 100644 index 61e3c8eb257af54a466a29b211db0beedcef9ba6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1052 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 m$Iq~l?Zii#s4#&71j?t<&`kCf#V|Y^L|1-AF zz~d^sj*&lO`*e?y$7M59ItP)*$m6mDGY#~6jNNYLoM=qRwA;<$m^y23^PQX%&6%vd z&3AJDzO@&?F+Ok?=R{-5z>2oT+$B`4&ws;>|d{1CbfgIzadmTAZZ6wC*b3WDk zqI-EB)h_DQOgy3X?HEEeReNI|chnx$ws_Am=5eck13#mJn)N8Yv)7PB?Ij%Jc06Ri z`J@*IxQ*d8vi62P(KLU_bm$ZMOearsF!ea@O`aB*X&}eg?-@r<9>=|Y&xB*@ti7Et zIdYG|t7pdC2XCc=f&6!*y?^$T|Z{X)tP_rJzch1@~lw;hMc&H_wYK8d! z`8~$&i#dN|{@&N0(%RE~u|Ctq9kP<=oRzP-GhN&vC2?F;`>2X$&N%})#*Ig0C6DDa zrewPD2y0TEb%CLqG!u`g^(x1HMlpS@3+F_0CYiq0h5L7oA(;ksjF)udoFa?dIbG7t znn%OlR=Sa6ns`Fy^jI&>DR-Vbr^k8)<`l>=-qeS4qA?|>oBHrPQa*0CZaJNLI_E@l zCOMsYI`{9xDbVjRZpWAgHc*Avd${cwQ};Y_>Y%1M$@9pmg9393?8wR9_avux z2J<|s)V-RCC)Bi;#Q2c6^?N$ z9OG6v#;tISTj3bD!ZB`zW84ZEw-t_YD;(oiIL586@5@gd-ZX!C+&gi&KGTd54yGRG zCmAC`G4*wfJxoVV9_J@LOns(bk99DmeMX$0d_6W4Q#i(YIL3M$BkJK8>){yd;TY@T z80+B}>){yd;TY@T80+B}>){yd;TY>(na-ThG=Ir-<^+AFH8~EZ;%`RLakVBV6jNWv zIBSw4C;EI#ypNbQNuTKzk2;vrJ|mc3@n|TfaE$eEjP-Dg^>B>!aE$eEjP-Dg^>B>! zaE$eEjP-Dg^>B>!aE$eEjP6X!A9v(Wb!2VdxishHkLxr2=1G61-#i(Lsjp)^W||`> z52nXV(`WkmOn;`I&kV&BjB>!aE$eEjP(%%aUtR&M1RD^hyjR!h(UH&yo6;=ri56%%ADDWuchDG1kK|*26K@ z!!g#wG1kK|*26K@!!g#wG1kK|*25Rn!!g#wG1kK|x-)&`-KP1=N8!mf|=5L zF3EJ!icm~5h^M-BWBPwJoD+>Hnf_mmKGO-GFw^8dBaWvNJ_*GXj$Tw4&*-F`cuxIwofu`{i#0FGuHbvJ!5?+ zrdf(5H8-Zl7o3w9Q{xMLrm0{1Gfn+E6jR$VZV`@g3moGXIL0k-j9U`_>hX0e;yZ+D zF@$8g5Zh%J-*19b@cg&dJN~$9~r5RPj6KM6O+~rxm{k=9KumqK>p(*V9}6 z68Eexk`p_| zEpUum;25{SF}M3yc^x??nls6CUPtcVIfi7K zsJ#G=F}*YAMD;E?rFYinl!g8?kfRD(uOz1|yML9Bie@+ka*UI@a!xd+0xfdlj^OlIa#~ zpYCz*k(2zHK5|ls+EW|qXgRpA=G?R&Q#o}wm2>i9+Tql2Ow~B5ss2AcpL3!)lT1H8 zpZiz)DK*#H3*Z=^HaI65Q*wIR(C2jFV9tr=OxE6og9CF4zk#1uK}~W>9QO?67{5jB{XM_Oc<^w}-;3$N!}Xaqq>S=i zPa9HNC2CvkqbizNPXjr|@7s(@t|wkhzi-nDBU$4m?s$AL@wj5@ti5FiaZWU6vi6o8 z#Qpo!UZB5~n%=uo_O6ra*F9bDch?qq8_Cx+X$$ zIyx&br$COeI-7H%F(s$!Y@SES#`!&QirEjUW7z}aM^)$IdlfWivYs9oZ}o4e*C43L zeVZNQCOF1T*v~h?F>Zom+yuwC3660S9OEW9#!YaHo8TBX!7*-vW84JCxGC|TMb(CB z51_U$`zg-f>$Q0Rng2E8R+*Imp#il(U_9yvS;;~ zPM^t4Y0f0m=`%wyg=4IPW2{5|b#RPzaEx_ujCF8~b#RPzaEx_ujCF8~b#RPzaEx_u zjCHO|kC?^z(|Z?Lr$@}vXF7GZgQ@sispPw+&JIcrhna)`j ziYXjp9UNmF9AlmB80+8|>);sc;27)R80+8|>);sc;27)R80+8|-I;cLm-F{x+VNd| zrWdVnFs1){MO;&S(TY$^eI4W28qSIS_O@g?wnm?6w@>_;cKak0Q#i(raEu$_7&pQ( zZbXf3gk#(Y$G8!WaU&e#MmWZek%5Roh{1?U5HXaZJf6OT?KAMW3NNPbVEc6IGoj+BD5e9|rc%qn9huXcTR0~gQ!;&Xi$2pSJN%hW*%68<9OFhf#*J`{8{rr? z!ZB`yW84VGxDk$VBOK#KIL3`QFWCskxDk$VBOIeU(?@qV&0ii*AKk6bbVtk4$#bOS zJ|pUMN6USJzK>MrNa}Pe+1!}c?l-#0ekz&P?zc~(4|Pt~Tr=^c+Gk=2)zo?A{Pv@( zb8%lqa-R{$)A{YK{tfjS1T~NIUO2`LaEu$^7&pK%Zh&Ll0LQoij&TDV;|849Zh&Ll z5XnMhBSs-cBVy=S?$cY3Y?{Ahy7fqF&JEfy`&MqBiN{s{YMxb7`FA;!nbPOevQE34 z8H#C^)w}i8jpXE5b2#?x(+B!#UBMNv6MF!~Hwg0$B$^9b=apI43$skes^QpwFqJ$vM$^rL4V< zW?)W%9OJ@~j-2fO`&icA!jU|WY8UltCZ16Hb_}7KT2ID~^cen!rp0{T|~vt2iebQ!+hgRXC>3 z+WYxa&WYwsGX42e?%%ie0yxILpK(s~nZ4xH_cMJ?MPG4Fw`2B;RPBvw;M$`(lbl91gs443ImRzhdw-8(d};^hPy3N%`qU16 zrs-eZoP2Lc=YNuE`d9k~eQy}ZF+Q~U=Hz)ajVYNvv{|h}dX90(HqMFWOfns^jr;eh zy+DrfrX8FUjVU?Zw8NT5Bas<@k>^h)o>E)qTu;XD1Z<2IdsVF}B{#InkJs zQ|sM4kDO7{dnO)|Io1BbInkU+PPKn<|2~`oImWa-oD+>HIi>B<=X6kuTYT&3pceZD zt*1baaem8NstwF#568G3j&Xe?hK|)9 zVIovhYxthiIe+?nSjlwH>DHVZiJ#&xa{Ej?CHK=S&Ss`m2eS6AI6D+m-``{GbrI)8 zV@jsIF4AZE%Owt`9>2%<%O#&mp} z^G)-YOnW}B&-7IEpMm{H1)VF(Iz83yU!5PQ@VUOj*D>~ua!xd+WZE~X&-B|l%rv>r z2zT-AoKQ^R7;E7eYvCAc;TUUi46cP^tc7E&g=4IRW2}W^tc7E&g=4IRW2}W^bZ7cS z0q0NejV04B3iO#C_$o7{&pRa3178hQrvrgK*>Z4Co+B)M&5@J+{}D>2OJCDxI-!)A z(wxaUolqKzDI8-h9AhmUV=WwGEgWMl9AhmUV=WwGEgWMl9AhnNqZW>_7LKtNj?taz zhf6qr`V31l{cwps)88r_Og*mI`K=-pQ&sZG=Ek(^a?UCF`KGvLr|WWkroXIYrZi`g z=`SloF@h z$GBEF#M>Skt| z+-Jl&($vj?nFex|ITBlAO-orO#>Ne;qk_{H@f9{|(G3kYjx3H_pkc_TKr8=aHt)?bgJDYTu3_ zR8yRuZZW1h7xz^p_XBa>^K^^Wc-H98^bfQ z_8v(YQ*Ge!M9}{mWo=*b@2otM(puZ^SM58dIs^Typ!sdGp6+Y)ul7+D&78{ya*QL| za85L)ti2I!tT|WXHP=i$spc%levx9@;ZV-Wi)n{Lxqs&vl4;Q2V_b?c4QxXqJUA`I zn7Y?tY(0W=qW_;la@u-CU`~M?AtFQw*V+;*{6ZzxMKa zhN!)SV_X|av5#feNWs3w@G`Z1CPFo}eUJCz{AoXu>*?dY^qEFZWTwggM^GI1A}0oB z8ptt@J;{-i{eK@zrejYE$JAMS-OhF7ME~cUSWmm1%l-S-UI54V5ymvYOa=Y_u9DM7 z7*n_Qx?RXQ(RC=Y_PSjdm{TCfxVyh2C;K{P$!T|go=2qa*-ShmYj5FDu05JF`95Od z&=9p}D989IYVYrHj8m>`n!jW^LhEZ3Uf1lb5B!0By0%Y_*vxh#XYkG4|#Aw6InkK1o`#*s^XLf)PnZa~Mz%fs z*6Lh5u7c)F)>GTFt^N(XLafjxi3$7>8qw!!gF;7~^n^ zaX7{}9Ag}gG4A?V%TMQU{r z%R@pjg=37vF~;%UC=SOMhhvPxF~;E-<8X{|IL0^}V;qh#4#yaWV~oQwx-;EyCFk$O zbiaf zjxiqTj_85tiRgtm9?=_d0-_Hhh6O;aBPK#M^**9(H0STdv~09K(^cp{17oS6`IX1W zRd)aCSfZkt_wZ`%^>vItjNzPUOu6>{Fh-y0{2YI#^K(Kmg=37vF~;E-H18U&h}@zbap7FaEx&{#yA{f9F8###~6oWjKeX;;TYp^jBz-|IM%y39Ag}g zF%HM*&a^0>^QU!6o+B0I>oZ+bz)a~qom_j@6og``mhohBV>)%NBc~Isb8T6tQ|Ib4 zyPBf-u8vP&~(;RG_zsHycI!S~_?R}3ib&rvkeC5c=<8y>dz6w!$DU`8wtL9Jcd&kr{ za-#K4T(faZ9na(5J?{OTY4;zqA6A?`+wNa`pKT9Od&p@u{w+bgjaZ6M^%kV5?UMPA zZ)lpoJVuUh&}aJTj}E5x@k-X-r#}W}8pts|_g_a&9>>V%{u_>|v-SqJxGlM!(0PTd zy}>Q^Pasis=UaOLevk1RjA@{+L{M!A7yJ#z)UCaP_I2ds!RerVt^O&eX4c3+jxnu` zBPS0|X>E8Ok-ld$@r>HHV+hq$?XBr>TXin(tMKBqri0bLp-G zH@v4KCy&q1hxg?EeQPg(V;t3+bE5r7avIfJpHop^&dKY2L{ZCx1*c(z8$k)q-yW0bNp-Xt8+rso}nD$hp4^3$1%>mplSY+>D&wSnXc$NHhGL7 z$10C|EBYRgSg!-Dr-2;fx2KOy9wTT>dCvLm=?5ezIqSm4w%3h`@6>wbti89+=<__STXiUi|cL2|$Gbef9EvJ50aZWU6l2gB{xPKo`fgIzf7}LPUsi2%Br%y4a z?)gc|wT_(V8Y{sm<=ViU0y)N3*KtmC4Upv2>N=iBr0&^FJfrr#7(z9*Mplj*Tb+yh ziSRg#`iGRdvJ{J!7;uE$M_x`<9l$7@4+#?2gmpx9OHX% zjPJoQz6Zznp6h2V1vhj4UQ7#a)@SD2o< ze=nv}@7HHqHpQQ5*_2RBeH~-uG0w@0Y2-0|rXNo8XZqo^P)y+%SHUr^f@53-$G8fP zaTOfnDmcbfaEzFAZAn8GoxgkxL@$GFmVj4R<7SHdx_ zgkxL@$G8%XaU~q%N;t-qaEvSA7+1R1>5XeSe=nvtuGMGykI(#>{^PSyOnn{Wt}i$z zFQ&V`&}TZY-k<5b`cO>a7;E4dYv34b;23Lg46cD=tbt>!fn%(JW2}K=tbt>!fn%(J zW2}K=tZ`-9b1UcX#kA*EeWv3Z{F#n#2*q@uRgurK1d(O#=>D}M!Gwt)6Khr+H zg<=ZFSOdpc1IJhc$5;c$SOdpc1IJhc$5;c$SOdpc17A=B$5;c$SOdrC&a@WWXJC3% zcrmTT_UWGY{=Ubb>F;|&G0niHCYu}6|3z+3=H$ine>js=twXXW_d6yYR%?3-v)i@RW*R-{_T*;+G{5q*f#^Y2|7w0! zH2Ya=3#8>}ZcP8tfpelU<$IZbbkJvdL1%xa7jzEAH0ufEG!=}V#O+gvX^74E{%gcH zh;I>F5cP{!+E1y;It}U=r=7+*(U|gcglVVgbIR$*InkWS+RNz| zm{XwNV~n1|InkK1_M+$TJklJx-I{n%uBSr=`Pbf%K_O}{MLEVAIK~<{#u_+AtKQtU zM?My_x6ibnQ2WtZY@dPeRd_L7i|x~`z5OruXS)C8ftdz!j2(w^PF_qq4h_fDS$pd; zIVYMkS$pd;xqsi<3*Zi;MQ`X+J zn|U6wi+VN_&&b*vbeDha4Z15t?Ij#zO(X?17q-Rh?KABkRJHdJw$H%#D!iC}gzeL< zy+7{pXZpuIftdz!jECOGIe9TX^uBORowXN#oO7Z%leHIrocs5!y#S7J$1Ki?#+0?U zW0pRr)_I&0&6%vd)_H+B1#*n%<#SFnrmVg5@_8Pyi+VN_&&b;QZN7i){Wd>D?HTI* z#lKN|e~)AAys&Bhl4<9K`b-xcI4=15ruy%=`aMp$0#a=fizEl0Haa2?N_c)q!O71h__v3mT&HX#a za5?7;x`9=i+-6G-vWycKQITe?z?nK~2^ZJH{$F#wzR+ zRd9?|aEw)Oj8$-qRd9?|_++RGjAbR^b>?1;^!HZ8xlHVdP)y+%tKb-`;25iH$5;i&SOv#e1;prXZqHg{!HI`GZa%e#!5KGN;t+! zIL1mi#!5KGN;t+!IL1mi#!5KGN;t+!IL1mi#!5Iwccw!YasFO)I%JVP(@CZNOed9w zVw#ZziaTyhA6mjWc`#eVDOk01zInkK%c-r~{eWuITIhcC-!@kgGx^e?EO|Apt8rYQ^0y7Qd7@yzh$cfHj z#P7#FzcCzBweP5==4{Y*M@}A02W{v6J6J!O_$uF@26c>wf8R7Gd5k>#dwovnyErFW z+hpyf?+VN*kYoH~H|IoS%GH_xME8k^iT@rc^DV+hq0r!{{%YLE5&&k(hj zq8#ILIL760jLYE|m!sa6TLb!hjp2D&d*k+S{>j=9?@z|<(P#Q=i#w8^wbI%qnf}`1 zz@VSC26BvZTHR4?AXgPMrer#&mGyCivo7%RCe6enYR;UsH$0VdqB)bF4GmA_{+(mE z)?NU|_!Gu7upKHWCs}(xVNBig)1waMoapb~OHM}}8kkcc$Jjm1k<(o3@4-k;-P3p; zk-BFy@r>dWL#U=|Z&TMhs&jE)1Py|m5Ni8O zglcO0KI+E#)7m4Me$-8$>2JN5DgFN!lId@~0y7Qd7~ks6InkJs>07}lxvUXOmf7+6O)E1#*l(T|7Q{jG!@zX^Y&^!!dP{QZ<2S&bqK3+54-BZxvH#?Y(n3=R|Wx zOsW6-_qX~{{X55y>uJ#6WBln#&WXk(PBdmIb|c;6UdyXECz>;4bF;@SSQ!|_bImSMtI42rYa{9gt&m+yD+pUQQ=UWLSQT)L6>y9daEujjj1_Q<6>y9daEujj zj1_Q<6>y9daEukM=O>-+Y?{Ahy5U59rtjxCnA+!mlIfGDgkowPP^>9({rv3hNsgSv zIVa8e#M7+~oa>j}_UYE?*;Dz8yOwYerpK0+zW}4e)@4r1x z>%eWdg<|UK7{|QHInkK%c-r%JYnFBD^q2}}N^>U9dp1q7`ZsW+f|>_YIL2}~#&S5u zayZ6v{7g9ujSIUHj-9Ah~gV>ujSIUHj-9Ai0_8h574v3&*xOoaXaJ4>chChIe; zf7hRB(F38F4y5@}w>bz^MFw{A@DUFXQjW9>cbMXMJbrYC*POli(!o$h?a>fgYP z3Thrq;TX%{7|Y-o%itKx;26u`7|Y-o%itKxu+NskF_uNL5ZQ=Ph|!1`I+pwNm@SU{ zJ=L>T}w+og*iE&g6T}l^=wty%cPyqpA6m`(C?L zM@}A`RNue~7vHO(Ig^~8_ySL&8Fr}qs=3x4a$1dAT7q~Ru@s@| zEl7*uMKb>;>jVaG%um9Sbv7k)V zzN4CAdR1S}iRMf)J?MMu^{Rj87?NqC_5wJ@XHVgrXiUlJik<~ZTr=^c>R*kcnqoRRopYi&lT7=ia{taTB-5bBy(6yXoM=qR z=?jdh`?=i3!#F3JGs&sdp;rGY9~I4T3gj3EWO7b4rsT9w8qcGef3IfZ30Zr8jrOm- z|yF*hF`%D0)fgEGU z8}6*eG$rQJi|JQKs2SY*n3Q-xd@=F8ti5luIVYMkS$lK4aQ{BF7wGpG_Z`DI(U`LK zR(7-I(GWSv{m3n+e&{~~Kc|A`OxE77cK-o51#*l_#&S+HrmVetdhtApwD$Ve#CMX@ zgh`we&6(tM(&^m452rwm@!-jv6OAc3eTp%4*T}OU;GAgAB&Xlc3S3Wt9ODI3I42rY za{B9Bp2xkwh;N8f%zj)Q%i2A0XLT;VS3z?oIjz3f>fcbWK~R(XHao^rIL1=!6QyvB zrErX;aEzsJjHPglrErX;aEzsJjHPglrErX;aEzs{=O?F4<@{;;B-7mk^qFpbnwipj zBgypDOG7dBb&Q*y<(z0t$#l-;`b=m2)1T?E;h~tqF_ywHmg2Zy3ddLq$5;x-SPI8j z3ddLq$5;x-SPI8j3ddLq$5;x-=+5+o{HFO!rs>z~GkvGP!PMhD{QVZ+cB2FF_yqFmcTKVz%iDElI7a{s1E=CMM3`7h<3`Sgnh#_a0|6**PfyY%){&MZT zbCy2S%^R6%`+VxVpEgNjp=urIVT!ZGJWk8eWr7EFjJZ{d5$!q zI22Pj#u7Nj5;(>ZIK~n<#u7Nj5;(>ZIK~n<#u7Nj61*oUfnzLzV=RGVbZ6S{`=;pqBny#^7=;*(h+!LKot~d^ zSF%nif64TJ%k`Pwy6;`d_neXL?o4}ChhmzAG?LAY>CgK)a zS{ui%(`R~NM`miwcVBy3d=Z#wAjdfB7|w~tluVD?7>=phcT`iy>(hF0PBdqd>FzDu ze+TPF6JO=~)1aTV)*jC}(S9UrFS<>iQ@4{iC$HM8|2{CMK)=WM{V9%|JZkTaoji|@ zX>4-W#3O3ojv-W2oL)WOzxHnaGeqs-rK=-v!7;uC$M_aLb$tu<_LeoE&(|29m$f(S z0!RLI3=`M29==DP>C*npl=f43E<343%b=gN26Bv(269d`rmVd)TeVEgma{J0rq8tJ z%vpPV(>W)q16g}NwCDbvW4P8{0LM5YgL9(wMAqIh2V3)Kh(zR=ZaIB0+>z5F_cijV z!vb>(#t^dhZoZZCr|pwWyZ6v%`sz4;rZ@Kv%rwyNF^;{HbMj)^yKgwA&e}Wo zUe1Z;OfvoR4DR2z_5%DKV;ROYz%LPW{vg)K$!F?wI^`kGiPjUjM*etCU`~M?qqWR?xzuZOv$vsXoVTnbBv3ha^z&6E6Ccrb1?VsQ+t6N z;|DVwIni-R)ZSB9Tk~inGUG3D4L9+W+E4ddPu}F5a_6}p_x>Ckm{TCf`0irPiN=(i z9vaW{$Qd=gXW}85(=+9qQ*sR!@8O3`;{JU&1#*o0RB%qTp2&Kt!I-+AwOqTRX-;yD zJS;abr$CNzK#e0OkMom#9_4v#N{1gIPBHr-b$*ia$=%ht_+ACgnXIQ3&szN(c!>&X za^GghxB!lE0rrUnaEuG!7#F}XE`VcP0LQohj&T7T;{rIw1#pZD;20OcF)naDKUrVv z$lv3=!OR!*nVzxH!PH}o{P~}unEE=#yv>fBJl4n?UeRZovBRHfhvHC7;TRXdF)n~( zTmZ+o0FH419OD8w#szSU3*ZV_X2oxB!lE0UV<{)3w+>13QrlT6<)jzKHG9 zt<%Ww4yLrvh|jqzmxf~M>llCigL6vOk^MKL=<}npa($+6?3YuWtL96EeT?mj&bxMoD+>HkCELz(P!HE7=NalH-use$5;%nT; zi{TiH;TVhI7>nT;i{TiH;TYYS_BfUE_hR}TwoiBMU3R8}sfW9G@V}v$4#bj|Z0fvO zookx*BkCOHp0hb8`pi}`J>yq>rY8;bXS%cHK8YnA#$q_eVmQWPIL2Z) z#$q_eVmQWPIL2Z)#$q_eVmQWPIL2Z)#$q@|ccvd;`wR@Ig7TMj`c$iZw3+U?l$nxa zm36wTwbj2mk5|#`^~Ws|ms6^(O*A*Akt;YS8dEZ@JiwZBHC}Vg#FJ{Di6K-=d@gq# zGo?9`$J0rNhhhrHSPaKl498du$5;%==iOKib1jf- zZ&1hh?jxKNxf{vpAw!?jfBwNa(e(|I)0@a$9fMUqDwd5PGjIYBnz7EIuI_m9pd&K5% z)ON}IUzz2|-^1_Ubd5gKHM9MhPQNZN(?E`K-t1u@WY3vo zI%72Vul7@FuC*7yF+Q@;k&_3fi*D2B^gQ~{z(%U@s=cf1{#8CInyo$j--XVWgKy-% z_u3*yP9B_Y8OQVJ>`&e|?fzr-6N=NsrT(>d`os{mhn!lV)=~o2o4qNC8?{|B|C`Dj z`Fk)u`W}6zgZ{-#=@=o`)BWxXQF}%rmE;#Urh}JrPBf-mPg_42j;R_)HO2I=4>%{U z^>q1E?qBVv)Ld&XfMfjaBhD#V8^UvxKc&y9_a}~==$d8mxm@G3fjI?oj30gK$cg?A zg7{qS>F0PJX%5|PO+2Xf?HEEe#c67tqxPt_h36QYXZ3I3XH-y=ocQ+`=cD%i9>@6U z*N*({?UUy+FU-+rI=WHIlcA|o<}0y)MvzT})} zOv!27OZuD!{Eu_0jJdnuef|}gQy|Cq(qEhtjVU<|U&iz33dnwtIK}Mm)f#!#0rynr z;(HY|XOh!F?_2#Fc!>&Xa^GghI1i3-9`=cOaE$Zd80Wz;&Vyr|2gf)Mj&U9w<2*RV zd2o#L;27t@G0sb@-D)J$9zbp1vLo-QHt>BS#Q%j#?&iVI^_jNsaSyMN9!%G43B}ac zF+P7h=Oq8nTFU9FZTd_vK7*Ok|NA1Dw%Q$vDIDWmIL5g+=bj74I2Vp_E*#@rIL5hf zjC0`_=fW}0g=3rx$2b>`aV{L=Tvw(muzkdo_BmOnk6`wjG21<&8Rtt?icj9 zr|Q(#F;2LSbD}Y2ot|{~e%OllB!opYiwCDYR5^_jjo*`MhhXM|!3 z$5;r*SO~{hXgkJ2IL1Oa#zHv8LO8}kIL1Oa#zHv8LO8}kI7WA-`44dZUQBO1Tc7Fg zx&BNm&JV@Z*D;QHjC1m0+VdiPrbj*J&vfIEP)y+%3*i_G;TQ|y7za08aEyg; zjD>KFg>a08aEyg;jD>KFg>a1SOy^_!4AfR4itKY3@ji0Q75YqDyzI}k>e^6D2V!%R zO|1!PZ7}Ue)H%XuvpFX(rn9coXZp-*%+#>wOs>5{Mu%bw$5;TzSOCXZ0LNGW$5;Tz zSOCXZ0LNGW$5;TzSb)#M3g8$E;1~bSz%drUF&4lv7QitU zB&NZQ=^|{OfoBup!F2pQeWts2GE+JSmFGzR_hw+GfgI!eyErErQ!;&WQ8=c~^S(#+ za89(g$+h>Qcewu!m|tr0yfUa`oZDg&a}xh&F}**_UarsSy*87Q?>Te3xL^A}byZ+a zfqswin0A~KjVU>8`he$==Fsid#Di+RiXl`}$KWs0CROL+z6$w&_tBiaygo$jr6|W( z0LNGW$5;TzXw@6K_iZt}LawL%j^g}j`{Xh5*Dv*%W^`euw4ch_>#!*>(?E{#nd2Ne z(RqpZ{Cvna;g~vW@1m0&If?&clbELbhx_-fy#S7J3C1+QFA*NKcMrzY{cND&G|q|E zE6J(&$H1Hd{T}1N{WvEYQ`X+6|K)i^`ku|iGqUzR?eAZEFSKZ#=+nSg71ZP!$-l=K zi=-qgoL=pJ8^cRv?cH}V=kHZ}XQ#B*X8P4&W=fxTNv5;+wfa~4sETI1aiHI0eC0An zPW1l-i`u)XjWy@ay1>v)nu$l$oaNZhsP%N%Fh@=vwRiZT+`n@S$u#J3Z#Bj=unmdu zsJ&+}rf%&G8Rf|7MEB!fyJG`$3gj67d$S`adrVn-Zy(3=Xd`gFG4ZIZz0$ky2fHpJ&L2fwY)>6_mS2h!zqwsoP{wBY>NuoH)K5x ztI_9Fa{%WQ>Fmzw@%ICB3gj3Y4|L>Yk107V_=x9GrS8>CJR#S}SC5=ror}j+(40w5 zH-B#RZ{Q^=sL5j)JH~uC#(a#G5674f$CwYtm=DL85674f$CwYtm=DL85674f$CwYt znD6>oOV^H${K)}|+WQvUr+eJH;TV6Woi>JI>gyPDj&6{adDeLr|pY)lQUFgqr@?W8t!ZGH>Td_Obd`#}XCIypK?8udic#{1Qh_9>>T5`?XPfabmp09gi<29+zwHxz{k$loYJ=*Y=~>FOi(nbwT)XZm>eP)y+%^WYfs z;287Z81t|n?SoEx~ZcN)ub>u{!v53!b-p81#skOejX5vY?_P+C?KhyiK z3dIzTF%OP04~{Vpjxi68F%OP04~{Vpjxi7WY#tnAUL*^VjTnU(jfmOXr?yiywND#S zNB$ml8cEk@`azyQ)2A{+G0n2J-umjsbmAOGP9988zfqs*i3|Lh{%1@mrnY08Ega)) zIL6s1CJ-dgX#2J^_d>_mOs<=;{r1c zJKNOf#Ajg=u!jY2)ryFv49+AFhGx3aEPp^&p*WO`Ihp4?2$DBX?Zh|~U{^MDFrt{Y^Q~JLwtXJbg~jp#Kc) z7b@s?-6f|XcK<3L70tenOvMWvEeH4Iy1#Hc=R{-5^V8d3<9T#+*W|8g_aC#LQTz6& z|8nhl{m$EQr6Fn$IkkxVGm?S`+thZ+{M-EO$lqfuF$5qgKFL{2_u`WdI z8LIYPM(zDQj*?Vw55P#l-y1q>ulo?riQex@rd#*t{(WjMkYh}{l5?UlC8y8Z9iY8NcFW+L zXwD?3`h%?g18@rD7@oD+>HIjuQXpVN7_a!xd7lGC2sNSa85L) zWV+})eWr!em?_PfWSVtJD5h|XQ8>mZjuBBf#wZ+P6pk?p#~6iUjKVQS;TWTEj8Qno zC>&!Hjxp-Wbk+>cpY}Ofr^Bw+XZrKY%#>t(6jNWvc*$(eiN=&n+gzv5^nb51 zQ<^i$^xaXRn8Gne;TWTEj8QnoC>&!Hjxh?y7=>eu!ZAkS7^9GJQ8>mZ9AgxY(Vc0_ z1&;iC*w^|AI-$@GX^eWnM+9ZWs`rtv4!LNSG7jKVQS z;TWTEj8Pm5qi~E-IL0U(V-$`t3db0QV~oNvM&THvaE$Iu-^TVOkEeG2lIg^!^_f1q zo|z_p_f>p;dPOu8(}6hjC!0FQROc|J{fK%$9{+-KqA?}YXJ_d%E%@5Ol=c}>rz7Wt zVhYC?g=37uF-GASqi~E-IL0U(V-$`t3db0QV~panuqYg36pk?p$LP*s z`(jL==~ut{Go8I86w?eFU*g7%>5qSMPF_q)D)gCFw7S1K7o#V_gXw)MLNSG7jKVQS z;TWTEj8QnoC>&!Hjxh?y7{xvtg=36HvJlybQHarq7`8+1(`U80KUt@AjwtK&x0U)# zhogT5K}B+H7j>GpDiqT!bd_vwOsBWyoM=p0r$ax`XL?B*Go?9`=SXeVhhl0w#utTS zd=ZZEML5P6;TT_pV|)>g@kKbs7vUIROw2(HUnSGlojHH{ELbvqZ=*ib^Dbwm^jWq% zp6+SWHt6R)fgI!Jbk2#!luTo()<;Jjl6!~y9n+pOweP5=*7k*&oD7;m|ebD}XNryd=xc{CDR%3tJ|CZ1CJfitJ)M{-UyXOh!Z#{}jS$T2>c#W~TK zlGAyec^)~VruR%dq;iTOR8yQzy@P9y=1g+>skha?fuB)9P0m^3bA%M-7+-*6d;yN} z1vthRP;W2Lk2HH5!?UvX4w=IFdmSU!o~zIF+b5VQ9j_$QxdQ?-4dfV~eUfvcF(uP0 z28Cnl+)oG1;GAgAB-8z_=Kg(aFMwk#e2H_SF=g##U8~RO%RJ7B=1g+>XJ%kdfqswi ze=*L9#+01iy@}_sxt-gz_wAVdB2{}I&ga^rIg^~G-5jF!5{~itNJ`{+dz9ceYP)3Z zJ^cpfPunM%UOrZzX+HYTz_==CekIcz?f%t1s-hXs5$N|AV{dUzG^S)~-Vu&zj@o`S z#Wek2oD`= z{*vkBXZ4xxIp6``+FSO1V5XPj#NaP`dJ{KpOfNb3foe>Xbq-3Eh8S^ZN^-sc?c&c%ZNSES`Od?sWy zHGh)R=F2%J8dGwL?a%XQcjbCx+Wo6>R8z;Y8N)fJ6*j1|K>R%C(+z;dN|XO z6Rk_)v&#$9^f|qG6X!(#H=3-cJ30mD)FJ?)A)2(~3!)6U~|A^vLN!IkmMGE5}T_?R)Ru&pFYU zlG8(H@jN=ZYjW4bBa+kfM>!{&Gr8^!y^#BFo)dDqI)dvaxVhzY{9~LGjVU=bU`*X} z_*PGIPP9fyPSuwL<`n2!r9smYmNSGm29T zp_)2AJ^tnc)w#H@g62$e8gRSSzk%1NpeElF^R-H;xK=3@W2NF+rBqz2l!|MWQgN+P zDy~&Z#kESQsJT>JtCWgsl~NP`4#L+MI#%0fB2-h`*K-l)PunM%Zo~HJ)?P-bKhq9( zhGOb_t3-FmKb><)rmG&-XL`ze%+%|5Q+|9r6w^-D z9%+4bJ4S4N-;tBY@213_&}TYpor9^z@1_iUF%;8Iox!II;#fpi#Bqpji0+6Uh@OaE zh~p8x5$c24K8P5mLDp&A=Z^e6{{NU)X6iFNXrn*VPyQK-sqeK)SA6Zr$%E;EbM%=W zwcVfT##ciz#kERlxK=3**D9si*D9sqTBS5xtCWUomC|snQW~yRO2f5EX}DG?4c98A z;aa6MSEkFpcjWKE^uY!COg}{b8Q7Opc-84NyMJ|lpu+q8UR!lM^}SYU=T1jX9!%eQ zQ=jQ;fBG}Mr6LqlT&t9ZYn9S)tx_7URZ7D#I1Se-rQuqoG+e8chHI75aII1ru2o9I zwMuEYRw)hFD!DVgaE~K@52h{N(Pw&BiwAv~p0Yetoel){WXr)lx%NzM^4(*!nBrQcG+e8chHI75aII1ru2o9IwMuEYRw)hF zDy89Cr8K-XNkeU<;aa6MT&t9ZYn9xYo^Y@ue~-3qHb#*YM&r!wu{mEa4Vv1{(y5L%+F1S{y3$9h_f@_t!;98|F zxK^nPu2t%S^V%-BR;f!Q3z3Z&g&2*9VJ750{abg=-|M`$e2YHQUcLR9Zr>J)X;u;_ z?zk}>-Cbe}?odqaYn8f)Yn8g-TBRXMj-7`{rTo6q6=y_m*+(`Wi0^sfplQCwZ^>&3PiRMhMy-&2Z-f~e+)=w+vXSWpVHmI{5c^T(KW6Jj@ zUD_O|{hssbp_~)VnOsjVZ)f#SIW@y6(6vf4(>W&^Q?94irt&<})VbZ7cu?)zF@$Q0 z)6kpzYp;DLtA7JOqk@{`#MdhI!nI1haII1=T&vUz_124iq}kgTo|Uy{n4CWy!zI(m z(fUkp8O2QL97Hnhacp3wfv#2Re6u4bk8|10UBfYT*52oLI&$)O&-qec?qBVz)FjhH z?FG12>EMZuoIK7?KRrdC(?$0>aIUgBD%UXhf5_2%5pn7w_b{h(SKetOc8zX#LOLHbNnp7Lk9!tOu7 zdK&0jrM}NNa`IsM!=>SvI&1H{mmE2HFn#S>?%%ie0{p+ukG|~4$%9k>Vfvij%y;DE zQG0h>AENdQdndDR)cnbHe`(B-lLx0sH}O2~-Q(WhnRfp%`(d?jk6-9tdwp*UQG13u zZ#fyY_xD_@H0(`B{vJ#Zzg?f{^brpw&pEx0dqaU=W&LL<_ zc`ox|m-cwY-q$@O9uQwle6RKyXYH*Y>&VHY_Gb3t{(WjMkYoJpPDf52oM!d4=F!0R zI-5M!ns`#?baRd)Cy(0eeoA0YfgI!XNsgR6YH#T2Jde(t!Suf$vM$^I-Q?T|0`Qr{RgP0K#nnO8s|h~Qa#a_ zFR2|0%{hnGBYS@}@vVAk456A@BUjISs5%$-RnYq>dJjka4>=f5q8WCm`>M%(n;m01 z9Ai4hN{3@ihht2KV@!u*OowAkhht2KV@!u*OowAkhqXw@-$O`u{j6nR5$8|aNAC@2 z`&M?=XLF&&?XrNc3%!!f4AF{Z;Yro%C&!!f4A zF{a~PMmij0Ivis<9Ai2hqdU_FK6K{(D^(im9(-yyX)| zPU09zV}5tJHOo3oJ8fj9^tp#*nm63)-@uIuY937C7&GA*GvOFBZO51i$CwGnmFyDsnD(RjQMYbu@A_?y zoIIFbJId-shiTzXf2POYZuM{AMg=twrf`gzaEzI7jG1tZnfRGZIL1sk#!NWIOgP3& zIL1sk#!NWIOgP3&I7WA-egEso--GF*3HnSgK>ry?NCln$%j4;CyMHymDw_TLv<1>~ zv>e=*$J0r_I&$)0`pex`Cu+Rrnu#an@w9KNDb=}nT!mMiE}DWT(F{A(ebqde!ZBvT zF=oOsX2LOM!ZBvTF=oOsX2LOMVwKH=W6Z=nX2LOM!ZBvTF}gEdi|sQomI~TFd5&~- zu0GR0T2Jw1djDgg>NEqJnrv=N|2n{tlLyl&Pgq^(FkN$qKhvSpt^N(%sG#P-6pk?) zjxigQvf&uB;TW^w7_;FRv*8%CaSoUb$Cw?-La2YE5Tg+>bS(Gju^k-wd(>$owomuH z%t1#mQ#zlJb^3fX6w@r4A9d@-G`}O~L}SWxq@!k8z34C<*2ACaXN6Y(25wYP^I&Q_ z#%$pjv*8%C;XJb87_;FRv*8%C;TW^w7_$>y#_&}#{R!J=;BggnjwtK&?z#F*yPn`+ zDjXx7ugrZdFw;Pev1eb-$?Lt${9+`G7L=*lcT`jFl{THtInkWSbEFYVtk@i$jO80E9sGue}C29{jwLq<<1gtme zOWnp0GXKm;j{H47m;LfbeWp|IXQp%vl1y9w5~B7DB;jaoOb0#4InkJMJze#y)k#pM zY8=(ndK!6>bMiXw<+ifuss5c~NTxxLd!wG_oM=qBMsC@!h4wk;zo&CfG-r}i{{yW4 zDW_&@&rq|)P0gR&_db4(bD}XNrz_j?JaTVM@0oW0G5aaSX=Q(^_1pUGM%#{Fw;Pe@v=#|)tDx0 zF75MN$@Ie?!!cF+j%tc&+7!--=1iV*zVtiy?^An$9OLqbIVT!Z*4_ns^f~?ZIOpWW z>0bP@uX;Zjp!Nbe#%=%LoM=qRX-taR)AwG#5)X(kCcam-?d0^z3!D?pndEfzf!x0j zr$CPJ)tQ_VjVU>GKiHZ_1KaCtvffQRDRbKNPtJ+vOxDwg!vb>(Dg{p{{~*8f|{H&c8pOt#wg}53db0QV~oNv zM&THvaEwtn#wZ+P6pk?p#~6iUjKVRx|Lw_T*ggXTs-W$YOwa4C&-C**{h1CwJ`_`5 z$GBlJ=j6rohCcdCXD;(+de~W^nEtJQbN%FZIe#yvi?MyWpPyZ~!k_6E=Y?YG>lkmT z;hemferM=2J?0aCrgJV2#T1S)4~{Vpjxi68F%OP04~{Vpjxi68F%OP04~{Vpjxi68 zF%OP05026O|DkNZmh<=eTxR+e`b>?_n5ox$!^-qfOnn{W51%`7@_27JK0}}BYg-&l zJ>J9jFhengW6XnN%!6ahvmIj|9Ah3FV;&r19vovH9Ah3FV;&r19vovH9HTqa#_t^Y zd%WKto2}3E=pFt{U%4d|Q(wnu?sVkj!F2OjeWtyC^=G=^?odqs*8kUe*B_4jJ(%7( zNuTLo=syF;Y875}I>qi^o%5+^_I+dk$N0a$965O~edvCDrfc?lxH=cxse;xvd5$#n z(NIj`7>nQ-i{KcG;24YG7>nQ-i{KcG;24YG7>nQ-i!hHxaEwK8j74yaMXsOW+|l~s zY6IJ*g0@edBmD>4r+Yk&wSAbG(q}~Cnw`#5L)EF;J(4X4_x44Y_9N=NbWVFmPW0YA zF=n6h>Am|g)AX4R>*&w)vzeio!Z8-XF&4ow7QrzV!7&!WF&4ow7QrzVA-^Ix#-d0T zA{#LZF&Ys=-ZKB6v3&*}SK)Pzbk8h(rbl;XrgXj{-^;u*I~3C_Y-+N(G40uvbD}Z( z3#Rj5(Pz5(L+VGZc>HHPP9 z?KKQ@ND+dgM+F4cVH#c=x2eM26Bv*H#%~%$CONsFTyc(*50IB9XZiw zxq|60TeyGU+6(Y|jPKm;$jO7#IotF({da;RCl5{&cLe4X==T^;n&`;MgVS3(c^;eF zy-j=Hj@d6#wYTR1uD#@ORd9OnSF3*mKc|A4TqD^rz7a_YSZ~yqx{V=Z?Ja%Sk-rDi zGxz8-U5WlPFs=&vo366<2HO3reN;s=?>Pef9^=Q4Idbw~dS#@g+M>PuU*ZAr#l-h& z&T{O>71Jl4bL8Yvd;7KJ{#8!YB-5bBy)iFvPRa8Ju|{rd*HZg^MBYqCP9Dd-P6u24 z2jFzVUOO_9SMw+LyO8JJnlt&{@VR5G{tf(` z3Tl!QJI1$Bdw-8(yy7*^pSDk)%fye>XIeSy5w1O|ZSmgFIHXljcNNGn9`ec~)duEA zMRL6p?;~D3qLq5~|Fw25a8k|vAKy0BQffVgL{e@MB_t~k$5NQT>spmf8aqY)TZ%%& zW1m_TR#HRp42?^2OYY$jVV`w*GLjsj#@*(U$%7|AUCb`JLaZ-@d*x zvu9?0zw`OMf8XD^eCEs;V>L>o+`_0_Mo+Cvg2CoU}Z~ zaT$*$n#05#`Q6FpoZ2<9ChOtbPAZzUWsBUF&8*huq~$RV-oTouO}QWWuLSpFb2_|) zIHlc1YL5Kv$7v0<_+Ld~4i@_-Qztm}TX=~IDspVI$Cxc@QL!eh+BW6Z*1%)(>L!eh+BW6b*QpQJalep)}7dwWeXXWC=C>4iCx`d2btcx@!6 zp&sLmcGC-UB(*7-ww-RybZDpP4Yh!zg8EF(k@gLdn8IUh!gY*In6sO39b*%&V{F28 zj7_+Xu?g2PHsLzPCS1qZgzFfaa2;b4u48P%b&O5EOo#5x`f2?nQ~NG+raK-O&h(~5 zk(h>hjCb^9O+ie%J!H;w^bz4qzj!KpD)7tSy-+ji0Qtsm@{1+W2Qm-Jr($30L{-aB!Cwy7G3Ia` zV-D9b`ZJw2g7wSa?jrA|_oWCfy6{QXM13ZiHudHD zy=}-o+i45F-?No_@rNtSPt(w6nro7r?EcX>rQP-vrz8J4y`dKW=R^GdIL+739^q)R z@H!P#q$cKVz~aJkBX+> z%k;Nbm}$`VWa=^6<22AW^|raG(bHx?pHD2;A4jb;#?dcm(?b8MAf0j>HpSB>UKUv5 zct&y>_HR%9G>40GBkvC}=k&np@ILE(nr@$U*rQ0}yZugnH(b*jXw&qwH5=EnrWN=4 zpYIuej`rBo@`6wJj5Sf4avU^_wI z3M#(yNwM;Rx4;YD0xx(AykKVzq4%_OpT?7NoIZo~v#>lLi`+gJUc#>Dcknn0n`{^dBBgZlB5R-drJgc zn`@HWy%lKFH220A*YWXwAAe38uhHhD(+E{m z?(Mx(T|+G%tDvzbIo(_D)NiTRAgD-A>;-QwD#ku!)RM**`q%o_nw$-&UEJP z9;N}g*KWQxQ!Ov}(>*+z0&?&C1<{y#b8kU!kEVd!>v|v8ADVj_+r0x0YOYD<-h+$H zIh}ooM^ixVz4x#-CoM1dw8K4`0&*|2l>4!z@g8@_cG`WB%Dp|04$r;2mPN=tOI>f8 zL+))GFL(vk4^`%Kp5_M0)OyyO>9mF6OpAAKt9uNuZ{&de@O0WdBKN1)?Ab1^h6)0AFaGHzL9fy98amW^Ufz-UT00UJ^iX&- zX?ejb(58j;P(f|V?Vfc4_aj~wSmJm_YPxg{YqDq@2u}Ywo$C+bq~!&#TFaWKP08tu zN^?%%tYb~oXYxGf{|?vYq~!%4@(F9AHYKOWMsPm{Lc$ZoDeb;U&5>Vy>zN}1I9+g| zQ@@4xsh}dqHhaN#QJW$gW5R|PY{Lt-;RW09f^B%gHoRaPUa$=>*oGHu!wa_I1=~ew zRIFNxBUDlAH~l--AH=lvSaYV2Yzk+3(6~rUL%rZ*oGHu!wa_I1>5j~ZFs>pykLK(6|Jsou)tRZ9q-CK zU46AV(`jw45j~ZFs>pykHw%unjNRh8JwZ3$|gJ+VFyHc)>QjV1K4pboJ-J@)lrwVfJ@@WNOhdikzwO7Gs7*Qd{)skK@ovBJ3&c$v|EpJ~5vr)U?XW|c zDa~z?>61$$F@+bLfft;C7o2gu;0(Or47}hByxz14#Ce(GrRGcz8OThnUjF+%k3A8IX{Z;x-BBJ*Zkv*6-P7hwUm5IS>h_sr zTK;k*rtpF@@Pae&f-~@fGnh9s@Pae&f-~@fGw^~l@Pac%Ll7q-PC}fFNMoF-mf{Fi z)R-GHg!R)rBJ=c1te@#QoVhU%(}216FO89y4sq7rxmEkkQq!DMSyRy5Tl$96=O%d? zJBOK4pGl@~u5s$Ouzo721neWh3(mj`&cF-Kzzfd63(mj`&cF-Kzzfd63(mj`&cF-K zzzfd63(mj`_Gfz92-aUj*Mo{Y&DiEluNmcGO7np5g8%q164OfRA9e4?wCnk-iRK=e zrwi7ZGktp;Go?P0Oi$ksi7C9`MtH%E@PZrR1vkPAZiE-y2rsx1UT`Dwun}HxV^K9C zff$V#gGi$fR7-J$Dk@L^I+69$`pG<9{;fIF(UZfOevymBwAxvF=hlzuj47-sh-urO z%$bg;4QKk%Z;_a~zGaGQR0M5LpLXl-g4d{M;q!8VzG)oqQ$>x_-m^TK0=B0Qv~HJwy=t$e z633IO&nCMsQuTj4&!Z_|dpfEU*Y9mZ&b_+V-7LJ7HPL)8IrZ4doYQXic{BxVBX95F z)UWiYXn~WK$2fK|YYN&%Zs^7R=pyjFi({$clt!qcI1OCNxkr5_=hI~eI`vz4j|wW1 zQ~o?cvGN#~!(&_yk8wFX#^uPj<@A;o@6&iz=H3TbKMTuM(E3TH=kzgW+U}`vrZf9# zGu84K+bv^FK}=^J8jYzp_uhSxHBp~Qre__+^@rx3#`UJBtng@}eGRcMvvQC*r$G&@ zDQJ%T=ds$Hv^>W98agoRdtZL( z(G;-V8*@I_ADVj_9^*b6J(>bI-8a^p)21Ihn%q8<=Wr&D*XE?>r1#F z-C^r{r^d9*y~;nrb8pR*2)Sn|k8#^wZ~7|M4^`&3d$f&^+r8tjG-oAasf zHvH-2l5OfS_FXfBHIZi_&b2;zdI?nPpO^FI-ftgyG`ag{a=SNm7}p+P1I+S(~!%xIca%}`)*-P z)TZRL=qm2V=5%-oaZ0<3)b{_Uwlf=Q@xKb{Gnr45r#bao>NN-|a%{85xb42vc4YgR zh53Z^OQ!2*m@}&^w!m+pwfG}L1}y%%euHYL-y?=)xHwl6cK zK9fvmJQ#^7JjQx>jP>vs>)|oh!(*(6$5>yqA7Xz*Z^QwJ0}*`?2O$ndq>(FXzK


kT>GSwm5-Y+_3#+$;W5_3W2}eA=+E@z6FvF^ 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 diff --git a/wireshark_dumps/g810-spectrum/set_fx_breathing_slow_00ff00.pcapng b/wireshark_dumps/g810-spectrum/set_fx_breathing_slow_00ff00.pcapng deleted file mode 100644 index 8bdce8067ea7e829017b2b3fefca4393c9b564b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 298288 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 VzlzUw#p^Tn3L5K%*U_T-_<#4V+JOK7 diff --git a/wireshark_dumps/g810-spectrum/set_fx_color_00ff00.pcapng b/wireshark_dumps/g810-spectrum/set_fx_color_00ff00.pcapng deleted file mode 100644 index 2a171a3490e7c14ea9e94804d87b455b4a20a38d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 293528 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.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 LZiMw!jq(2glUeq) diff --git a/wireshark_dumps/g810-spectrum/set_fx_color_cycle_slow_00ff00.pcapng b/wireshark_dumps/g810-spectrum/set_fx_color_cycle_slow_00ff00.pcapng deleted file mode 100644 index 5433a4533c00dc7e8664fa96d84bc7c9b49d48fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 180492 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 Hs^k9wf>}Tg diff --git a/wireshark_dumps/g810-spectrum/set_fx_color_wave_horizontal_slow.pcapng b/wireshark_dumps/g810-spectrum/set_fx_color_wave_horizontal_slow.pcapng deleted file mode 100644 index 43f9a3eba5b4c6f632caf304834b323563dadfcc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 180384 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

d^03Kckbt$f@fw10Anp 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 diff --git a/wireshark_dumps/g910-spark/G910_test_blue.pcapng b/wireshark_dumps/g910-spark/G910_test_blue.pcapng deleted file mode 100755 index 5e287a844d2ee98522eaa41fcfd0353a19fdcc90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 230740 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 N{-^xq$NV=N{{?329_0W4 diff --git a/wireshark_dumps/g910-spark/logo_g910.pcapng b/wireshark_dumps/g910-spark/logo_g910.pcapng deleted file mode 100755 index 2723709f5fbd3e11bd16cdd180d6fddd18b816d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172868 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 From 47e246868137e64866bbf6f7032065e93904a405 Mon Sep 17 00:00:00 2001 From: Kevin Pearson Date: Wed, 26 Apr 2017 10:07:00 -0400 Subject: [PATCH 146/187] Unify version string Specified version string in makefile will now propogate to VERSION as a macro appended to CFLAGS. Cleaned up version string, quotes not necessary when specifying major/minor/micro, though this is purely cosmetic. Signed-off-by: Kevin Pearson --- makefile | 7 ++++--- src/helpers/help.cpp | 4 +--- src/helpers/help.h | 4 ++++ 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/makefile b/makefile index 719c410..cd0b179 100644 --- a/makefile +++ b/makefile @@ -16,10 +16,11 @@ includedir?=$(prefix)/include # Program & versioning information PROGN=g810-led -MAJOR="0" -MINOR="2" -MICRO="0" +MAJOR=0 +MINOR=2 +MICRO=0 +CFLAGS+=-DVERSION=\"$(MAJOR).$(MINOR).$(MICRO)\" APPSRCS=src/main.cpp src/helpers/*.cpp src/helpers/*.h LIBSRCS=src/classes/*.cpp src/classes/*.h diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index c77472f..8c33944 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -8,13 +8,11 @@ using namespace std; namespace help { - string version = "0.2.0"; - void usage(char *arg0) { string cmdName = utils::getCmdName(arg0); cout< Date: Thu, 27 Apr 2017 11:44:35 -0400 Subject: [PATCH 147/187] Add support for opening a specific device Allow filtration and matching of specified Device ID, Product ID, Serial Number Fix an issue in listKeyboards (hidapi) with an out of bounds search when using serial number Fix possible null reference problem in listKeyboards (hidapi) that caused rare segfaults when traversing the device enumeration in increments of two Fix handling of output of listKeyboards (hidapi) where it was incrementing the dev list pointer, then accessing the node to look for device serial number (potential security risk) Fix handling of serial number output of listKeyboards (hidapi) to handle wchar_t instead of outputting the memory address Fix issue in listKeyboards (libusb) failure to finish cleaning up USB contexts, leading to a segfault if calling a separate function after listing keyboards. Fix issue in close (libusb) segfaulting if m_hidHandle was null, so added a check. Modify listKeyboards to provide a vector of DeviceInfo objects that can be used by calling applications instead of outputting to stdout directly. Implement a struct to hold information regarding device information and ability for a library caller to query this information to make decisions about the currently targeted device. Signed-off-by: Kevin Pearson --- src/classes/Keyboard.cpp | 357 ++++++++++++++++++++++++++------------- src/classes/Keyboard.h | 19 ++- 2 files changed, 255 insertions(+), 121 deletions(-) diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index 7dae4fd..e422010 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -5,6 +5,7 @@ #include #if defined(hidapi) + #include #include "hidapi/hidapi.h" #elif defined(libusb) #include "libusb-1.0/libusb.h" @@ -20,38 +21,57 @@ LedKeyboard::~LedKeyboard() { } -bool LedKeyboard::listKeyboards() { +vector LedKeyboard::listKeyboards() { + vector deviceList; + #if defined(hidapi) - if (hid_init() < 0) return false; + if (hid_init() < 0) return deviceList; struct hid_device_info *devs, *dev; devs = hid_enumerate(0x0, 0x0); dev = devs; while (dev) { - for (int i=0; i<(int)SupportedKeyboards.size(); i++) { + for (size_t i=0; ivendor_id == SupportedKeyboards[i][0]) { if (dev->product_id == SupportedKeyboards[i][1]) { - cout<<"0x"<vendor_id \ - <<" 0x"<product_id \ - <<" "<serial_number \ - <<" "<path<<" "; + DeviceInfo deviceInfo; + deviceInfo.vendorID=dev->vendor_id; + deviceInfo.productID=dev->product_id; + + if (dev->serial_number != NULL) { + char buf[256]; + wcstombs(buf,dev->serial_number,256); + deviceInfo.serialNumber = string(buf); + } + + if (dev->manufacturer_string != NULL) + { + char buf[256]; + wcstombs(buf,dev->manufacturer_string,256); + deviceInfo.manufacturer = string(buf); + } + + if (dev->product_string != NULL) + { + char buf[256]; + wcstombs(buf,dev->product_string,256); + deviceInfo.product = string(buf); + } + + deviceList.push_back(deviceInfo); dev = dev->next; - cout<serial_number<<" "<path<next; + if (dev != NULL) dev = dev->next; } hid_free_enumeration(devs); - hid_exit(); - return true; #elif defined(libusb) libusb_context *ctx = NULL; - if(libusb_init(&m_ctx) < 0) return false; + if(libusb_init(&m_ctx) < 0) return deviceList; libusb_device **devs; ssize_t cnt = libusb_get_device_list(ctx, &devs); @@ -62,20 +82,37 @@ bool LedKeyboard::listKeyboards() { for (int i=0; i<(int)SupportedKeyboards.size(); i++) { if (desc.idVendor == SupportedKeyboards[i][0]) { if (desc.idProduct == SupportedKeyboards[i][1]) { - cout<<"0x"<= 1) deviceInfo.serialNumber = string((char*)buf); + if (libusb_get_string_descriptor_ascii(m_hidHandle, desc.iManufacturer, buf, 256) >= 1) deviceInfo.manufacturer = string((char*)buf); + if (libusb_get_string_descriptor_ascii(m_hidHandle, desc.iProduct, buf, 256) >= 1) deviceInfo.product = string((char*)buf); + + deviceList.push_back(deviceInfo); + libusb_close(m_hidHandle); + m_hidHandle = NULL; break; } } } } libusb_free_device_list(devs, 1); + + if (m_hidHandle != NULL) { + libusb_close(m_hidHandle); + m_hidHandle = NULL; + } libusb_exit(m_ctx); - return true; + m_ctx = NULL; #endif - return false; + return deviceList; } @@ -86,114 +123,204 @@ bool LedKeyboard::isOpen() { bool LedKeyboard::open() { if (m_isOpen) return true; + return open(0x0,0x0,""); +} + +bool LedKeyboard::open(uint16_t vendorID, uint16_t productID, string serial) { + if (m_isOpen && ! close()) return false; + currentDevice.model = KeyboardModel::unknown; + #if defined(hidapi) - if (hid_init() < 0) return false; - - if (m_keyboardModel == KeyboardModel::unknown) { - struct hid_device_info *devs, *dev; - devs = hid_enumerate(0x0, 0x0); - dev = devs; - m_keyboardModel = KeyboardModel::unknown; - while (dev) { - for (int i=0; i<(int)SupportedKeyboards.size(); i++) { - if (dev->vendor_id == SupportedKeyboards[i][0]) { - if (dev->product_id == SupportedKeyboards[i][1]) { - m_vendorID = dev->vendor_id; - m_productID = dev->product_id; - m_keyboardModel = (KeyboardModel)SupportedKeyboards[i][2]; - break; - } + if (hid_init() < 0) return false; + + struct hid_device_info *devs, *dev; + devs = hid_enumerate(vendorID, productID); + dev = devs; + wstring wideSerial; + + if (!serial.empty()) { + wchar_t tempSerial[256]; + if (mbstowcs(tempSerial, serial.c_str(), 256) < 1) return false; + wideSerial = wstring(tempSerial); + } + + while (dev) { + for (int i=0; i<(int)SupportedKeyboards.size(); i++) { + if (dev->vendor_id == SupportedKeyboards[i][0]) { + if (dev->product_id == SupportedKeyboards[i][1]) { + if (!serial.empty() && dev->serial_number != NULL && wideSerial.compare(dev->serial_number) != 0) break; //Serial didn't match + + if (dev->serial_number != NULL) { + char buf[256]; + wcstombs(buf,dev->serial_number,256); + currentDevice.serialNumber=string(buf); } + + if (dev->manufacturer_string != NULL) + { + char buf[256]; + wcstombs(buf,dev->manufacturer_string,256); + currentDevice.manufacturer = string(buf); + } + + if (dev->product_string != NULL) + { + char buf[256]; + wcstombs(buf,dev->product_string,256); + currentDevice.product = string(buf); + } + + currentDevice.vendorID = dev->vendor_id; + currentDevice.productID = dev->product_id; + currentDevice.model = (KeyboardModel)SupportedKeyboards[i][2]; + break; } - if (m_keyboardModel != KeyboardModel::unknown) break; - dev = dev->next; - } - hid_free_enumeration(devs); - - if (! dev) { - cout<<"Keyboard not found"<next; + } + + hid_free_enumeration(devs); + + if (! dev) { + currentDevice.model = KeyboardModel::unknown; + hid_exit(); + return false; + } + + if (wideSerial.empty()) m_hidHandle = hid_open(currentDevice.vendorID, currentDevice.productID, NULL); + else m_hidHandle = hid_open(currentDevice.vendorID, currentDevice.productID, wideSerial.c_str()); + + if(m_hidHandle == 0) { + hid_exit(); + return false; + } + + m_isOpen = true; + return true; + #elif defined(libusb) - if(libusb_init(&m_ctx) < 0) return false; + if (libusb_init(&m_ctx) < 0) return false; - if (m_keyboardModel == KeyboardModel::unknown) { - libusb_device **devs; - ssize_t cnt = libusb_get_device_list(m_ctx, &devs); - if(cnt >= 0) { - for(ssize_t i = 0; i < cnt; i++) { - libusb_device *device = devs[i]; - libusb_device_descriptor desc; - libusb_get_device_descriptor(device, &desc); + libusb_device **devs; + libusb_device *dev = NULL; + ssize_t cnt = libusb_get_device_list(m_ctx, &devs); + if(cnt >= 0) { + for(ssize_t i = 0; i < cnt; i++) { + libusb_device *device = devs[i]; + libusb_device_descriptor desc; + libusb_get_device_descriptor(device, &desc); + + if (vendorID != 0x0 && desc.idVendor != vendorID) continue; + else if (productID != 0x0 && desc.idProduct != productID) continue; + else if (! serial.empty()) { + if (desc.iSerialNumber <= 0) continue; //Device does not populate serial number + + unsigned char buf[256]; + if (libusb_open(device, &m_hidHandle) != 0){ + m_hidHandle = NULL; + continue; + } + + if (libusb_get_string_descriptor_ascii(m_hidHandle, desc.iSerialNumber, buf, 256) >= 1 && serial.compare((char*)buf) == 0) { + //Make sure entry is a supported keyboard and get model for (int i=0; i<(int)SupportedKeyboards.size(); i++) { if (desc.idVendor == SupportedKeyboards[i][0]) { if (desc.idProduct == SupportedKeyboards[i][1]) { - m_vendorID = desc.idVendor; - m_productID = desc.idProduct; - m_keyboardModel = (KeyboardModel)SupportedKeyboards[i][2]; + if (libusb_get_string_descriptor_ascii(m_hidHandle, desc.iManufacturer, buf, 256) >= 1) currentDevice.manufacturer = string((char*)buf); + if (libusb_get_string_descriptor_ascii(m_hidHandle, desc.iProduct, buf, 256) >= 1) currentDevice.product = string((char*)buf); + currentDevice.serialNumber = serial; + currentDevice.vendorID = desc.idVendor; + currentDevice.productID = desc.idProduct; + currentDevice.model = (KeyboardModel)SupportedKeyboards[i][2]; + + dev = device; + libusb_close(m_hidHandle); + m_hidHandle = NULL; break; } } } - if (m_keyboardModel != KeyboardModel::unknown) break; } - libusb_free_device_list(devs, 1); + else { + libusb_close(m_hidHandle); + m_hidHandle = NULL; + continue; //Serial number set but doesn't match + } } + + //For the case where serial is not specified, find first supported device + for (int i=0; i<(int)SupportedKeyboards.size(); i++) { + if (desc.idVendor == SupportedKeyboards[i][0]) { + if (desc.idProduct == SupportedKeyboards[i][1]) { + unsigned char buf[256]; + if (libusb_open(device, &m_hidHandle) != 0){ + m_hidHandle = NULL; + continue; + } + currentDevice.vendorID = desc.idVendor; + currentDevice.productID = desc.idProduct; + currentDevice.model = (KeyboardModel)SupportedKeyboards[i][2]; + if (libusb_get_string_descriptor_ascii(m_hidHandle, desc.iManufacturer, buf, 256) >= 1) currentDevice.manufacturer = string((char*)buf); + if (libusb_get_string_descriptor_ascii(m_hidHandle, desc.iProduct, buf, 256) >= 1) currentDevice.product = string((char*)buf); + if (libusb_get_string_descriptor_ascii(m_hidHandle, desc.iSerialNumber, buf, 256) >= 1) currentDevice.serialNumber = string((char*)buf); + + libusb_close(m_hidHandle); + m_hidHandle=NULL; + break; + } + } + } + if (currentDevice.model != KeyboardModel::unknown) break; } + libusb_free_device_list(devs, 1); + } + + if (currentDevice.model == KeyboardModel::unknown) { + libusb_exit(m_ctx); + m_ctx = NULL; + return false; + } - if (m_keyboardModel == KeyboardModel::unknown) { - cout<<"Keyboard not found"<(static_cast(keyValues[i].key) >> 8 )) { case LedKeyboard::KeyAddressGroup::logo: - switch (m_keyboardModel) { + switch (currentDevice.model) { case LedKeyboard::KeyboardModel::g610: case LedKeyboard::KeyboardModel::g810: if (SortedKeys[0].size() <= 1 && keyValues[i].key == LedKeyboard::Key::logo) @@ -285,7 +412,7 @@ bool LedKeyboard::setKeys(KeyValueArray keyValues) { if (SortedKeys[1].size() <= 5) SortedKeys[1].push_back(keyValues[i]); break; case LedKeyboard::KeyAddressGroup::multimedia: - switch (m_keyboardModel) { + switch (currentDevice.model) { case LedKeyboard::KeyboardModel::g610: case LedKeyboard::KeyboardModel::g810: if (SortedKeys[2].size() <= 5) SortedKeys[2].push_back(keyValues[i]); @@ -295,7 +422,7 @@ bool LedKeyboard::setKeys(KeyValueArray keyValues) { } break; case LedKeyboard::KeyAddressGroup::gkeys: - switch (m_keyboardModel) { + switch (currentDevice.model) { case LedKeyboard::KeyboardModel::g910: if (SortedKeys[3].size() <= 9) SortedKeys[3].push_back(keyValues[i]); break; @@ -304,7 +431,7 @@ bool LedKeyboard::setKeys(KeyValueArray keyValues) { } break; case LedKeyboard::KeyAddressGroup::keys: - switch (m_keyboardModel) { + switch (currentDevice.model) { case LedKeyboard::KeyboardModel::g610: case LedKeyboard::KeyboardModel::g810: case LedKeyboard::KeyboardModel::g910: @@ -433,7 +560,7 @@ bool LedKeyboard::setGroupKeys(KeyGroup keyGroup, LedKeyboard::Color color) { bool LedKeyboard::setAllKeys(LedKeyboard::Color color) { KeyValueArray keyValues; - switch (m_keyboardModel) { + switch (currentDevice.model) { case KeyboardModel::g213: for (uint8_t rIndex=0x01; rIndex <= 0x05; rIndex++) if (! setRegion(rIndex, color)) return false; return true; @@ -461,7 +588,7 @@ bool LedKeyboard::setAllKeys(LedKeyboard::Color color) { bool LedKeyboard::setMRKey(uint8_t value) { LedKeyboard::byte_buffer_t data; - switch (m_keyboardModel) { + switch (currentDevice.model) { case KeyboardModel::g910: switch (value) { case 0x00: @@ -481,7 +608,7 @@ bool LedKeyboard::setMRKey(uint8_t value) { bool LedKeyboard::setMNKey(uint8_t value) { LedKeyboard::byte_buffer_t data; - switch (m_keyboardModel) { + switch (currentDevice.model) { case KeyboardModel::g910: switch (value) { case 0x00: @@ -507,7 +634,7 @@ bool LedKeyboard::setMNKey(uint8_t value) { bool LedKeyboard::setGKeysMode(uint8_t value) { LedKeyboard::byte_buffer_t data; - switch (m_keyboardModel) { + switch (currentDevice.model) { case KeyboardModel::g910: switch (value) { case 0x00: @@ -527,7 +654,7 @@ bool LedKeyboard::setGKeysMode(uint8_t value) { bool LedKeyboard::setRegion(uint8_t region, LedKeyboard::Color color) { LedKeyboard::byte_buffer_t data; - switch (m_keyboardModel) { + switch (currentDevice.model) { case KeyboardModel::g213: data = { 0x11, 0xff, 0x0c, 0x3a, region, 0x01, color.red, color.green, color.blue }; data.resize(20,0x00); @@ -542,7 +669,7 @@ bool LedKeyboard::setRegion(uint8_t region, LedKeyboard::Color color) { bool LedKeyboard::setStartupMode(StartupMode startupMode) { byte_buffer_t data; - switch (m_keyboardModel) { + switch (currentDevice.model) { case KeyboardModel::g213: case KeyboardModel::g410: case KeyboardModel::g610: @@ -564,7 +691,7 @@ bool LedKeyboard::setStartupMode(StartupMode startupMode) { bool LedKeyboard::setNativeEffect(NativeEffect effect, NativeEffectPart part, uint8_t speed, Color color) { uint8_t protocolByte = 0; - switch (m_keyboardModel) { + switch (currentDevice.model) { case KeyboardModel::g213: protocolByte = 0x0c; if (part == NativeEffectPart::logo) return false; //Does not have logo component @@ -686,7 +813,7 @@ bool LedKeyboard::sendDataInternal(byte_buffer_t &data) { } LedKeyboard::byte_buffer_t LedKeyboard::getKeyGroupAddress(LedKeyboard::KeyAddressGroup keyAddressGroup) { - switch (m_keyboardModel) { + switch (currentDevice.model) { case KeyboardModel::g213: return {}; // Device doesn't support per-key setting case KeyboardModel::g410: diff --git a/src/classes/Keyboard.h b/src/classes/Keyboard.h index d99adda..b87698d 100644 --- a/src/classes/Keyboard.h +++ b/src/classes/Keyboard.h @@ -109,7 +109,15 @@ class LedKeyboard { ctrl_right, shift_right, alt_right, win_right }; - + + typedef struct { + uint16_t vendorID = 0x0; + uint16_t productID = 0x0; + std::string manufacturer = ""; + std::string product = ""; + std::string serialNumber = ""; + KeyboardModel model; + } DeviceInfo; struct Color { uint8_t red; @@ -127,10 +135,12 @@ class LedKeyboard { ~LedKeyboard(); - bool listKeyboards(); + std::vector listKeyboards(); bool isOpen(); bool open(); + bool open(uint16_t vendorID, uint16_t productID, std::string serial); + DeviceInfo getCurrentDevice(); bool close(); KeyboardModel getKeyboardModel(); @@ -152,7 +162,6 @@ class LedKeyboard { bool setNativeEffect(NativeEffect effect, NativeEffectPart part, uint8_t speed, Color color); - private: typedef std::vector byte_buffer_t; @@ -191,9 +200,7 @@ class LedKeyboard { }; bool m_isOpen = false; - uint16_t m_vendorID = 0; - uint16_t m_productID = 0; - KeyboardModel m_keyboardModel = KeyboardModel::unknown; + DeviceInfo currentDevice; #if defined(hidapi) hid_device *m_hidHandle; From 53876ac54e6fe3293b4cf0bbb4f037960efb0126 Mon Sep 17 00:00:00 2001 From: Kevin Pearson Date: Thu, 27 Apr 2017 11:56:57 -0400 Subject: [PATCH 148/187] Add utility to convert string to uint16_t Purpose for this is for command argument parsing of vendor and product IDs Signed-off-by: Kevin Pearson --- src/helpers/utils.cpp | 8 ++++++++ src/helpers/utils.h | 1 + 2 files changed, 9 insertions(+) diff --git a/src/helpers/utils.cpp b/src/helpers/utils.cpp index 56c793d..0ea5e0d 100644 --- a/src/helpers/utils.cpp +++ b/src/helpers/utils.cpp @@ -216,4 +216,12 @@ namespace utils { return true; } + bool parseUInt16(std::string val, uint16_t &uint16) { + if (val.length() == 1) val = "0" + val; + if (val.length() == 2) val = "0" + val; + if (val.length() == 3) val = "0" + val; + if (val.length() != 4) return false; + uint16 = std::stoul("0x" + val, nullptr, 16); + return true; + } } diff --git a/src/helpers/utils.h b/src/helpers/utils.h index 5b7a52c..92de26b 100644 --- a/src/helpers/utils.h +++ b/src/helpers/utils.h @@ -16,6 +16,7 @@ namespace utils { bool parseColor(std::string val, LedKeyboard::Color &color); bool parseSpeed(std::string val, uint8_t &speed); bool parseUInt8(std::string val, uint8_t &uint8); + bool parseUInt16(std::string val, uint16_t &uint16); } From 114fa9b703097aec752fb2123ce9a68d6c8443ef Mon Sep 17 00:00:00 2001 From: Kevin Pearson Date: Thu, 27 Apr 2017 12:39:40 -0400 Subject: [PATCH 149/187] Augment command arg parsing to set specific device Change argument parsing to segregate options from the command Add -dv -dp and -ds options to allow matching a vendor ID, device ID, and/or device serial number. Modify --list-keyboards to parse the DeviceInfo vector and output information to stdout. Signed-off-by: Kevin Pearson --- src/helpers/help.cpp | 13 ++++- src/main.cpp | 127 +++++++++++++++++++++++++++++-------------- 2 files changed, 95 insertions(+), 45 deletions(-) diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index c77472f..dfcb740 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -16,6 +16,8 @@ namespace help { cout<<"--------"< #include #include #include @@ -14,6 +15,27 @@ int commit(LedKeyboard &kbd) { return 1; } +void printDeviceInfo(LedKeyboard::DeviceInfo device) +{ + std::cout<<"Device: "< deviceList = kbd.listKeyboards(); + if (deviceList.empty()) return 1; + + std::vector::iterator iterator; + for (iterator = deviceList.begin(); iterator != deviceList.end(); iterator++) { + LedKeyboard::DeviceInfo device = *iterator; + printDeviceInfo(device); + } + + return 0; +} + int setAllKeys(LedKeyboard &kbd, std::string arg2, bool commit = true) { LedKeyboard::Color color; if (! utils::parseColor(arg2, color)) return 1; @@ -226,47 +248,68 @@ int pipeProfile(LedKeyboard &kbd) { int main(int argc, char **argv) { - if (argc > 1) { - - std::string arg = argv[1]; - - if (arg == "--help" || arg == "-h") help::usage(argv[0]); - else if (arg == "--help-keys") help::keys(argv[0]); - else if (arg == "--help-effects") help::effects(argv[0]); - else if (arg == "--help-samples") help::samples(argv[0]); - - else { - LedKeyboard kbd; - if (arg == "--list-keyboards") kbd.listKeyboards(); - else if (arg == "-c") return commit(kbd); - - else if (argc > 2 && arg == "-a") return setAllKeys(kbd, argv[2]); - else if (argc > 3 && arg == "-g") return setGroupKeys(kbd, argv[2], argv[3]); - else if (argc > 3 && arg == "-k") return setKey(kbd, argv[2], argv[3]); - else if (argc > 2 && arg == "-mr") return setMRKey(kbd, argv[2]); - else if (argc > 2 && arg == "-mn") return setMNKey(kbd, argv[2]); - else if (argc > 2 && arg == "-an") return setAllKeys(kbd, argv[2], false); - else if (argc > 3 && arg == "-gn") return setGroupKeys(kbd, argv[2], argv[3], false); - else if (argc > 3 && arg == "-kn") return setKey(kbd, argv[2], argv[3], false); - else if (argc > 3 && arg == "-r") return setRegion(kbd, argv[2], argv[3]); - - else if (argc > 2 && arg == "-gkm") return setGKeysMode(kbd, argv[2]); - - else if (argc > 2 && arg == "-p") return loadProfile(kbd, argv[2]); - else if (argc > 1 && arg == "-pp") return pipeProfile(kbd); - - else if (argc > 5 && arg == "-fx") return setFX(kbd, argv[2], argv[3], argv[4], argv[5]); - else if (argc > 4 && arg == "-fx") return setFX(kbd, argv[2], argv[3], argv[4]); - - else if (argc > 2 && arg == "--startup-mode") return setStartupMode(kbd, argv[2]); - - else { help::usage(argv[0]); return 1; } - } - - return 0; - + if (argc < 2) { + help::usage(argv[0]); + return 1; } - - help::usage(argv[0]); - return 1; + + LedKeyboard kbd; + std::string serial; + uint16_t vendorID = 0x0; + uint16_t productID = 0x0; + + int argIndex = 1; + while (argIndex < argc) + { + std::string arg = argv[argIndex]; + + // Non-Command arguments + if (argc > (argIndex + 1) && arg == "-ds") { + serial = argv[argIndex + 1]; + argIndex += 2; + continue; + } + else if (argc > (argIndex + 1) && arg == "-dv"){ + if (! utils::parseUInt16(argv[argIndex + 1], vendorID)) return 1; + argIndex += 2; + continue; + } + else if (argc > (argIndex + 1) && arg == "-dp"){ + if (! utils::parseUInt16(argv[argIndex + 1], productID)) return 1; + argIndex += 2; + continue; + } + + if (!kbd.open(vendorID, productID, serial)) { + std::cout << "Matching or compatible device not found" << std::endl; + return 2; + } + // Command arguments, these will cause parsing to ignore anything beyond the command and its arguments + if (arg == "-c") return commit(kbd); + else if (arg == "--help" || arg == "-h") {help::usage(argv[0]); return 0;} + else if (arg == "--help-keys") {help::keys(argv[0]); return 0;} + else if (arg == "--help-effects") {help::effects(argv[0]); return 0;} + else if (arg == "--help-samples") {help::samples(argv[0]); return 0;} + else if (arg == "--list-keyboards") return listKeyboards(kbd); + else if (arg == "--print-device") {printDeviceInfo(kbd.getCurrentDevice()); return 0;} + + else if (argc > (argIndex + 1) && arg == "-a") return setAllKeys(kbd, argv[argIndex + 1]); + else if (argc > (argIndex + 2) && arg == "-g") return setGroupKeys(kbd, argv[argIndex + 1], argv[argIndex + 2]); + else if (argc > (argIndex + 2) && arg == "-k") return setKey(kbd, argv[argIndex + 1], argv[argIndex + 2]); + else if (argc > (argIndex + 1) && arg == "-mr") return setMRKey(kbd, argv[argIndex + 1]); + else if (argc > (argIndex + 1) && arg == "-mn") return setMNKey(kbd, argv[argIndex + 1]); + else if (argc > (argIndex + 1) && arg == "-an") return setAllKeys(kbd, argv[argIndex + 1], false); + else if (argc > (argIndex + 2) && arg == "-gn") return setGroupKeys(kbd, argv[argIndex + 1], argv[argIndex + 2], false); + else if (argc > (argIndex + 2) && arg == "-kn") return setKey(kbd, argv[argIndex + 1], argv[argIndex + 2], false); + else if (argc > (argIndex + 2) && arg == "-r") return setRegion(kbd, argv[argIndex + 1], argv[argIndex + 2]); + else if (argc > (argIndex + 1) && arg == "-gkm") return setGKeysMode(kbd, argv[argIndex + 1]); + else if (argc > (argIndex + 1) && arg == "-p") return loadProfile(kbd, argv[argIndex + 1]); + else if (arg == "-pp") return pipeProfile(kbd); + else if (argc > (argIndex + 4) && arg == "-fx") return setFX(kbd, argv[argIndex + 1], argv[argIndex + 2], argv[argIndex + 3], argv[argIndex + 4]); + else if (argc > (argIndex + 3) && arg == "-fx") return setFX(kbd, argv[argIndex + 1], argv[argIndex + 2], argv[argIndex + 3]); + else if (argc > (argIndex + 1) && arg == "--startup-mode") return setStartupMode(kbd, argv[argIndex + 1]); + else { help::usage(argv[0]); return 1; } + } + + return 0; } From c19d4760cebd5eb31b8006c53df3d8c52c052934 Mon Sep 17 00:00:00 2001 From: Kevin Pearson Date: Sat, 29 Apr 2017 08:54:14 -0400 Subject: [PATCH 150/187] Rearrange argument parsing for help commands Help output does not need to initialize a device, so rearrange the parsing to check for help commands prior to performing any device IO. Signed-off-by: Kevin Pearson --- src/main.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 6cb0667..4f7b229 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -280,19 +280,22 @@ int main(int argc, char **argv) { continue; } + //Commands that do not need to initialize a specific device + if (arg == "--help" || arg == "-h") {help::usage(argv[0]); return 0;} + else if (arg == "--list-keyboards") return listKeyboards(kbd); + else if (arg == "--help-keys") {help::keys(argv[0]); return 0;} + else if (arg == "--help-effects") {help::effects(argv[0]); return 0;} + else if (arg == "--help-samples") {help::samples(argv[0]); return 0;} + + //Initialize the device for use if (!kbd.open(vendorID, productID, serial)) { std::cout << "Matching or compatible device not found" << std::endl; return 2; } + // Command arguments, these will cause parsing to ignore anything beyond the command and its arguments if (arg == "-c") return commit(kbd); - else if (arg == "--help" || arg == "-h") {help::usage(argv[0]); return 0;} - else if (arg == "--help-keys") {help::keys(argv[0]); return 0;} - else if (arg == "--help-effects") {help::effects(argv[0]); return 0;} - else if (arg == "--help-samples") {help::samples(argv[0]); return 0;} - else if (arg == "--list-keyboards") return listKeyboards(kbd); else if (arg == "--print-device") {printDeviceInfo(kbd.getCurrentDevice()); return 0;} - else if (argc > (argIndex + 1) && arg == "-a") return setAllKeys(kbd, argv[argIndex + 1]); else if (argc > (argIndex + 2) && arg == "-g") return setGroupKeys(kbd, argv[argIndex + 1], argv[argIndex + 2]); else if (argc > (argIndex + 2) && arg == "-k") return setKey(kbd, argv[argIndex + 1], argv[argIndex + 2]); From c475fc46fd5f3e4f7583737836f6fa20487f1572 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 29 Apr 2017 16:57:23 +0200 Subject: [PATCH 151/187] Update project --- CONTRIBUTORS.md | 1 + README.md | 5 +++++ TODO.md | 6 ++---- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 7a50138..93320bf 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -49,6 +49,7 @@ * Add g213 protocol (very hard work) * Add support of g213 * Implement underlying device IO as a shared library +* Add multiple keyboard support (very hard work) ## [wextia](https://github.com/wextia) : * Fixed incorrect markdown formatting in README.md diff --git a/README.md b/README.md index 2a62784..fe63f37 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,7 @@ Linux led controller for Logitech G213, G410, G610, G810 and G910 Keyboards.
+`g213-led --help`
`g410-led --help`
`g610-led --help`
`g810-led --help`
@@ -54,6 +55,10 @@ Linux led controller for Logitech G213, G410, G610, G810 and G910 Keyboards.
`g610-led -g fkeys aa # Set intensity of a group of keys`
+## Samples for g213 :
+`g213-led -a 00ff00 # Set all keys green`
+`g213-led -r 1 ff0000 # Set region 1 red`
+ ## Samples with pipe (for effects) :
`g810-led -pp < profilefile # Load a profile`
`echo -e "k w ff0000\nk a ff0000\nk s ff0000\nk d ff0000\nc" | g810-led -pp # Set multiple keys`
diff --git a/TODO.md b/TODO.md index 8d69abf..f8013d3 100644 --- a/TODO.md +++ b/TODO.md @@ -1,12 +1,10 @@ # g810-led TODO ## Tasks (Help wanted) : -* (40%) EASY: [Edit arch logitech gaming keyboard wiki](https://wiki.archlinux.org/index.php/Logitech_Gaming_Keyboards) * (0%) EASY: Add more sample profiles -* (0%) AVERAGE: Add support of multiple keyboards +* (80%) AVERAGE: Add support of multiple keyboards * (0%) AVERAGE: Improve INSTALL.md to support more distributions (And CentOS with hidapi) -* (5%) AVERAGE: Make distributions ready package -* (80%) HARD: Code review (memory leak and other...) +* (10%) AVERAGE: Make distributions ready package * (0%) IMAGINATION: Use a more generic name for project, config dir and systemd units ## Possible enhancements : From 7c96ec51bc21fed3b5b2b938df75b9ef7ab57309 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 29 Apr 2017 16:58:02 +0200 Subject: [PATCH 152/187] Code formating --- src/classes/Keyboard.cpp | 270 +++++++++++++++++++-------------------- src/helpers/utils.cpp | 1 + src/main.cpp | 12 +- 3 files changed, 141 insertions(+), 142 deletions(-) diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index e422010..2ecaceb 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -31,30 +31,30 @@ vector LedKeyboard::listKeyboards() { devs = hid_enumerate(0x0, 0x0); dev = devs; while (dev) { - for (size_t i=0; ivendor_id == SupportedKeyboards[i][0]) { if (dev->product_id == SupportedKeyboards[i][1]) { DeviceInfo deviceInfo; - deviceInfo.vendorID=dev->vendor_id; - deviceInfo.productID=dev->product_id; + deviceInfo.vendorID=dev->vendor_id; + deviceInfo.productID=dev->product_id; if (dev->serial_number != NULL) { char buf[256]; - wcstombs(buf,dev->serial_number,256); + wcstombs(buf, dev->serial_number, 256); deviceInfo.serialNumber = string(buf); } if (dev->manufacturer_string != NULL) { char buf[256]; - wcstombs(buf,dev->manufacturer_string,256); + wcstombs(buf, dev->manufacturer_string, 256); deviceInfo.manufacturer = string(buf); } if (dev->product_string != NULL) { char buf[256]; - wcstombs(buf,dev->product_string,256); + wcstombs(buf, dev->product_string, 256); deviceInfo.product = string(buf); } @@ -84,8 +84,8 @@ vector LedKeyboard::listKeyboards() { if (desc.idProduct == SupportedKeyboards[i][1]) { unsigned char buf[256]; DeviceInfo deviceInfo; - deviceInfo.vendorID=desc.idVendor; - deviceInfo.productID=desc.idProduct; + deviceInfo.vendorID=desc.idVendor; + deviceInfo.productID=desc.idProduct; if (libusb_open(device, &m_hidHandle) != 0) continue; @@ -123,7 +123,7 @@ bool LedKeyboard::isOpen() { bool LedKeyboard::open() { if (m_isOpen) return true; - return open(0x0,0x0,""); + return open(0x0, 0x0, ""); } bool LedKeyboard::open(uint16_t vendorID, uint16_t productID, string serial) { @@ -131,23 +131,22 @@ bool LedKeyboard::open(uint16_t vendorID, uint16_t productID, string serial) { currentDevice.model = KeyboardModel::unknown; #if defined(hidapi) - if (hid_init() < 0) return false; + if (hid_init() < 0) return false; - struct hid_device_info *devs, *dev; - devs = hid_enumerate(vendorID, productID); - dev = devs; - wstring wideSerial; + struct hid_device_info *devs, *dev; + devs = hid_enumerate(vendorID, productID); + dev = devs; + wstring wideSerial; - if (!serial.empty()) { - wchar_t tempSerial[256]; - if (mbstowcs(tempSerial, serial.c_str(), 256) < 1) return false; - wideSerial = wstring(tempSerial); - } + if (!serial.empty()) { + wchar_t tempSerial[256]; + if (mbstowcs(tempSerial, serial.c_str(), 256) < 1) return false; + wideSerial = wstring(tempSerial); + } - while (dev) { - for (int i=0; i<(int)SupportedKeyboards.size(); i++) { - if (dev->vendor_id == SupportedKeyboards[i][0]) { - if (dev->product_id == SupportedKeyboards[i][1]) { + while (dev) { + for (int i=0; i<(int)SupportedKeyboards.size(); i++) { + if (dev->vendor_id == SupportedKeyboards[i][0] && dev->product_id == SupportedKeyboards[i][1]) { if (!serial.empty() && dev->serial_number != NULL && wideSerial.compare(dev->serial_number) != 0) break; //Serial didn't match if (dev->serial_number != NULL) { @@ -176,150 +175,148 @@ bool LedKeyboard::open(uint16_t vendorID, uint16_t productID, string serial) { break; } } + if (currentDevice.model != KeyboardModel::unknown) break; + dev = dev->next; } - if (currentDevice.model != KeyboardModel::unknown) break; - dev = dev->next; - } - hid_free_enumeration(devs); + hid_free_enumeration(devs); - if (! dev) { - currentDevice.model = KeyboardModel::unknown; - hid_exit(); - return false; - } + if (! dev) { + currentDevice.model = KeyboardModel::unknown; + hid_exit(); + return false; + } - if (wideSerial.empty()) m_hidHandle = hid_open(currentDevice.vendorID, currentDevice.productID, NULL); - else m_hidHandle = hid_open(currentDevice.vendorID, currentDevice.productID, wideSerial.c_str()); + if (wideSerial.empty()) m_hidHandle = hid_open(currentDevice.vendorID, currentDevice.productID, NULL); + else m_hidHandle = hid_open(currentDevice.vendorID, currentDevice.productID, wideSerial.c_str()); - if(m_hidHandle == 0) { - hid_exit(); - return false; - } + if(m_hidHandle == 0) { + hid_exit(); + return false; + } - m_isOpen = true; - return true; + m_isOpen = true; + return true; #elif defined(libusb) - if (libusb_init(&m_ctx) < 0) return false; - - libusb_device **devs; - libusb_device *dev = NULL; - ssize_t cnt = libusb_get_device_list(m_ctx, &devs); - if(cnt >= 0) { - for(ssize_t i = 0; i < cnt; i++) { - libusb_device *device = devs[i]; - libusb_device_descriptor desc; - libusb_get_device_descriptor(device, &desc); + if (libusb_init(&m_ctx) < 0) return false; + + libusb_device **devs; + libusb_device *dev = NULL; + ssize_t cnt = libusb_get_device_list(m_ctx, &devs); + if(cnt >= 0) { + for(ssize_t i = 0; i < cnt; i++) { + libusb_device *device = devs[i]; + libusb_device_descriptor desc; + libusb_get_device_descriptor(device, &desc); - if (vendorID != 0x0 && desc.idVendor != vendorID) continue; - else if (productID != 0x0 && desc.idProduct != productID) continue; - else if (! serial.empty()) { - if (desc.iSerialNumber <= 0) continue; //Device does not populate serial number + if (vendorID != 0x0 && desc.idVendor != vendorID) continue; + else if (productID != 0x0 && desc.idProduct != productID) continue; + else if (! serial.empty()) { + if (desc.iSerialNumber <= 0) continue; //Device does not populate serial number - unsigned char buf[256]; - if (libusb_open(device, &m_hidHandle) != 0){ - m_hidHandle = NULL; - continue; - } + unsigned char buf[256]; + if (libusb_open(device, &m_hidHandle) != 0){ + m_hidHandle = NULL; + continue; + } - if (libusb_get_string_descriptor_ascii(m_hidHandle, desc.iSerialNumber, buf, 256) >= 1 && serial.compare((char*)buf) == 0) { - //Make sure entry is a supported keyboard and get model - for (int i=0; i<(int)SupportedKeyboards.size(); i++) { - if (desc.idVendor == SupportedKeyboards[i][0]) { - if (desc.idProduct == SupportedKeyboards[i][1]) { - if (libusb_get_string_descriptor_ascii(m_hidHandle, desc.iManufacturer, buf, 256) >= 1) currentDevice.manufacturer = string((char*)buf); - if (libusb_get_string_descriptor_ascii(m_hidHandle, desc.iProduct, buf, 256) >= 1) currentDevice.product = string((char*)buf); - currentDevice.serialNumber = serial; - currentDevice.vendorID = desc.idVendor; - currentDevice.productID = desc.idProduct; - currentDevice.model = (KeyboardModel)SupportedKeyboards[i][2]; + if (libusb_get_string_descriptor_ascii(m_hidHandle, desc.iSerialNumber, buf, 256) >= 1 && serial.compare((char*)buf) == 0) { + //Make sure entry is a supported keyboard and get model + for (int i=0; i<(int)SupportedKeyboards.size(); i++) { + if (desc.idVendor == SupportedKeyboards[i][0]) { + if (desc.idProduct == SupportedKeyboards[i][1]) { + if (libusb_get_string_descriptor_ascii(m_hidHandle, desc.iManufacturer, buf, 256) >= 1) currentDevice.manufacturer = string((char*)buf); + if (libusb_get_string_descriptor_ascii(m_hidHandle, desc.iProduct, buf, 256) >= 1) currentDevice.product = string((char*)buf); + currentDevice.serialNumber = serial; + currentDevice.vendorID = desc.idVendor; + currentDevice.productID = desc.idProduct; + currentDevice.model = (KeyboardModel)SupportedKeyboards[i][2]; - dev = device; - libusb_close(m_hidHandle); - m_hidHandle = NULL; - break; + dev = device; + libusb_close(m_hidHandle); + m_hidHandle = NULL; + break; + } } } } - } - else { - libusb_close(m_hidHandle); - m_hidHandle = NULL; - continue; //Serial number set but doesn't match - } - } - - //For the case where serial is not specified, find first supported device - for (int i=0; i<(int)SupportedKeyboards.size(); i++) { - if (desc.idVendor == SupportedKeyboards[i][0]) { - if (desc.idProduct == SupportedKeyboards[i][1]) { - unsigned char buf[256]; - if (libusb_open(device, &m_hidHandle) != 0){ - m_hidHandle = NULL; - continue; - } - currentDevice.vendorID = desc.idVendor; - currentDevice.productID = desc.idProduct; - currentDevice.model = (KeyboardModel)SupportedKeyboards[i][2]; - if (libusb_get_string_descriptor_ascii(m_hidHandle, desc.iManufacturer, buf, 256) >= 1) currentDevice.manufacturer = string((char*)buf); - if (libusb_get_string_descriptor_ascii(m_hidHandle, desc.iProduct, buf, 256) >= 1) currentDevice.product = string((char*)buf); - if (libusb_get_string_descriptor_ascii(m_hidHandle, desc.iSerialNumber, buf, 256) >= 1) currentDevice.serialNumber = string((char*)buf); - + else { libusb_close(m_hidHandle); - m_hidHandle=NULL; - break; + m_hidHandle = NULL; + continue; //Serial number set but doesn't match } } + + //For the case where serial is not specified, find first supported device + for (int i=0; i<(int)SupportedKeyboards.size(); i++) { + if (desc.idVendor == SupportedKeyboards[i][0]) { + if (desc.idProduct == SupportedKeyboards[i][1]) { + unsigned char buf[256]; + if (libusb_open(device, &m_hidHandle) != 0){ + m_hidHandle = NULL; + continue; + } + currentDevice.vendorID = desc.idVendor; + currentDevice.productID = desc.idProduct; + currentDevice.model = (KeyboardModel)SupportedKeyboards[i][2]; + if (libusb_get_string_descriptor_ascii(m_hidHandle, desc.iManufacturer, buf, 256) >= 1) currentDevice.manufacturer = string((char*)buf); + if (libusb_get_string_descriptor_ascii(m_hidHandle, desc.iProduct, buf, 256) >= 1) currentDevice.product = string((char*)buf); + if (libusb_get_string_descriptor_ascii(m_hidHandle, desc.iSerialNumber, buf, 256) >= 1) currentDevice.serialNumber = string((char*)buf); + + libusb_close(m_hidHandle); + m_hidHandle=NULL; + break; + } + } + } + if (currentDevice.model != KeyboardModel::unknown) break; } - if (currentDevice.model != KeyboardModel::unknown) break; + libusb_free_device_list(devs, 1); } - libusb_free_device_list(devs, 1); - } - if (currentDevice.model == KeyboardModel::unknown) { - libusb_exit(m_ctx); - m_ctx = NULL; - return false; - } - - if (dev == NULL) m_hidHandle = libusb_open_device_with_vid_pid(m_ctx, currentDevice.vendorID, currentDevice.productID); - else libusb_open(dev, &m_hidHandle); - - if(m_hidHandle == NULL) { - libusb_exit(m_ctx); - m_ctx = NULL; - return false; - } - - if(libusb_kernel_driver_active(m_hidHandle, 1) == 1) { - if(libusb_detach_kernel_driver(m_hidHandle, 1) != 0) { + if (currentDevice.model == KeyboardModel::unknown) { libusb_exit(m_ctx); m_ctx = NULL; return false; } - m_isKernellDetached = true; - } - - if(libusb_claim_interface(m_hidHandle, 1) < 0) { - if(m_isKernellDetached==true) { - libusb_attach_kernel_driver(m_hidHandle, 1); - m_isKernellDetached = false; + + if (dev == NULL) m_hidHandle = libusb_open_device_with_vid_pid(m_ctx, currentDevice.vendorID, currentDevice.productID); + else libusb_open(dev, &m_hidHandle); + + if(m_hidHandle == NULL) { + libusb_exit(m_ctx); + m_ctx = NULL; + return false; } - libusb_exit(m_ctx); - m_ctx = NULL; - return false; - } - - m_isOpen = true; - return true; + + if(libusb_kernel_driver_active(m_hidHandle, 1) == 1) { + if(libusb_detach_kernel_driver(m_hidHandle, 1) != 0) { + libusb_exit(m_ctx); + m_ctx = NULL; + return false; + } + m_isKernellDetached = true; + } + + if(libusb_claim_interface(m_hidHandle, 1) < 0) { + if(m_isKernellDetached==true) { + libusb_attach_kernel_driver(m_hidHandle, 1); + m_isKernellDetached = false; + } + libusb_exit(m_ctx); + m_ctx = NULL; + return false; + } + + m_isOpen = true; + return true; #endif return false; //In case neither is defined } -LedKeyboard::DeviceInfo LedKeyboard::getCurrentDevice() -{ +LedKeyboard::DeviceInfo LedKeyboard::getCurrentDevice() { return currentDevice; } @@ -332,7 +329,6 @@ bool LedKeyboard::close() { m_hidHandle = NULL; hid_exit(); return true; - #elif defined(libusb) if (m_hidHandle == NULL) return true; if(libusb_release_interface(m_hidHandle, 1) != 0) return false; diff --git a/src/helpers/utils.cpp b/src/helpers/utils.cpp index 0ea5e0d..5398838 100644 --- a/src/helpers/utils.cpp +++ b/src/helpers/utils.cpp @@ -224,4 +224,5 @@ namespace utils { uint16 = std::stoul("0x" + val, nullptr, 16); return true; } + } diff --git a/src/main.cpp b/src/main.cpp index 4f7b229..62bb579 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -15,8 +15,7 @@ int commit(LedKeyboard &kbd) { return 1; } -void printDeviceInfo(LedKeyboard::DeviceInfo device) -{ +void printDeviceInfo(LedKeyboard::DeviceInfo device) { std::cout<<"Device: "< (argIndex + 1) && arg == "-mr") return setMRKey(kbd, argv[argIndex + 1]); else if (argc > (argIndex + 1) && arg == "-mn") return setMNKey(kbd, argv[argIndex + 1]); else if (argc > (argIndex + 1) && arg == "-an") return setAllKeys(kbd, argv[argIndex + 1], false); - else if (argc > (argIndex + 2) && arg == "-gn") return setGroupKeys(kbd, argv[argIndex + 1], argv[argIndex + 2], false); + else if (argc > (argIndex + 2) && arg == "-gn") + return setGroupKeys(kbd, argv[argIndex + 1], argv[argIndex + 2], false); else if (argc > (argIndex + 2) && arg == "-kn") return setKey(kbd, argv[argIndex + 1], argv[argIndex + 2], false); else if (argc > (argIndex + 2) && arg == "-r") return setRegion(kbd, argv[argIndex + 1], argv[argIndex + 2]); else if (argc > (argIndex + 1) && arg == "-gkm") return setGKeysMode(kbd, argv[argIndex + 1]); else if (argc > (argIndex + 1) && arg == "-p") return loadProfile(kbd, argv[argIndex + 1]); else if (arg == "-pp") return pipeProfile(kbd); - else if (argc > (argIndex + 4) && arg == "-fx") return setFX(kbd, argv[argIndex + 1], argv[argIndex + 2], argv[argIndex + 3], argv[argIndex + 4]); - else if (argc > (argIndex + 3) && arg == "-fx") return setFX(kbd, argv[argIndex + 1], argv[argIndex + 2], argv[argIndex + 3]); + else if (argc > (argIndex + 4) && arg == "-fx") + return setFX(kbd, argv[argIndex + 1], argv[argIndex + 2], argv[argIndex + 3], argv[argIndex + 4]); + else if (argc > (argIndex + 3) && arg == "-fx") + return setFX(kbd, argv[argIndex + 1], argv[argIndex + 2], argv[argIndex + 3]); else if (argc > (argIndex + 1) && arg == "--startup-mode") return setStartupMode(kbd, argv[argIndex + 1]); else { help::usage(argv[0]); return 1; } } From a0d6156f58e2088a39a355d8260e977348ed15cc Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 29 Apr 2017 17:06:01 +0200 Subject: [PATCH 153/187] Update README --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index fe63f37..6bffe8f 100644 --- a/README.md +++ b/README.md @@ -72,3 +72,7 @@ To link, simply provide `-lg810-led` to the build flags.
To build the g810-led application as a dynamically-linked variant, run the target:
`make bin-linked`
+ +## Dumps : +Dumps of keyboards are now stored in a separate project to preserve a small download size of this project. +You can find them here : [https://github.com/MatMoul/g810-led-resources](https://github.com/MatMoul/g810-led-resources) From 775eb5f5495433f818b712164728b5615d410794 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 29 Apr 2017 17:09:27 +0200 Subject: [PATCH 154/187] Update makeversion --- makerelease | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/makerelease b/makerelease index 7b63a5b..148e1bf 100755 --- a/makerelease +++ b/makerelease @@ -35,9 +35,9 @@ version=$1 sed -i "/string version = /c\\\tstring version = \"$version\";" src/helpers/help.cpp IFS='.' read -ra VPART <<< "$version" -sed -i "/MAJOR=/cMAJOR=\"${VPART[0]}\"" makefile -sed -i "/MINOR=/cMINOR=\"${VPART[1]}\"" makefile -sed -i "/MICRO=/cMICRO=\"${VPART[2]}\"" makefile +sed -i "/MAJOR=/cMAJOR=${VPART[0]}" makefile +sed -i "/MINOR=/cMINOR=${VPART[1]}" makefile +sed -i "/MICRO=/cMICRO=${VPART[2]}" makefile git commit -m "Version $version" makefile src/* git push From 11865ca560fb0b5770a7af730a40592d5653c046 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 29 Apr 2017 17:09:43 +0200 Subject: [PATCH 155/187] Version 0.2.1 --- makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/makefile b/makefile index cd0b179..24d2189 100644 --- a/makefile +++ b/makefile @@ -18,7 +18,7 @@ includedir?=$(prefix)/include PROGN=g810-led MAJOR=0 MINOR=2 -MICRO=0 +MICRO=1 CFLAGS+=-DVERSION=\"$(MAJOR).$(MINOR).$(MICRO)\" APPSRCS=src/main.cpp src/helpers/*.cpp src/helpers/*.h From ebb41b80374f07f4e1aee147b17a26dd6d995d6c Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 6 May 2017 22:41:08 +0200 Subject: [PATCH 156/187] Add new arg -tuk for testing unsuported keyboard --- README.md | 13 +++++++++++++ src/classes/Keyboard.cpp | 9 +++++++++ src/classes/Keyboard.h | 5 +++-- src/helpers/help.cpp | 32 +++++++++++++++++++++++--------- src/main.cpp | 34 +++++++++++++++++++++++++++------- 5 files changed, 75 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 6bffe8f..7094223 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,19 @@ Linux led controller for Logitech G213, G410, G610, G810 and G910 Keyboards.
`echo -e "k w ff0000\nk a ff0000\nk s ff0000\nk d ff0000\nc" | g810-led -pp # Set multiple keys`
+## Testing unsuported keyboards :
+Start by retrieve the VendorID and the ProductID of your keyboard with lsusb.
+`lsusb`
+Sample return :
+`Bus 001 Device 001: ID 046d:c331 Logitech, Inc.`
+In this sample VendorID is 046d and ProductID is c331. Now test your keyboard with all supported protocol :
+`g810-led -dv 046d -dp c331 -tuk 1 -a 000000`
+If your keyboard set all key to off you have found the protocol (1), if not continue.
+`g810-led -dv 046d -dp c331 -tuk 2 -a 000000`
+If your keyboard set all key to off you have found the protocol (2), if not continue.
+`g810-led -dv 046d -dp c331 -tuk 3 -a 000000`
+If your keyboard set all key to off you have found the protocol (3), if not, need new dump.
+ ## Building and linking against the libg810-led library :
Include in implementing source files.
```cpp diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index 2ecaceb..bb13e7c 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -21,6 +21,15 @@ LedKeyboard::~LedKeyboard() { } +bool LedKeyboard::overrideKeyboard(uint16_t vendorID, uint16_t productID, KeyboardModel model) { + if(model==KeyboardModel::unknown) return false; + SupportedKeyboards = { + { vendorID, productID, (u_int16_t)model } + }; + return true; +} + + vector LedKeyboard::listKeyboards() { vector deviceList; diff --git a/src/classes/Keyboard.h b/src/classes/Keyboard.h index b87698d..b98e969 100644 --- a/src/classes/Keyboard.h +++ b/src/classes/Keyboard.h @@ -16,7 +16,7 @@ class LedKeyboard { private: - const std::vector> SupportedKeyboards = { + std::vector> SupportedKeyboards = { { 0x46d, 0xc336, (u_int16_t)KeyboardModel::g213 }, { 0x46d, 0xc330, (u_int16_t)KeyboardModel::g410 }, { 0x46d, 0xc333, (u_int16_t)KeyboardModel::g610 }, @@ -27,7 +27,6 @@ class LedKeyboard { { 0x46d, 0xc335, (u_int16_t)KeyboardModel::g910 } }; - enum class KeyAddressGroup : uint8_t { logo = 0x00, indicators, @@ -135,6 +134,8 @@ class LedKeyboard { ~LedKeyboard(); + bool overrideKeyboard(uint16_t vendorID, uint16_t productID, KeyboardModel model); + std::vector listKeyboards(); bool isOpen(); diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index 573b188..404fd0e 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -53,19 +53,21 @@ namespace help { cout<<" -dv\t\t\t\t\tDevice vendor ID, such as 046d for Logitech. Can be omitted to match any vendor ID"< deviceList = kbd.listKeyboards(); - if (deviceList.empty()) return 1; + if (deviceList.empty()) { + std::cout<<"Matching or compatible device not found !"<::iterator iterator; for (iterator = deviceList.begin(); iterator != deviceList.end(); iterator++) { @@ -267,17 +270,34 @@ int main(int argc, char **argv) { serial = argv[argIndex + 1]; argIndex += 2; continue; - } - else if (argc > (argIndex + 1) && arg == "-dv"){ + } else if (argc > (argIndex + 1) && arg == "-dv"){ if (! utils::parseUInt16(argv[argIndex + 1], vendorID)) return 1; argIndex += 2; continue; - } - else if (argc > (argIndex + 1) && arg == "-dp"){ + } else if (argc > (argIndex + 1) && arg == "-dp"){ if (! utils::parseUInt16(argv[argIndex + 1], productID)) return 1; argIndex += 2; continue; + } else if (argc > (argIndex + 1) && arg == "-tuk"){ + uint8_t kbdProtocol = 0; + if (! utils::parseUInt8(argv[argIndex + 1], kbdProtocol)) return 1; + switch(kbdProtocol) { + case 1: + kbd.overrideKeyboard(vendorID, productID, LedKeyboard::KeyboardModel::g810); + break; + case 2: + kbd.overrideKeyboard(vendorID, productID, LedKeyboard::KeyboardModel::g910); + break; + case 3: + kbd.overrideKeyboard(vendorID, productID, LedKeyboard::KeyboardModel::g213); + break; + default: + break; + } + argIndex += 2; + continue; } + //Commands that do not need to initialize a specific device if (arg == "--help" || arg == "-h") {help::usage(argv[0]); return 0;} @@ -288,10 +308,10 @@ int main(int argc, char **argv) { //Initialize the device for use if (!kbd.open(vendorID, productID, serial)) { - std::cout << "Matching or compatible device not found" << std::endl; + std::cout << "Matching or compatible device not found !" << std::endl; return 2; } - + // Command arguments, these will cause parsing to ignore anything beyond the command and its arguments if (arg == "-c") return commit(kbd); else if (arg == "--print-device") {printDeviceInfo(kbd.getCurrentDevice()); return 0;} From 2e20286a07db236759a4c114f76ecfa73d4b2ca5 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 6 May 2017 23:13:52 +0200 Subject: [PATCH 157/187] Rename TODO.md to CONTRIBUTING.md --- TODO.md => CONTRIBUTING.md | 12 +++++++----- README.md | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) rename TODO.md => CONTRIBUTING.md (81%) diff --git a/TODO.md b/CONTRIBUTING.md similarity index 81% rename from TODO.md rename to CONTRIBUTING.md index f8013d3..34fb7f5 100644 --- a/TODO.md +++ b/CONTRIBUTING.md @@ -1,8 +1,13 @@ -# g810-led TODO +# g810-led CONTRIBUTING + +## Contributing : +* Open an issue before work to hard +* Work on the develop branch +* Add your contribution in CONTRIBUTORS.md ## Tasks (Help wanted) : * (0%) EASY: Add more sample profiles -* (80%) AVERAGE: Add support of multiple keyboards +* (0%) AVERAGE: Add selection of multiple keyboards by index * (0%) AVERAGE: Improve INSTALL.md to support more distributions (And CentOS with hidapi) * (10%) AVERAGE: Make distributions ready package * (0%) IMAGINATION: Use a more generic name for project, config dir and systemd units @@ -12,6 +17,3 @@ * Add a new repo for custom effects * Support country based keybord ([issue 16](https://github.com/MatMoul/g810-led/issues/16) but very hard) * Support of new G Mouse like the G403 ([issue 40](https://github.com/MatMoul/g810-led/issues/40)) - -## Other enhancements : -* Open an issue before work to hard diff --git a/README.md b/README.md index 7094223..48d5162 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Linux led controller for Logitech G213, G410, G610, G810 and G910 Keyboards.
## Contribute and evolution :
-* [TODO.md](https://github.com/MatMoul/g810-led/blob/master/TODO.md) +* [CONTRIBUTING.md](https://github.com/MatMoul/g810-led/blob/master/CONTRIBUTING.md) ## Install :
* [INSTALL.md](https://github.com/MatMoul/g810-led/blob/master/INSTALL.md) From b88e8399787c949b164643c6b218196368fb9036 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sun, 7 May 2017 01:32:31 +0200 Subject: [PATCH 158/187] Add feature flags to filter help messages --- src/helpers/help.cpp | 250 ++++++++++++++++++++++++++----------------- src/helpers/help.h | 32 ++++++ 2 files changed, 183 insertions(+), 99 deletions(-) diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index 404fd0e..7de95c2 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -8,39 +8,63 @@ using namespace std; namespace help { + inline KeyboardFeatures operator|(KeyboardFeatures a, KeyboardFeatures b) { + return static_cast(static_cast(a) | static_cast(b)); + } + + KeyboardFeatures getKeyboardFeatures(string cmdName) { + if(cmdName == "g213-led") return KeyboardFeatures::g213; + else if(cmdName == "g410-led") return KeyboardFeatures::g410; + else if(cmdName == "g610-led") return KeyboardFeatures::g610; + else if(cmdName == "g810-led") return KeyboardFeatures::g810; + else if(cmdName == "g910-led") return KeyboardFeatures::g910; + return KeyboardFeatures::all; + } + + void usage(char *arg0) { string cmdName = utils::getCmdName(arg0); + KeyboardFeatures features = getKeyboardFeatures(cmdName); cout< Date: Sun, 7 May 2017 01:34:37 +0200 Subject: [PATCH 159/187] Update makefile : add make bin --- makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/makefile b/makefile index 24d2189..dca7ce1 100644 --- a/makefile +++ b/makefile @@ -24,10 +24,12 @@ CFLAGS+=-DVERSION=\"$(MAJOR).$(MINOR).$(MICRO)\" APPSRCS=src/main.cpp src/helpers/*.cpp src/helpers/*.h LIBSRCS=src/classes/*.cpp src/classes/*.h -.PHONY: all debug clean setup install uninstall lib install-lib install-dev +.PHONY: all bin debug clean setup install uninstall lib install-lib install-dev all: lib/lib$(PROGN).so bin/$(PROGN) +bin: bin/$(PROGN) + bin/$(PROGN): $(APPSRCS) $(LIBSRCS) @mkdir -p bin $(CC) $(CPPFLAGS) $(CFLAGS) $^ -o $@ $(LDFLAGS) From 612ebf61b114fb5f1a82dbfc01cbadfdfac643c2 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sun, 7 May 2017 02:04:35 +0200 Subject: [PATCH 160/187] Update INSTALL.md --- INSTALL.md | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index 85cc50b..ceb841d 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -35,17 +35,15 @@ Fedora :
## Installation :
`git clone https://github.com/MatMoul/g810-led.git`
`cd g810-led`
-`make` # for hidapi
-`make LIB=libusb` # for libusb
+`make bin` # for hidapi
+`make bin LIB=libusb` # for libusb
`sudo make install`
-`make install-lib` to install the libg810-led library.
-`make install-dev` to install the libg810-led library and headers for development.
-## Building the library :
-The library is built by default when running the `make` (default target "all").
- -To specifically build the library as a standalone component:
-`make lib`
+## Installation of the library (For developpers) :
+`make lib` # for hidapi
+`make lib LIB=libusb` # for libusb
+`sudo make install-lib` to install the libg810-led library.
+`sudo make install-dev` to install the libg810-led library and headers for development.
## Update :
Same as install, but your profile and reboot files are preserved.
@@ -54,10 +52,9 @@ Same as install, but your profile and reboot files are preserved.
`sudo make uninstall`
## Boot profiles :
-If your system use systemd, g810-led has 2 systemd units (g810-led and g810-led-reboot).
-These 2 units set the keyboard profile on boot and reboot.
-Profiles are stored in /etc/g810-led :
-* /etc/g810-led/profile -* /etc/g810-led/reboot +On boot, the keyboard is set with the udev file /etc/udev/rules.d/g810-led.rules
+This file launch the profile stored in /etc/g810-led/profile
+To prevent your keyboard to flash 3 time when you reboot, a systemd unit (g810-led-reboot) is available for this.
+It launch the profile stored in /etc/g810-led/reboot
Samples can be found in /etc/g810-led/samples.
From 2e5519260f5f2cdcd641ace315c9638446a0d669 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sun, 7 May 2017 02:06:04 +0200 Subject: [PATCH 161/187] Version 0.2.2 --- makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/makefile b/makefile index dca7ce1..c9d9547 100644 --- a/makefile +++ b/makefile @@ -18,7 +18,7 @@ includedir?=$(prefix)/include PROGN=g810-led MAJOR=0 MINOR=2 -MICRO=1 +MICRO=2 CFLAGS+=-DVERSION=\"$(MAJOR).$(MINOR).$(MICRO)\" APPSRCS=src/main.cpp src/helpers/*.cpp src/helpers/*.h From ac8ce20fff727df2795f99f4218ad6a381a0e7a8 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sun, 7 May 2017 04:02:34 +0200 Subject: [PATCH 162/187] Expose SupportedKeyboards var in LedKeyboard class --- src/classes/Keyboard.cpp | 9 --------- src/classes/Keyboard.h | 24 +++++++++++------------- src/main.cpp | 6 +++--- 3 files changed, 14 insertions(+), 25 deletions(-) diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index bb13e7c..2ecaceb 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -21,15 +21,6 @@ LedKeyboard::~LedKeyboard() { } -bool LedKeyboard::overrideKeyboard(uint16_t vendorID, uint16_t productID, KeyboardModel model) { - if(model==KeyboardModel::unknown) return false; - SupportedKeyboards = { - { vendorID, productID, (u_int16_t)model } - }; - return true; -} - - vector LedKeyboard::listKeyboards() { vector deviceList; diff --git a/src/classes/Keyboard.h b/src/classes/Keyboard.h index b98e969..86ac406 100644 --- a/src/classes/Keyboard.h +++ b/src/classes/Keyboard.h @@ -16,17 +16,6 @@ class LedKeyboard { private: - std::vector> SupportedKeyboards = { - { 0x46d, 0xc336, (u_int16_t)KeyboardModel::g213 }, - { 0x46d, 0xc330, (u_int16_t)KeyboardModel::g410 }, - { 0x46d, 0xc333, (u_int16_t)KeyboardModel::g610 }, - { 0x46d, 0xc338, (u_int16_t)KeyboardModel::g610 }, - { 0x46d, 0xc331, (u_int16_t)KeyboardModel::g810 }, - { 0x46d, 0xc337, (u_int16_t)KeyboardModel::g810 }, - { 0x46d, 0xc32b, (u_int16_t)KeyboardModel::g910 }, - { 0x46d, 0xc335, (u_int16_t)KeyboardModel::g910 } - }; - enum class KeyAddressGroup : uint8_t { logo = 0x00, indicators, @@ -38,6 +27,17 @@ class LedKeyboard { public: + std::vector> SupportedKeyboards = { + { 0x46d, 0xc336, (u_int16_t)KeyboardModel::g213 }, + { 0x46d, 0xc330, (u_int16_t)KeyboardModel::g410 }, + { 0x46d, 0xc333, (u_int16_t)KeyboardModel::g610 }, + { 0x46d, 0xc338, (u_int16_t)KeyboardModel::g610 }, + { 0x46d, 0xc331, (u_int16_t)KeyboardModel::g810 }, + { 0x46d, 0xc337, (u_int16_t)KeyboardModel::g810 }, + { 0x46d, 0xc32b, (u_int16_t)KeyboardModel::g910 }, + { 0x46d, 0xc335, (u_int16_t)KeyboardModel::g910 } + }; + enum class KeyboardModel : uint8_t { unknown = 0x00, g213, @@ -134,8 +134,6 @@ class LedKeyboard { ~LedKeyboard(); - bool overrideKeyboard(uint16_t vendorID, uint16_t productID, KeyboardModel model); - std::vector listKeyboards(); bool isOpen(); diff --git a/src/main.cpp b/src/main.cpp index 9451fcd..06c76db 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -283,13 +283,13 @@ int main(int argc, char **argv) { if (! utils::parseUInt8(argv[argIndex + 1], kbdProtocol)) return 1; switch(kbdProtocol) { case 1: - kbd.overrideKeyboard(vendorID, productID, LedKeyboard::KeyboardModel::g810); + kbd.SupportedKeyboards = { { vendorID, productID, (u_int16_t)LedKeyboard::KeyboardModel::g810 } }; break; case 2: - kbd.overrideKeyboard(vendorID, productID, LedKeyboard::KeyboardModel::g910); + kbd.SupportedKeyboards = { { vendorID, productID, (u_int16_t)LedKeyboard::KeyboardModel::g910 } }; break; case 3: - kbd.overrideKeyboard(vendorID, productID, LedKeyboard::KeyboardModel::g213); + kbd.SupportedKeyboards = { { vendorID, productID, (u_int16_t)LedKeyboard::KeyboardModel::g213 } }; break; default: break; From bca3eeb46987d40887b8afa46682686e0fbd4cca Mon Sep 17 00:00:00 2001 From: Lauri Leukkunen Date: Wed, 10 May 2017 12:35:13 +0300 Subject: [PATCH 163/187] Add PRO support Initial PRO support, effectively treat as g810 Signed-off-by: Lauri Leukkunen --- README.md | 3 ++- src/classes/Keyboard.cpp | 8 ++++++++ src/classes/Keyboard.h | 6 ++++-- src/helpers/help.cpp | 1 + src/helpers/help.h | 4 ++-- udev/g810-led.rules | 1 + 6 files changed, 18 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 48d5162..187e7db 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # g810-led
-Linux led controller for Logitech G213, G410, G610, G810 and G910 Keyboards.
+Linux led controller for Logitech G213, G410, G610, G810, G910 and G PRO Keyboards.
## Compatible keyboards :
- **G213 Prodigy**
@@ -10,6 +10,7 @@ Linux led controller for Logitech G213, G410, G610, G810 and G910 Keyboards.
- **G910 Orion Spark**
- **G910 Orion Spectrum**
+- **G PRO**
## Contribute and evolution :
* [CONTRIBUTING.md](https://github.com/MatMoul/g810-led/blob/master/CONTRIBUTING.md) diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index 2ecaceb..c6ff8a5 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -359,6 +359,7 @@ bool LedKeyboard::commit() { case KeyboardModel::g410: case KeyboardModel::g610: case KeyboardModel::g810: + case KeyboardModel::gpro: data = { 0x11, 0xff, 0x0c, 0x5a }; break; case KeyboardModel::g910: @@ -394,6 +395,7 @@ bool LedKeyboard::setKeys(KeyValueArray keyValues) { switch (currentDevice.model) { case LedKeyboard::KeyboardModel::g610: case LedKeyboard::KeyboardModel::g810: + case LedKeyboard::KeyboardModel::gpro: if (SortedKeys[0].size() <= 1 && keyValues[i].key == LedKeyboard::Key::logo) SortedKeys[0].push_back(keyValues[i]); break; @@ -411,6 +413,7 @@ bool LedKeyboard::setKeys(KeyValueArray keyValues) { switch (currentDevice.model) { case LedKeyboard::KeyboardModel::g610: case LedKeyboard::KeyboardModel::g810: + case LedKeyboard::KeyboardModel::gpro: if (SortedKeys[2].size() <= 5) SortedKeys[2].push_back(keyValues[i]); break; default: @@ -431,6 +434,7 @@ bool LedKeyboard::setKeys(KeyValueArray keyValues) { case LedKeyboard::KeyboardModel::g610: case LedKeyboard::KeyboardModel::g810: case LedKeyboard::KeyboardModel::g910: + case LedKeyboard::KeyboardModel::gpro: if (SortedKeys[4].size() <= 120) SortedKeys[4].push_back(keyValues[i]); break; case LedKeyboard::KeyboardModel::g410: @@ -564,6 +568,7 @@ bool LedKeyboard::setAllKeys(LedKeyboard::Color color) { case KeyboardModel::g610: case KeyboardModel::g810: case KeyboardModel::g910: + case KeyboardModel::gpro: for (uint8_t i = 0; i < keyGroupLogo.size(); i++) keyValues.push_back({keyGroupLogo[i], color}); for (uint8_t i = 0; i < keyGroupIndicators.size(); i++) keyValues.push_back({keyGroupIndicators[i], color}); for (uint8_t i = 0; i < keyGroupMultimedia.size(); i++) keyValues.push_back({keyGroupMultimedia[i], color}); @@ -670,6 +675,7 @@ bool LedKeyboard::setStartupMode(StartupMode startupMode) { case KeyboardModel::g410: case KeyboardModel::g610: case KeyboardModel::g810: + case KeyboardModel::gpro: data = { 0x11, 0xff, 0x0d, 0x5a, 0x00, 0x01 }; break; case KeyboardModel::g910: @@ -695,6 +701,7 @@ bool LedKeyboard::setNativeEffect(NativeEffect effect, NativeEffectPart part, ui case KeyboardModel::g410: case KeyboardModel::g610: // Unconfirmed case KeyboardModel::g810: + case KeyboardModel::gpro: protocolByte = 0x0d; break; case KeyboardModel::g910: @@ -815,6 +822,7 @@ LedKeyboard::byte_buffer_t LedKeyboard::getKeyGroupAddress(LedKeyboard::KeyAddre case KeyboardModel::g410: case KeyboardModel::g610: case KeyboardModel::g810: + case KeyboardModel::gpro: switch (keyAddressGroup) { case LedKeyboard::KeyAddressGroup::logo: return { 0x11, 0xff, 0x0c, 0x3a, 0x00, 0x10, 0x00, 0x01 }; diff --git a/src/classes/Keyboard.h b/src/classes/Keyboard.h index 86ac406..9fd7bd3 100644 --- a/src/classes/Keyboard.h +++ b/src/classes/Keyboard.h @@ -35,7 +35,8 @@ class LedKeyboard { { 0x46d, 0xc331, (u_int16_t)KeyboardModel::g810 }, { 0x46d, 0xc337, (u_int16_t)KeyboardModel::g810 }, { 0x46d, 0xc32b, (u_int16_t)KeyboardModel::g910 }, - { 0x46d, 0xc335, (u_int16_t)KeyboardModel::g910 } + { 0x46d, 0xc335, (u_int16_t)KeyboardModel::g910 }, + { 0x46d, 0xc339, (u_int16_t)KeyboardModel::gpro } }; enum class KeyboardModel : uint8_t { @@ -44,7 +45,8 @@ class LedKeyboard { g410, g610, g810, - g910 + g910, + gpro }; enum class StartupMode : uint8_t { wave = 0x01, diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index 7de95c2..b7987af 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -18,6 +18,7 @@ namespace help { else if(cmdName == "g610-led") return KeyboardFeatures::g610; else if(cmdName == "g810-led") return KeyboardFeatures::g810; else if(cmdName == "g910-led") return KeyboardFeatures::g910; + else if(cmdName == "gpro-led") return KeyboardFeatures::gpro; return KeyboardFeatures::all; } diff --git a/src/helpers/help.h b/src/helpers/help.h index 9fc177c..b07dc9f 100644 --- a/src/helpers/help.h +++ b/src/helpers/help.h @@ -30,8 +30,8 @@ namespace help { g410 = rgb | commit | setall | setgroup | setkey | poweronfx, g610 = intensity | commit | logo1 | numpad | multimedia | setall | setgroup | setkey | setindicators | poweronfx, g810 = rgb | commit | logo1 | numpad | multimedia | setall | setgroup | setkey | setindicators | poweronfx, - g910 = rgb | commit | logo1 | logo2 | numpad | multimedia | gkeys | setall | setgroup | setkey | setindicators | poweronfx - + g910 = rgb | commit | logo1 | logo2 | numpad | multimedia | gkeys | setall | setgroup | setkey | setindicators | poweronfx, + gpro = rgb | commit | logo1 | multimedia | setall | setgroup | setkey | setindicators | poweronfx }; inline KeyboardFeatures operator|(KeyboardFeatures a, KeyboardFeatures b); diff --git a/udev/g810-led.rules b/udev/g810-led.rules index a4edd40..fa3c75a 100644 --- a/udev/g810-led.rules +++ b/udev/g810-led.rules @@ -6,3 +6,4 @@ ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c3 ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c337", MODE="666" RUN+="/usr/bin/g810-led -p /etc/g810-led/profile" ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c32b", MODE="666" RUN+="/usr/bin/g910-led -p /etc/g810-led/profile" ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c335", MODE="666" RUN+="/usr/bin/g910-led -p /etc/g810-led/profile" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c339", MODE="666" RUN+="/usr/bin/g810-led -p /etc/g810-led/profile" From c5408032662114b7ed74ffc7a08c41d8e2ac4e98 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 12 May 2017 21:29:12 +0200 Subject: [PATCH 164/187] Make gpro ready for release --- README.md | 5 +++-- makefile | 2 ++ udev/g810-led.rules | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 187e7db..3a75db5 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # g810-led
-Linux led controller for Logitech G213, G410, G610, G810, G910 and G PRO Keyboards.
+Linux led controller for Logitech G213, G410, G610, G810, G910 and GPRO Keyboards.
## Compatible keyboards :
- **G213 Prodigy**
@@ -10,7 +10,7 @@ Linux led controller for Logitech G213, G410, G610, G810, G910 and G PRO Keyboar - **G810 Orion Spectrum**
- **G910 Orion Spark**
- **G910 Orion Spectrum**
-- **G PRO**
+- **GPRO**
## Contribute and evolution :
* [CONTRIBUTING.md](https://github.com/MatMoul/g810-led/blob/master/CONTRIBUTING.md) @@ -24,6 +24,7 @@ Linux led controller for Logitech G213, G410, G610, G810, G910 and G PRO Keyboar `g610-led --help`
`g810-led --help`
`g910-led --help`
+`gpro-led --help`
`g810-led --help-keys`
`g810-led --help-effects`
diff --git a/makefile b/makefile index c9d9547..f783b27 100644 --- a/makefile +++ b/makefile @@ -62,6 +62,7 @@ setup: @test -s $(DESTDIR)/usr/bin/g410-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g410-led @test -s $(DESTDIR)/usr/bin/g610-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g610-led @test -s $(DESTDIR)/usr/bin/g910-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g910-led + @test -s $(DESTDIR)/usr/bin/g910-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/gpro-led @cp sample_profiles/* $(DESTDIR)/etc/$(PROGN)/samples @cp udev/$(PROGN).rules $(DESTDIR)/etc/udev/rules.d @test -s /usr/bin/systemd-run && \ @@ -107,6 +108,7 @@ uninstall: @rm /usr/bin/g410-led @rm /usr/bin/g610-led @rm /usr/bin/g910-led + @rm /usr/bin/gpro-led @rm /usr/bin/$(PROGN) @rm /etc/udev/rules.d/$(PROGN).rules diff --git a/udev/g810-led.rules b/udev/g810-led.rules index fa3c75a..74abe19 100644 --- a/udev/g810-led.rules +++ b/udev/g810-led.rules @@ -6,4 +6,4 @@ ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c3 ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c337", MODE="666" RUN+="/usr/bin/g810-led -p /etc/g810-led/profile" ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c32b", MODE="666" RUN+="/usr/bin/g910-led -p /etc/g810-led/profile" ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c335", MODE="666" RUN+="/usr/bin/g910-led -p /etc/g810-led/profile" -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c339", MODE="666" RUN+="/usr/bin/g810-led -p /etc/g810-led/profile" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c339", MODE="666" RUN+="/usr/bin/g810-led -p /etc/gpro-led/profile" From 16e4784164905cdcb83abe89f03e1e5b04b6bf92 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 12 May 2017 21:34:08 +0200 Subject: [PATCH 165/187] Version 0.2.3 --- makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/makefile b/makefile index f783b27..408b946 100644 --- a/makefile +++ b/makefile @@ -18,7 +18,7 @@ includedir?=$(prefix)/include PROGN=g810-led MAJOR=0 MINOR=2 -MICRO=2 +MICRO=3 CFLAGS+=-DVERSION=\"$(MAJOR).$(MINOR).$(MICRO)\" APPSRCS=src/main.cpp src/helpers/*.cpp src/helpers/*.h From 9b7158c6f080aebe284d1a5d22765ef3283afd4b Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 12 May 2017 22:55:24 +0200 Subject: [PATCH 166/187] Add resources repo --- CONTRIBUTING.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 34fb7f5..a2cf439 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,12 +1,13 @@ # g810-led CONTRIBUTING +## Share your profile or make dump : +* [https://github.com/MatMoul/g810-led-resources](https://github.com/MatMoul/g810-led-resources) + ## Contributing : * Open an issue before work to hard * Work on the develop branch -* Add your contribution in CONTRIBUTORS.md ## Tasks (Help wanted) : -* (0%) EASY: Add more sample profiles * (0%) AVERAGE: Add selection of multiple keyboards by index * (0%) AVERAGE: Improve INSTALL.md to support more distributions (And CentOS with hidapi) * (10%) AVERAGE: Make distributions ready package @@ -14,6 +15,5 @@ ## Possible enhancements : * Add deamon mode for custom effects (Add G Keys handler [issue 39](https://github.com/MatMoul/g810-led/issues/39), [CReimer](https://github.com/CReimer/g910-gkey-uinput))) -* Add a new repo for custom effects * Support country based keybord ([issue 16](https://github.com/MatMoul/g810-led/issues/16) but very hard) * Support of new G Mouse like the G403 ([issue 40](https://github.com/MatMoul/g810-led/issues/40)) From a77afe92f493b40050720248c3c356b64095aba5 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sat, 13 May 2017 01:12:39 +0200 Subject: [PATCH 167/187] bug correction --- makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/makefile b/makefile index 408b946..49e68ee 100644 --- a/makefile +++ b/makefile @@ -62,7 +62,7 @@ setup: @test -s $(DESTDIR)/usr/bin/g410-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g410-led @test -s $(DESTDIR)/usr/bin/g610-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g610-led @test -s $(DESTDIR)/usr/bin/g910-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g910-led - @test -s $(DESTDIR)/usr/bin/g910-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/gpro-led + @test -s $(DESTDIR)/usr/bin/gpro-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/gpro-led @cp sample_profiles/* $(DESTDIR)/etc/$(PROGN)/samples @cp udev/$(PROGN).rules $(DESTDIR)/etc/udev/rules.d @test -s /usr/bin/systemd-run && \ From 3f40566063493e51adafb361477e7e55d33e530f Mon Sep 17 00:00:00 2001 From: Lauri Leukkunen Date: Sun, 14 May 2017 09:46:34 +0300 Subject: [PATCH 168/187] Fix gpro and uninstall target GPRO udev rule needs to use the /etc/g810-led/profile path like the others. Removed uninstallation of g810-led.service that is not being installed in setup. Signed-off-by: Lauri Leukkunen --- makefile | 2 -- udev/g810-led.rules | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/makefile b/makefile index 49e68ee..4a16420 100644 --- a/makefile +++ b/makefile @@ -97,9 +97,7 @@ uninstall-dev: uninstall: @test -s /usr/bin/systemd-run && \ - systemctl disable $(PROGN) && \ systemctl disable $(PROGN)-reboot && \ - rm $(SYSTEMDDIR)/system/$(PROGN).service && \ rm $(SYSTEMDDIR)/system/$(PROGN)-reboot.service && \ systemctl daemon-reload && \ rm -R /etc/$(PROGN) diff --git a/udev/g810-led.rules b/udev/g810-led.rules index 74abe19..edd72ea 100644 --- a/udev/g810-led.rules +++ b/udev/g810-led.rules @@ -6,4 +6,4 @@ ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c3 ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c337", MODE="666" RUN+="/usr/bin/g810-led -p /etc/g810-led/profile" ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c32b", MODE="666" RUN+="/usr/bin/g910-led -p /etc/g810-led/profile" ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c335", MODE="666" RUN+="/usr/bin/g910-led -p /etc/g810-led/profile" -ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c339", MODE="666" RUN+="/usr/bin/g810-led -p /etc/gpro-led/profile" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c339", MODE="666" RUN+="/usr/bin/gpro-led -p /etc/g810-led/profile" From 7646be49cbd3ad34c0be794ab6da033eee8964bf Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sun, 14 May 2017 19:02:40 +0200 Subject: [PATCH 169/187] Version 0.2.4 --- makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/makefile b/makefile index 4a16420..3ad6241 100644 --- a/makefile +++ b/makefile @@ -18,7 +18,7 @@ includedir?=$(prefix)/include PROGN=g810-led MAJOR=0 MINOR=2 -MICRO=3 +MICRO=4 CFLAGS+=-DVERSION=\"$(MAJOR).$(MINOR).$(MICRO)\" APPSRCS=src/main.cpp src/helpers/*.cpp src/helpers/*.h From d6d976322e074e470059eed6dce7ff53dcb11709 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 19 May 2017 20:37:49 +0200 Subject: [PATCH 170/187] Bug Solution 1 --- src/classes/Keyboard.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index c6ff8a5..472e45a 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -781,20 +781,23 @@ bool LedKeyboard::setNativeEffect(NativeEffect effect, NativeEffectPart part, ui bool LedKeyboard::sendDataInternal(byte_buffer_t &data) { - if (! m_isOpen) return false; - if (data.size() > 0) { #if defined(hidapi) + if (! open()) return false; data.insert(data.begin(), 0x00); if (hid_write(m_hidHandle, const_cast(data.data()), data.size()) < 0) { std::cout<<"Error: Can not write to hidraw, try with the libusb version"<(data2.data()), data2.size(), 1); + */ return true; #elif defined(libusb) + if (! m_isOpen) return false; if (data.size() > 20) { if(libusb_control_transfer(m_hidHandle, 0x21, 0x09, 0x0212, 1, const_cast(data.data()), data.size(), 2000) < 0) From a1631f15c717ed6a911a36c8d354d0b23a7863d2 Mon Sep 17 00:00:00 2001 From: Krutonium Date: Sat, 20 May 2017 18:21:31 -0400 Subject: [PATCH 171/187] Create colors --- sample_profiles/colors | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 sample_profiles/colors diff --git a/sample_profiles/colors b/sample_profiles/colors new file mode 100644 index 0000000..5f0f39f --- /dev/null +++ b/sample_profiles/colors @@ -0,0 +1,28 @@ +# Sample profile using Groups of Keys and Single Characters. + +g logo 000096 # Blue +g indicators ffffff # White +g multimedia 009600 # Green +g fkeys ff7700 # Orange +g modifiers ff7700 # Orange +g arrows 0000ff # Red +g numeric 00ff00 # Green +g functions ffffff # White +g keys ff00ff # Purple +g gkeys ffffff # White +k tilde ff0000 # Red +k W 0000ff # Blue { +k A 0000ff +k S 0000ff +k D 0000ff # } +k 1 ff0000 # Red { +k 2 ff0000 +k 3 ff0000 +k 4 ff0000 +k 5 ff0000 +k 6 ff0000 +k 7 ff0000 +k 8 ff0000 +k 9 ff0000 +k 0 ff0000 # } +c # Commit changes From f7edfe31bf8a6afb6a15efca9aaa649e3972fb96 Mon Sep 17 00:00:00 2001 From: Krutonium Date: Sat, 20 May 2017 18:26:23 -0400 Subject: [PATCH 172/187] Fix Bad Character on fkeys as noticed in #85 --- sample_profiles/colors | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sample_profiles/colors b/sample_profiles/colors index 5f0f39f..d87c950 100644 --- a/sample_profiles/colors +++ b/sample_profiles/colors @@ -3,7 +3,7 @@ g logo 000096 # Blue g indicators ffffff # White g multimedia 009600 # Green -g fkeys ff7700 # Orange +g fkeys ff7700 # Orange g modifiers ff7700 # Orange g arrows 0000ff # Red g numeric 00ff00 # Green From 99447196561c5e083e7bd1f2fda69d8cebdab4fd Mon Sep 17 00:00:00 2001 From: MatMoul Date: Sun, 21 May 2017 00:37:50 +0200 Subject: [PATCH 173/187] Version 0.2.5 --- makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/makefile b/makefile index 3ad6241..56738fd 100644 --- a/makefile +++ b/makefile @@ -18,7 +18,7 @@ includedir?=$(prefix)/include PROGN=g810-led MAJOR=0 MINOR=2 -MICRO=4 +MICRO=5 CFLAGS+=-DVERSION=\"$(MAJOR).$(MINOR).$(MICRO)\" APPSRCS=src/main.cpp src/helpers/*.cpp src/helpers/*.h From 07aa2410584b2e593bc879468799de6404290539 Mon Sep 17 00:00:00 2001 From: Kevin Pearson Date: Fri, 26 May 2017 10:11:16 -0400 Subject: [PATCH 174/187] Move handling of NativeEffectPart::all to library Raw use of 0xFF as the effectpart byte is device-undefined and was implemented as a wrapper around mutliplle native effects calls as well as handling the indicators. Logic was previously implemented in the application, allowing for library use in this particular case to have undefined behavior. Signed-off-by: Kevin Pearson --- src/classes/Keyboard.cpp | 35 +++++++++++++++++++++++++++++---- src/main.cpp | 42 ++++++---------------------------------- 2 files changed, 37 insertions(+), 40 deletions(-) diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index 472e45a..51be1bd 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -692,7 +692,34 @@ bool LedKeyboard::setStartupMode(StartupMode startupMode) { bool LedKeyboard::setNativeEffect(NativeEffect effect, NativeEffectPart part, uint8_t speed, Color color) { uint8_t protocolByte = 0; - + + // NativeEffectPart::all is not in the device protocol, but an alias for both keys and logo, plus indicators + if (part == LedKeyboard::NativeEffectPart::all) { + switch (effect) { + case LedKeyboard::NativeEffect::color: + if (! setGroupKeys(LedKeyboard::KeyGroup::indicators, color)) return false; + if (! commit()) return false; + break; + case LedKeyboard::NativeEffect::breathing: + if (! setGroupKeys(LedKeyboard::KeyGroup::indicators, color)) return false;; + if (! commit()) return false;; + break; + case LedKeyboard::NativeEffect::cycle: + case LedKeyboard::NativeEffect::hwave: + case LedKeyboard::NativeEffect::vwave: + case LedKeyboard::NativeEffect::cwave: + if (! setGroupKeys( + LedKeyboard::KeyGroup::indicators, + LedKeyboard::Color({0xff, 0xff, 0xff})) + ) return false; + if (! commit()) return false; + break; + } + return ( + setNativeEffect(effect, LedKeyboard::NativeEffectPart::keys, speed, color) && + setNativeEffect(effect, LedKeyboard::NativeEffectPart::logo, speed, color)); + } + switch (currentDevice.model) { case KeyboardModel::g213: protocolByte = 0x0c; @@ -710,11 +737,11 @@ bool LedKeyboard::setNativeEffect(NativeEffect effect, NativeEffectPart part, ui default: return false; } - + byte_buffer_t data; - + switch (effect) { - + case NativeEffect::color: data = { 0x11, 0xff, protocolByte, 0x3c, (uint8_t)part, 0x01, color.red, color.green, color.blue, 0x02 }; break; diff --git a/src/main.cpp b/src/main.cpp index 06c76db..467589a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -110,7 +110,7 @@ int setFX(LedKeyboard &kbd, std::string arg2, std::string arg3, std::string arg4 LedKeyboard::Color color; if (! utils::parseNativeEffect(arg2, effect)) return 1; if (! utils::parseNativeEffectPart(arg3, effectPart)) return 1; - + switch (effect) { case LedKeyboard::NativeEffect::color: if (! utils::parseColor(arg4, color)) return 1; @@ -127,42 +127,12 @@ int setFX(LedKeyboard &kbd, std::string arg2, std::string arg3, std::string arg4 if (! utils::parseSpeed(arg4, speed)) return 1; break; } - + if (! kbd.open()) return 1; - - int retval = 0; - - switch (effectPart) { - case LedKeyboard::NativeEffectPart::all: - switch (effect) { - case LedKeyboard::NativeEffect::color: - if (! kbd.setGroupKeys(LedKeyboard::KeyGroup::indicators, color)) retval = 1; - if (! kbd.commit()) retval = 1; - break; - case LedKeyboard::NativeEffect::breathing: - if (! kbd.setGroupKeys(LedKeyboard::KeyGroup::indicators, color)) retval = 1; - if (! kbd.commit()) retval = 1; - break; - case LedKeyboard::NativeEffect::cycle: - case LedKeyboard::NativeEffect::hwave: - case LedKeyboard::NativeEffect::vwave: - case LedKeyboard::NativeEffect::cwave: - if (! kbd.setGroupKeys( - LedKeyboard::KeyGroup::indicators, - LedKeyboard::Color({0xff, 0xff, 0xff})) - ) retval = 1; - if (! kbd.commit()) retval = 1; - break; - } - if (! kbd.setNativeEffect(effect, LedKeyboard::NativeEffectPart::keys, speed, color)) retval = 1; - if (! kbd.setNativeEffect(effect, LedKeyboard::NativeEffectPart::logo, speed, color)) retval = 1; - break; - default: - if (! kbd.setNativeEffect(effect, effectPart, speed, color)) retval = 1; - break; - } - - return retval; + + if (! kbd.setNativeEffect(effect, effectPart, speed, color)) return 1; + + return 0; } From 7d409924896f37b464442313f0603b2cba92e883 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 26 May 2017 17:26:43 +0200 Subject: [PATCH 175/187] patch multiple keyboards lost support --- src/classes/Keyboard.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index 51be1bd..0a20607 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -810,7 +810,7 @@ bool LedKeyboard::setNativeEffect(NativeEffect effect, NativeEffectPart part, ui bool LedKeyboard::sendDataInternal(byte_buffer_t &data) { if (data.size() > 0) { #if defined(hidapi) - if (! open()) return false; + if (! open(currentDevice.vendorID, currentDevice.productID, currentDevice.serialNumber)) return false; data.insert(data.begin(), 0x00); if (hid_write(m_hidHandle, const_cast(data.data()), data.size()) < 0) { std::cout<<"Error: Can not write to hidraw, try with the libusb version"< Date: Fri, 26 May 2017 20:14:05 +0200 Subject: [PATCH 176/187] Update CONTRIBUTING.md --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a2cf439..5ef5d45 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -11,7 +11,7 @@ * (0%) AVERAGE: Add selection of multiple keyboards by index * (0%) AVERAGE: Improve INSTALL.md to support more distributions (And CentOS with hidapi) * (10%) AVERAGE: Make distributions ready package -* (0%) IMAGINATION: Use a more generic name for project, config dir and systemd units +* (0%) IMAGINATION: Use a more generic name for project, config dir and systemd units ([issue 29](https://github.com/MatMoul/g810-led/issues/29)) ## Possible enhancements : * Add deamon mode for custom effects (Add G Keys handler [issue 39](https://github.com/MatMoul/g810-led/issues/39), [CReimer](https://github.com/CReimer/g910-gkey-uinput))) From a3469402baf9b8a2fc0ff700608d17773cf415a3 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 26 May 2017 20:14:59 +0200 Subject: [PATCH 177/187] Version 0.2.6 --- makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/makefile b/makefile index 56738fd..0674f7e 100644 --- a/makefile +++ b/makefile @@ -18,7 +18,7 @@ includedir?=$(prefix)/include PROGN=g810-led MAJOR=0 MINOR=2 -MICRO=5 +MICRO=6 CFLAGS+=-DVERSION=\"$(MAJOR).$(MINOR).$(MICRO)\" APPSRCS=src/main.cpp src/helpers/*.cpp src/helpers/*.h From 476bf8b5af6e909c31b505270fdfc1bb2deba8ce Mon Sep 17 00:00:00 2001 From: MatMoul Date: Tue, 1 Aug 2017 22:51:20 +0200 Subject: [PATCH 178/187] Add G413 support --- src/classes/Keyboard.cpp | 5 +++++ src/classes/Keyboard.h | 2 ++ src/helpers/help.cpp | 1 + src/helpers/help.h | 1 + 4 files changed, 9 insertions(+) diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index 0a20607..3e3bc1f 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -564,6 +564,9 @@ bool LedKeyboard::setAllKeys(LedKeyboard::Color color) { case KeyboardModel::g213: for (uint8_t rIndex=0x01; rIndex <= 0x05; rIndex++) if (! setRegion(rIndex, color)) return false; return true; + case KeyboardModel::g413: + setNativeEffect(NativeEffect::color, NativeEffectPart::keys, 0, color); + return true; case KeyboardModel::g410: case KeyboardModel::g610: case KeyboardModel::g810: @@ -722,6 +725,7 @@ bool LedKeyboard::setNativeEffect(NativeEffect effect, NativeEffectPart part, ui switch (currentDevice.model) { case KeyboardModel::g213: + case KeyboardModel::g413: protocolByte = 0x0c; if (part == NativeEffectPart::logo) return false; //Does not have logo component break; @@ -848,6 +852,7 @@ bool LedKeyboard::sendDataInternal(byte_buffer_t &data) { LedKeyboard::byte_buffer_t LedKeyboard::getKeyGroupAddress(LedKeyboard::KeyAddressGroup keyAddressGroup) { switch (currentDevice.model) { case KeyboardModel::g213: + case KeyboardModel::g413: return {}; // Device doesn't support per-key setting case KeyboardModel::g410: case KeyboardModel::g610: diff --git a/src/classes/Keyboard.h b/src/classes/Keyboard.h index 9fd7bd3..5e6dca8 100644 --- a/src/classes/Keyboard.h +++ b/src/classes/Keyboard.h @@ -30,6 +30,7 @@ class LedKeyboard { std::vector> SupportedKeyboards = { { 0x46d, 0xc336, (u_int16_t)KeyboardModel::g213 }, { 0x46d, 0xc330, (u_int16_t)KeyboardModel::g410 }, + { 0x46d, 0xc33a, (u_int16_t)KeyboardModel::g413 }, { 0x46d, 0xc333, (u_int16_t)KeyboardModel::g610 }, { 0x46d, 0xc338, (u_int16_t)KeyboardModel::g610 }, { 0x46d, 0xc331, (u_int16_t)KeyboardModel::g810 }, @@ -43,6 +44,7 @@ class LedKeyboard { unknown = 0x00, g213, g410, + g413, g610, g810, g910, diff --git a/src/helpers/help.cpp b/src/helpers/help.cpp index b7987af..eb95f87 100644 --- a/src/helpers/help.cpp +++ b/src/helpers/help.cpp @@ -15,6 +15,7 @@ namespace help { KeyboardFeatures getKeyboardFeatures(string cmdName) { if(cmdName == "g213-led") return KeyboardFeatures::g213; else if(cmdName == "g410-led") return KeyboardFeatures::g410; + else if(cmdName == "g413-led") return KeyboardFeatures::g413; else if(cmdName == "g610-led") return KeyboardFeatures::g610; else if(cmdName == "g810-led") return KeyboardFeatures::g810; else if(cmdName == "g910-led") return KeyboardFeatures::g910; diff --git a/src/helpers/help.h b/src/helpers/help.h index b07dc9f..f014638 100644 --- a/src/helpers/help.h +++ b/src/helpers/help.h @@ -28,6 +28,7 @@ namespace help { g213 = rgb | logo1 | numpad | multimedia | setall | setregion | setindicators | poweronfx, g410 = rgb | commit | setall | setgroup | setkey | poweronfx, + g413 = intensity | setall, g610 = intensity | commit | logo1 | numpad | multimedia | setall | setgroup | setkey | setindicators | poweronfx, g810 = rgb | commit | logo1 | numpad | multimedia | setall | setgroup | setkey | setindicators | poweronfx, g910 = rgb | commit | logo1 | logo2 | numpad | multimedia | gkeys | setall | setgroup | setkey | setindicators | poweronfx, From 0a7ee5b858bac024cffdc6747b9e4899b8952767 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Wed, 2 Aug 2017 11:43:03 +0200 Subject: [PATCH 179/187] Add G413 support --- README.md | 1 + makefile | 2 ++ src/classes/Keyboard.cpp | 5 +++-- udev/g810-led.rules | 1 + 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3a75db5..494a373 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ Linux led controller for Logitech G213, G410, G610, G810, G910 and GPRO Keyboard ## Compatible keyboards :
- **G213 Prodigy**
- **G410 Atlas Spectrum**
+- **G413 Carbon**
- **G610 Orion Brown**
- **G610 Orion Red**
- **G810 Orion Spectrum**
diff --git a/makefile b/makefile index 0674f7e..fc1feec 100644 --- a/makefile +++ b/makefile @@ -60,6 +60,7 @@ setup: @cp bin/$(PROGN) $(DESTDIR)/usr/bin @test -s $(DESTDIR)/usr/bin/g213-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g213-led @test -s $(DESTDIR)/usr/bin/g410-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g410-led + @test -s $(DESTDIR)/usr/bin/g413-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g413-led @test -s $(DESTDIR)/usr/bin/g610-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g610-led @test -s $(DESTDIR)/usr/bin/g910-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g910-led @test -s $(DESTDIR)/usr/bin/gpro-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/gpro-led @@ -104,6 +105,7 @@ uninstall: @rm /usr/bin/g213-led @rm /usr/bin/g410-led + @rm /usr/bin/g413-led @rm /usr/bin/g610-led @rm /usr/bin/g910-led @rm /usr/bin/gpro-led diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index 3e3bc1f..f657b2d 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -355,7 +355,8 @@ bool LedKeyboard::commit() { byte_buffer_t data; switch (currentDevice.model) { case KeyboardModel::g213: - break; // Keyboard is non-transactional + case KeyboardModel::g413: + return true; // Keyboard is non-transactional case KeyboardModel::g410: case KeyboardModel::g610: case KeyboardModel::g810: @@ -727,7 +728,7 @@ bool LedKeyboard::setNativeEffect(NativeEffect effect, NativeEffectPart part, ui case KeyboardModel::g213: case KeyboardModel::g413: protocolByte = 0x0c; - if (part == NativeEffectPart::logo) return false; //Does not have logo component + if (part == NativeEffectPart::logo) return true; //Does not have logo component break; case KeyboardModel::g410: case KeyboardModel::g610: // Unconfirmed diff --git a/udev/g810-led.rules b/udev/g810-led.rules index edd72ea..d0935f3 100644 --- a/udev/g810-led.rules +++ b/udev/g810-led.rules @@ -1,5 +1,6 @@ ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c336", MODE="666" RUN+="/usr/bin/g213-led -p /etc/g810-led/profile" ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c330", MODE="666" RUN+="/usr/bin/g410-led -p /etc/g810-led/profile" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c33a", MODE="666" RUN+="/usr/bin/g413-led -p /etc/g810-led/profile" ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c333", MODE="666" RUN+="/usr/bin/g610-led -p /etc/g810-led/profile" ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c338", MODE="666" RUN+="/usr/bin/g610-led -p /etc/g810-led/profile" ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c331", MODE="666" RUN+="/usr/bin/g810-led -p /etc/g810-led/profile" From 1b480ae4c2150693118c2f66991d2f627f5aeb14 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Wed, 9 Aug 2017 17:02:37 +0200 Subject: [PATCH 180/187] Version 0.2.7 --- makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/makefile b/makefile index fc1feec..019636d 100644 --- a/makefile +++ b/makefile @@ -18,7 +18,7 @@ includedir?=$(prefix)/include PROGN=g810-led MAJOR=0 MINOR=2 -MICRO=6 +MICRO=7 CFLAGS+=-DVERSION=\"$(MAJOR).$(MINOR).$(MICRO)\" APPSRCS=src/main.cpp src/helpers/*.cpp src/helpers/*.h From f820ef62df8956e5f56fad375e3ab6f9d819718d Mon Sep 17 00:00:00 2001 From: MatMoul Date: Wed, 9 Aug 2017 22:06:35 +0200 Subject: [PATCH 181/187] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 494a373..c08fb6b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # g810-led
-Linux led controller for Logitech G213, G410, G610, G810, G910 and GPRO Keyboards.
+Linux led controller for Logitech G213, G410, g413, G610, G810, G910 and GPRO Keyboards.
## Compatible keyboards :
- **G213 Prodigy**
@@ -22,6 +22,7 @@ Linux led controller for Logitech G213, G410, G610, G810, G910 and GPRO Keyboard ## Help :
`g213-led --help`
`g410-led --help`
+`g413-led --help`
`g610-led --help`
`g810-led --help`
`g910-led --help`
From 7961599cec41a44889d5b63efd4c502502649424 Mon Sep 17 00:00:00 2001 From: GREAT_BIG_BUSHY_BEARD Date: Wed, 25 Oct 2017 23:37:43 +0100 Subject: [PATCH 182/187] Fix spelling mistakes and grammar in README and INSTALL --- INSTALL.md | 13 ++++++------- README.md | 4 ++-- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index ceb841d..02c9786 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -11,11 +11,11 @@ ## hidapi vs libusb :
hidapi is a newer implementation but needs more testing.
hidapi is more responsive than libusb (~20ms vs ~150ms).
-hidapi seem not work on CentOS, writing on hidraw is not allowed.
-hidapi is recommended but if you encounter problem on your system, switch to libusb.
+hidapi seems to not work on CentOS, writing to hidraw is not allowed.
+hidapi is recommended but if you encounter a problem on your system, switch to libusb.
-## Installation by repos :
+## Installation using repos :
ArchLinux (aur) :
`yaourt -S g810-led-git` # with yaourt
`pacaur -S g810-led-git` # with pacaur
@@ -39,7 +39,7 @@ Fedora :
`make bin LIB=libusb` # for libusb
`sudo make install`
-## Installation of the library (For developpers) :
+## Installation of the library (For developers) :
`make lib` # for hidapi
`make lib LIB=libusb` # for libusb
`sudo make install-lib` to install the libg810-led library.
@@ -53,8 +53,7 @@ Same as install, but your profile and reboot files are preserved.
## Boot profiles :
On boot, the keyboard is set with the udev file /etc/udev/rules.d/g810-led.rules
-This file launch the profile stored in /etc/g810-led/profile
-To prevent your keyboard to flash 3 time when you reboot, a systemd unit (g810-led-reboot) is available for this.
-It launch the profile stored in /etc/g810-led/reboot
+This file launches the profile stored in /etc/g810-led/profile
+To prevent your keyboard flashing 3 times when you reboot use the systemd unit (g810-led-reboot).
Samples can be found in /etc/g810-led/samples.
diff --git a/README.md b/README.md index c08fb6b..0bad66e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # g810-led
-Linux led controller for Logitech G213, G410, g413, G610, G810, G910 and GPRO Keyboards.
+Linux led controller for Logitech G213, G410, G413, G610, G810, G910 and GPRO Keyboards.
## Compatible keyboards :
- **G213 Prodigy**
@@ -68,7 +68,7 @@ Linux led controller for Logitech G213, G410, g413, G610, G810, G910 and GPRO Ke `echo -e "k w ff0000\nk a ff0000\nk s ff0000\nk d ff0000\nc" | g810-led -pp # Set multiple keys`
## Testing unsuported keyboards :
-Start by retrieve the VendorID and the ProductID of your keyboard with lsusb.
+Start by retrieving the VendorID and the ProductID of your keyboard using lsusb.
`lsusb`
Sample return :
`Bus 001 Device 001: ID 046d:c331 Logitech, Inc.`
From 33912d8dcea61fb0d3e9c9d93183987857b5b6db Mon Sep 17 00:00:00 2001 From: GREAT_BIG_BUSHY_BEARD Date: Wed, 25 Oct 2017 23:38:46 +0100 Subject: [PATCH 183/187] Fixed heading consistency --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0bad66e..9c1e021 100644 --- a/README.md +++ b/README.md @@ -54,12 +54,12 @@ Linux led controller for Logitech G213, G410, G413, G610, G810, G910 and GPRO Ke `g810-led -kn d ff0000 # Set color of a key with no action`
`g810-led -c # Commit all changes`
-## Samples for g610 :
+## Samples for G610 :
`g610-led -a 60 # Set intensity of all keys`
`g610-led -k logo ff # Set intensity of a key`
`g610-led -g fkeys aa # Set intensity of a group of keys`
-## Samples for g213 :
+## Samples for G213 :
`g213-led -a 00ff00 # Set all keys green`
`g213-led -r 1 ff0000 # Set region 1 red`
From 68551c65ecebcf08415fa73fcd9b67fe92e31c66 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Wed, 1 Aug 2018 23:37:29 +0200 Subject: [PATCH 184/187] Add support to G512 and G513 --- README.md | 6 +++++- makefile | 5 +++++ src/classes/Keyboard.cpp | 4 ++++ src/classes/Keyboard.h | 2 ++ udev/g810-led.rules | 1 + 5 files changed, 17 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9c1e021..9d653d4 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,13 @@ # g810-led
-Linux led controller for Logitech G213, G410, G413, G610, G810, G910 and GPRO Keyboards.
+Linux led controller for Logitech G213, G410, G413, G512, G513, G610, G810, G910 and GPRO Keyboards.
## Compatible keyboards :
- **G213 Prodigy**
- **G410 Atlas Spectrum**
- **G413 Carbon**
+- **G512 Carbon**
+- **G513 Carbon**
- **G610 Orion Brown**
- **G610 Orion Red**
- **G810 Orion Spectrum**
@@ -23,6 +25,8 @@ Linux led controller for Logitech G213, G410, G413, G610, G810, G910 and GPRO Ke `g213-led --help`
`g410-led --help`
`g413-led --help`
+`g512-led --help`
+`g513-led --help`
`g610-led --help`
`g810-led --help`
`g910-led --help`
diff --git a/makefile b/makefile index 019636d..e912e8c 100644 --- a/makefile +++ b/makefile @@ -61,6 +61,8 @@ setup: @test -s $(DESTDIR)/usr/bin/g213-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g213-led @test -s $(DESTDIR)/usr/bin/g410-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g410-led @test -s $(DESTDIR)/usr/bin/g413-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g413-led + @test -s $(DESTDIR)/usr/bin/g512-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g512-led + @test -s $(DESTDIR)/usr/bin/g513-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g513-led @test -s $(DESTDIR)/usr/bin/g610-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g610-led @test -s $(DESTDIR)/usr/bin/g910-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/g910-led @test -s $(DESTDIR)/usr/bin/gpro-led || ln -s /usr/bin/$(PROGN) $(DESTDIR)/usr/bin/gpro-led @@ -106,6 +108,9 @@ uninstall: @rm /usr/bin/g213-led @rm /usr/bin/g410-led @rm /usr/bin/g413-led + @rm /usr/bin/g413-led + @rm /usr/bin/g512-led + @rm /usr/bin/g513-led @rm /usr/bin/g610-led @rm /usr/bin/g910-led @rm /usr/bin/gpro-led diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index f657b2d..9c54f9d 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -358,6 +358,7 @@ bool LedKeyboard::commit() { case KeyboardModel::g413: return true; // Keyboard is non-transactional case KeyboardModel::g410: + case KeyboardModel::g513: case KeyboardModel::g610: case KeyboardModel::g810: case KeyboardModel::gpro: @@ -569,6 +570,7 @@ bool LedKeyboard::setAllKeys(LedKeyboard::Color color) { setNativeEffect(NativeEffect::color, NativeEffectPart::keys, 0, color); return true; case KeyboardModel::g410: + case KeyboardModel::g513: case KeyboardModel::g610: case KeyboardModel::g810: case KeyboardModel::g910: @@ -731,6 +733,7 @@ bool LedKeyboard::setNativeEffect(NativeEffect effect, NativeEffectPart part, ui if (part == NativeEffectPart::logo) return true; //Does not have logo component break; case KeyboardModel::g410: + case KeyboardModel::g513: case KeyboardModel::g610: // Unconfirmed case KeyboardModel::g810: case KeyboardModel::gpro: @@ -856,6 +859,7 @@ LedKeyboard::byte_buffer_t LedKeyboard::getKeyGroupAddress(LedKeyboard::KeyAddre case KeyboardModel::g413: return {}; // Device doesn't support per-key setting case KeyboardModel::g410: + case KeyboardModel::g513: case KeyboardModel::g610: case KeyboardModel::g810: case KeyboardModel::gpro: diff --git a/src/classes/Keyboard.h b/src/classes/Keyboard.h index 5e6dca8..76e178f 100644 --- a/src/classes/Keyboard.h +++ b/src/classes/Keyboard.h @@ -31,6 +31,7 @@ class LedKeyboard { { 0x46d, 0xc336, (u_int16_t)KeyboardModel::g213 }, { 0x46d, 0xc330, (u_int16_t)KeyboardModel::g410 }, { 0x46d, 0xc33a, (u_int16_t)KeyboardModel::g413 }, + { 0x46d, 0xc33c, (u_int16_t)KeyboardModel::g513 }, { 0x46d, 0xc333, (u_int16_t)KeyboardModel::g610 }, { 0x46d, 0xc338, (u_int16_t)KeyboardModel::g610 }, { 0x46d, 0xc331, (u_int16_t)KeyboardModel::g810 }, @@ -45,6 +46,7 @@ class LedKeyboard { g213, g410, g413, + g513, g610, g810, g910, diff --git a/udev/g810-led.rules b/udev/g810-led.rules index d0935f3..08c0d63 100644 --- a/udev/g810-led.rules +++ b/udev/g810-led.rules @@ -1,6 +1,7 @@ ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c336", MODE="666" RUN+="/usr/bin/g213-led -p /etc/g810-led/profile" ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c330", MODE="666" RUN+="/usr/bin/g410-led -p /etc/g810-led/profile" ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c33a", MODE="666" RUN+="/usr/bin/g413-led -p /etc/g810-led/profile" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c33c", MODE="666" RUN+="/usr/bin/g513-led -p /etc/g810-led/profile" ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c333", MODE="666" RUN+="/usr/bin/g610-led -p /etc/g810-led/profile" ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c338", MODE="666" RUN+="/usr/bin/g610-led -p /etc/g810-led/profile" ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c331", MODE="666" RUN+="/usr/bin/g810-led -p /etc/g810-led/profile" From 5fa7760e53a0a0234983bfad622f6614374989c2 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Fri, 31 Aug 2018 01:25:29 +0200 Subject: [PATCH 185/187] makefile: Use standard variables and reuse the environment --- makefile | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/makefile b/makefile index 019636d..bb3f368 100644 --- a/makefile +++ b/makefile @@ -1,18 +1,18 @@ -CC=g++ -CFLAGS=-Wall -O2 -std=gnu++11 +CXX?=g++ +CXXFLAGS?=-Wall -O2 -std=gnu++11 LIB?=hidapi ifeq ($(LIB),libusb) CPPFLAGS=-Dlibusb - LDFLAGS=-lusb-1.0 + LDFLAGS+=-lusb-1.0 else CPPFLAGS=-Dhidapi - LDFLAGS=-lhidapi-hidraw + LDFLAGS+=-lhidapi-hidraw endif SYSTEMDDIR?=/usr/lib/systemd -prefix?=$(DESTDIR)/usr -libdir?=$(prefix)/lib -includedir?=$(prefix)/include +PREFIX?=$(DESTDIR)/usr +libdir?=$(PREFIX)/lib +includedir?=$(PREFIX)/include # Program & versioning information PROGN=g810-led @@ -20,7 +20,7 @@ MAJOR=0 MINOR=2 MICRO=7 -CFLAGS+=-DVERSION=\"$(MAJOR).$(MINOR).$(MICRO)\" +CXXFLAGS+=-DVERSION=\"$(MAJOR).$(MINOR).$(MICRO)\" APPSRCS=src/main.cpp src/helpers/*.cpp src/helpers/*.h LIBSRCS=src/classes/*.cpp src/classes/*.h @@ -32,19 +32,19 @@ bin: bin/$(PROGN) bin/$(PROGN): $(APPSRCS) $(LIBSRCS) @mkdir -p bin - $(CC) $(CPPFLAGS) $(CFLAGS) $^ -o $@ $(LDFLAGS) + $(CXX) $(CPPFLAGS) $(CXXFLAGS) $^ -o $@ $(LDFLAGS) -debug: CFLAGS += -g -Wextra -pedantic +debug: CXXFLAGS += -g -Wextra -pedantic debug: bin/$(PROGN) lib/lib$(PROGN).so: $(LIBSRCS) @mkdir -p lib - $(CC) $(CPPFLAGS) $(CFLAGS) -fPIC -shared -Wl,-soname,lib$(PROGN).so -o lib/lib$(PROGN).so.$(MAJOR).$(MINOR).$(MICRO) $^ $(LDFLAGS) + $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -shared -Wl,-soname,lib$(PROGN).so -o lib/lib$(PROGN).so.$(MAJOR).$(MINOR).$(MICRO) $^ $(LDFLAGS) @ln -sf lib$(PROGN).so.$(MAJOR).$(MINOR).$(MICRO) lib/lib$(PROGN).so bin-linked: lib/lib$(PROGN).so @mkdir -p bin - $(CC) $(CPPFLAGS) $(CFLAGS) $(APPSRCS) -o bin/$(PROGN) $(LDFLAGS) -L./lib -l$(PROGN) + $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(APPSRCS) -o bin/$(PROGN) $(LDFLAGS) -L./lib -l$(PROGN) lib: lib/lib$(PROGN).so From 87b2de95c94f8828b7d1f1b570d2bab55649b783 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Sun, 9 Sep 2018 05:15:17 +0200 Subject: [PATCH 186/187] makefile: Fix issues on code review Code review: https://github.com/gentoo/gentoo/pull/9476#discussion_r216123340 --- makefile | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/makefile b/makefile index bb3f368..707517d 100644 --- a/makefile +++ b/makefile @@ -1,12 +1,12 @@ CXX?=g++ -CXXFLAGS?=-Wall -O2 -std=gnu++11 +CXXFLAGS?=-Wall -O2 LIB?=hidapi ifeq ($(LIB),libusb) CPPFLAGS=-Dlibusb - LDFLAGS+=-lusb-1.0 + LIBS=-lusb-1.0 else CPPFLAGS=-Dhidapi - LDFLAGS+=-lhidapi-hidraw + LIBS=-lhidapi-hidraw endif SYSTEMDDIR?=/usr/lib/systemd @@ -20,7 +20,7 @@ MAJOR=0 MINOR=2 MICRO=7 -CXXFLAGS+=-DVERSION=\"$(MAJOR).$(MINOR).$(MICRO)\" +CXXFLAGS+=-std=gnu++11 -DVERSION=\"$(MAJOR).$(MINOR).$(MICRO)\" APPSRCS=src/main.cpp src/helpers/*.cpp src/helpers/*.h LIBSRCS=src/classes/*.cpp src/classes/*.h @@ -32,19 +32,19 @@ bin: bin/$(PROGN) bin/$(PROGN): $(APPSRCS) $(LIBSRCS) @mkdir -p bin - $(CXX) $(CPPFLAGS) $(CXXFLAGS) $^ -o $@ $(LDFLAGS) + $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) $^ -o $@ $(LIBS) debug: CXXFLAGS += -g -Wextra -pedantic debug: bin/$(PROGN) lib/lib$(PROGN).so: $(LIBSRCS) @mkdir -p lib - $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -shared -Wl,-soname,lib$(PROGN).so -o lib/lib$(PROGN).so.$(MAJOR).$(MINOR).$(MICRO) $^ $(LDFLAGS) + $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) -fPIC -shared -Wl,-soname,lib$(PROGN).so -o lib/lib$(PROGN).so.$(MAJOR).$(MINOR).$(MICRO) $^ $(LIBS) @ln -sf lib$(PROGN).so.$(MAJOR).$(MINOR).$(MICRO) lib/lib$(PROGN).so bin-linked: lib/lib$(PROGN).so @mkdir -p bin - $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(APPSRCS) -o bin/$(PROGN) $(LDFLAGS) -L./lib -l$(PROGN) + $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) $(APPSRCS) -o bin/$(PROGN) $(LIBS) -L./lib -l$(PROGN) lib: lib/lib$(PROGN).so From b707deb6d3eee419aaa0d27db7b0a538ee4d835a Mon Sep 17 00:00:00 2001 From: MatMoul Date: Thu, 13 Sep 2018 22:07:08 +0200 Subject: [PATCH 187/187] Version 0.2.8 --- makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/makefile b/makefile index e76a786..3741c14 100644 --- a/makefile +++ b/makefile @@ -18,7 +18,7 @@ includedir?=$(PREFIX)/include PROGN=g810-led MAJOR=0 MINOR=2 -MICRO=7 +MICRO=8 CXXFLAGS+=-std=gnu++11 -DVERSION=\"$(MAJOR).$(MINOR).$(MICRO)\" APPSRCS=src/main.cpp src/helpers/*.cpp src/helpers/*.h

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 J+Y9ya{{VNQKAHdk diff --git a/wireshark_dumps/g810-spectrum/set_fx_color_wave_vertical_slow.pcapng b/wireshark_dumps/g810-spectrum/set_fx_color_wave_vertical_slow.pcapng deleted file mode 100644 index 0740a07f404c207d0ab5de5e3572beb1e5d8475f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 202708 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›bjn?owe8NP1Zy?Bc{~#`MvP%$Yv@J2R!r(+m>}&y9Mi~V>vnZ4!qHv>F(>inYIY~V(RHJ zzT1;ExiLL+r#aJ!H+nN&KGPRdc#OsH7^lKxoEq~O>jgT3V<$u^9)ri20go{Q9%DvV z+}90!yCV`YJv)T;yD{zlh&j{bq25gU#`@RXpL%+XEl02>H>P7BGiSOz&ztE*3w<%| z^4B%+7!g+^(hxyJI^r5c55%>I>kt`;o`_zE-jVGInU1@S^~d*jvG2UmJn}Nu&-AkZ zNfVeU{l<@+d#`=gSDj|WcBRopqGP1xlUWmuDd*m!mO0ZI_c)l+{yOF{QqI;a@x>G# z<92wA+ud)X3*(yHpL{)!HPM)oY3&cqna*CsOetsb{mJGp zd@)rXV<9}oG)Av=Zq5&&#ZzeotRA zEn95PbSwH-5TYQ&Z>18`TCx6X;dv@N-pl0TDe)G@HOaKsYpf}r^VnzWXv~MdGiQ3i zJIs`FCYkow>x(IQj0=RvxBwnwS9pvI;4vz3E|J=fwC}(mX`8`%zZ3jw^ic)JY zrjK;1{K?uIxRo{0n3B`{vUW$#98#aoWhmCa6}wY$s{Rw#9_37O>X&TyAH?faP?MaZ z=MnJKO{?KCBHlv0jo69FRi{~alGLAG!un}{BAL#tY3DpB29fI*iuJGZteVn)?_LMf zb?5%}G}YdFDcVf6JjM?XvL?6Vo}~Kzm^w8*b%Hff&Lq=snsWcn?MCJ-T6-EEW1W+% ziN=(iZfa)E>DAv@6Xi_S-oX~yoU}Z~(Pvo`jVWtyacj<_y;UW?4B>9IZCeP{)V9~C z!dX7wL%%C8j!%cD+WiOd8Wq$er?|&>BYX~o-)7+jvi25X{erkZ8sb0Us5W+B{Y>|J z-&HvqKbE1nM>1{DO`EBf$9N>!p^4rTh+~;{SNUV=ti2`m9hzL2?(4<3(> zz@f>7(}TUuIo*B{YodLSP5aJQ_z_pyFK+^>T4%lY&Vtebd%hvO-A2&`@~TrCzcIVj6S#I bhqc=;h+W@|*CpZlX|=*=<#65E)ENH{=e}pS diff --git a/wireshark_dumps/g810-spectrum/set_keys_colors.pcapng b/wireshark_dumps/g810-spectrum/set_keys_colors.pcapng deleted file mode 100644 index ec4dceb14d0f02ff5f93ab183dc8978d9a49f054..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18512 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 z 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 J+Y9ya{{VNQKAHdk literal 0 HcmV?d00001 diff --git a/wireshark_dumps/g810-spectrum/set_fx_color_wave_vertical_slow.pcapng b/wireshark_dumps/g810-spectrum/set_fx_color_wave_vertical_slow.pcapng new file mode 100644 index 0000000000000000000000000000000000000000..0740a07f404c207d0ab5de5e3572beb1e5d8475f GIT binary patch literal 202708 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›bjn?owe8NP1Zy?Bc{~#`MvP%$Yv@J2R!r(+m>}&y9Mi~V>vnZ4!qHv>F(>inYIY~V(RHJ zzT1;ExiLL+r#aJ!H+nN&KGPRdc#OsH7^lKxoEq~O>jgT3V<$u^9)ri20go{Q9%DvV z+}90!yCV`YJv)T;yD{zlh&j{bq25gU#`@RXpL%+XEl02>H>P7BGiSOz&ztE*3w<%| z^4B%+7!g+^(hxyJI^r5c55%>I>kt`;o`_zE-jVGInU1@S^~d*jvG2UmJn}Nu&-AkZ zNfVeU{l<@+d#`=gSDj|WcBRopqGP1xlUWmuDd*m!mO0ZI_c)l+{yOF{QqI;a@x>G# z<92wA+ud)X3*(yHpL{)!HPM)oY3&cqna*CsOetsb{mJGp zd@)rXV<9}oG)Av=Zq5&&#ZzeotRA zEn95PbSwH-5TYQ&Z>18`TCx6X;dv@N-pl0TDe)G@HOaKsYpf}r^VnzWXv~MdGiQ3i zJIs`FCYkow>x(IQj0=RvxBwnwS9pvI;4vz3E|J=fwC}(mX`8`%zZ3jw^ic)JY zrjK;1{K?uIxRo{0n3B`{vUW$#98#aoWhmCa6}wY$s{Rw#9_37O>X&TyAH?faP?MaZ z=MnJKO{?KCBHlv0jo69FRi{~alGLAG!un}{BAL#tY3DpB29fI*iuJGZteVn)?_LMf zb?5%}G}YdFDcVf6JjM?XvL?6Vo}~Kzm^w8*b%Hff&Lq=snsWcn?MCJ-T6-EEW1W+% ziN=(iZfa)E>DAv@6Xi_S-oX~yoU}Z~(Pvo`jVWtyacj<_y;UW?4B>9IZCeP{)V9~C z!dX7wL%%C8j!%cD+WiOd8Wq$er?|&>BYX~o-)7+jvi25X{erkZ8sb0Us5W+B{Y>|J z-&HvqKbE1nM>1{DO`EBf$9N>!p^4rTh+~;{SNUV=ti2`m9hzL2?(4<3(> zz@f>7(}TUuIo*B{YodLSP5aJQ_z_pyFK+^>T4%lY&Vtebd%hvO-A2&`@~TrCzcIVj6S#I bhqc=;h+W@|*CpZlX|=*=<#65E)ENH{=e}pS literal 0 HcmV?d00001 From c68a0f2d4f9fbbd7c2ccb941b6b22ab3404d5fdf Mon Sep 17 00:00:00 2001 From: MatMoul Date: Thu, 29 Dec 2016 22:43:53 +0100 Subject: [PATCH 009/187] Add effects dump --- wireshark_dumps/g810-spectrum/README.md | 26 ------------------------- 1 file changed, 26 deletions(-) delete mode 100644 wireshark_dumps/g810-spectrum/README.md diff --git a/wireshark_dumps/g810-spectrum/README.md b/wireshark_dumps/g810-spectrum/README.md deleted file mode 100644 index 5c0b6dc..0000000 --- a/wireshark_dumps/g810-spectrum/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# Description of each wireshark dump found in this folder -=== - -Sets effect to 'breathing' with color rgb(252,253,254) at the highest level the slider bar offers. Noticed that the full cycle of updates after switching to the profile (which was done through linking a profile to Notepad++ and letting logitech automatically send the profile once) is around 1 second for fullspeed, 5 seconds for midspeed, and a long 10 seconds for nospeed. - -* g810-effect-to-breathing-252-253-254-fullspeed.pcapng -* g810-effect-to-breathing-252-253-254-midspeed.pcapng -* g810-effect-to-breathing-252-253-254-nospeed.pcapng - -Sets effect to 'key press' with pressed color rgb(3,2,1) and background color rgb(252,253,254) with slider at lowest speed - -* g810-effect-to-keypress-3-2-1_252-253-254-nospeed.pcapng - -Idle g810 capture, was getting periodic updates without having anything interesting going on. Not sure why - -* g810-idle.pcapng - -Sets key color of 'a' / 'rcntrl' to rgb(252,253,254) - -* g810-set-a-to-252-253-254.pcapng -* g810-set-rcntrl-to-252-253-254.pcapng - -Sets effect to 'fixedcolor' - believe this was also at rgb(252,253,254). The second one includes going to the window and back, where it loads the profile and then reloads the former profile. - -* g810-switches-to-fixedcolor-effect.pcapng -* g810-switches-to-from-fixedcolor-effect.pcapng From 5a2bff52254d7698014cd907600a339f99a35266 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 30 Dec 2016 01:30:17 +0100 Subject: [PATCH 010/187] Add first shot for effect code --- src/classes/Keyboard.cpp | 74 ++++++++++++++++++++++++++++++++++++++++ src/classes/Keyboard.h | 1 + src/main.cpp | 13 +++++++ 3 files changed, 88 insertions(+) diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index 45ba55f..48b07b3 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -843,3 +843,77 @@ bool Keyboard::setGroupKeys(KeyGroup keyGroup, KeyColors colors) { } return true; } + +bool Keyboard::setFXColor(KeyColors colors) { + bool retval = false; + int data_size = 20; + unsigned char *data = new unsigned char[data_size]; + + // Indicators + data[0] = 0x11; // Base address + data[1] = 0xff; // Base address + data[2] = 0x0c; // Base address + data[3] = 0x4c; // Base address + data[4] = 0x00; // Base address + data[5] = 0x40; // Base address + + data[6] = colors.red; + data[7] = colors.green; + data[8] = colors.blue; + + for(int i = 9; i < data_size; i++) data[i] = 0x00; + + retval = sendDataInternal(data, data_size); + + + data[0] = 0x11; // Base address + data[1] = 0xff; // Base address + data[2] = 0x0c; // Base address + data[3] = 0x5c; // Base address + + for(int i = 4; i < data_size; i++) data[i] = 0x00; + + retval = sendDataInternal(data, data_size); + + + + // Keys + data[0] = 0x11; // Base address + data[1] = 0xff; // Base address + data[2] = 0x0d; // Base address + data[3] = 0x3c; // Base address + data[4] = 0x00; // Base address + data[5] = 0x01; // Base address + + data[6] = colors.red; + data[7] = colors.green; + data[8] = colors.blue; + data[9] = 0x02; + + for(int i = 10; i < data_size; i++) data[i] = 0x00; + + retval = sendDataInternal(data, data_size); + + + // Logo + data[0] = 0x11; // Base address + data[1] = 0xff; // Base address + data[2] = 0x0d; // Base address + data[3] = 0x3c; // Base address + data[4] = 0x01; // Base address + data[5] = 0x01; // Base address + + data[6] = colors.red; + data[7] = colors.green; + data[8] = colors.blue; + data[9] = 0x02; + + for(int i = 10; i < data_size; i++) data[i] = 0x00; + + retval = sendDataInternal(data, data_size); + + + delete[] data; + return retval; +} + diff --git a/src/classes/Keyboard.h b/src/classes/Keyboard.h index a2b563e..ebb847a 100644 --- a/src/classes/Keyboard.h +++ b/src/classes/Keyboard.h @@ -51,6 +51,7 @@ class Keyboard { bool setKeys(KeyValue keyValue[], size_t keyValueCount); bool setAllKeys(KeyColors colors); bool setGroupKeys(KeyGroup keyGroup, KeyColors colors); + bool setFXColor(KeyColors colors); private: diff --git a/src/main.cpp b/src/main.cpp index e1dd1ce..b434683 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -200,6 +200,18 @@ int setGroupKeys(string groupKeys, string color, bool commit) { return 1; } +int setFXColor(string color) { + Keyboard lg_kbd; + Keyboard::KeyColors colors; + if (lg_kbd.parseColor(color, colors) == true) { + lg_kbd.attach(); + lg_kbd.setFXColor(colors); + lg_kbd.detach(); + return 0; + } + return 1; +} + int loadProfile(string profileFile) { ifstream file; @@ -304,6 +316,7 @@ int main(int argc, char *argv[]) { else if (argCmd == "-kn" && argc == 4) return setKey(argv[2], argv[3], false); else if (argCmd == "-c" && argc == 2) return commit(); else if (argCmd == "-p" && argc == 3) return loadProfile(argv[2]); + else if (argCmd == "-fx-color" && argc == 3) return setFXColor(argv[2]); } usage(); return 1; From 3b13f247b56dedd3f5c5cbdafefb42681eb193dc Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 30 Dec 2016 17:55:19 +0100 Subject: [PATCH 011/187] Add native effect support --- src/classes/Keyboard.cpp | 133 ++++++++++++++++++++++++++++----------- src/classes/Keyboard.h | 3 + src/main.cpp | 84 ++++++++++++++++++++----- 3 files changed, 169 insertions(+), 51 deletions(-) diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index 48b07b3..d73bc37 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -491,6 +491,13 @@ bool Keyboard::parseColor(std::string color, KeyColors &colors) { return true; } +bool Keyboard::parseSpeed(std::string speed, uint8_t &speedValue) { + if (speed.length() == 1) speed = speed + "0"; + if (speed.length() != 2) return false; + speedValue = std::stoul("0x"+speed, nullptr, 16); + return true; +} + bool Keyboard::sendDataInternal(unsigned char *data, uint16_t data_size) { if (m_isAttached == false) return false; int r; @@ -849,34 +856,6 @@ bool Keyboard::setFXColor(KeyColors colors) { int data_size = 20; unsigned char *data = new unsigned char[data_size]; - // Indicators - data[0] = 0x11; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0c; // Base address - data[3] = 0x4c; // Base address - data[4] = 0x00; // Base address - data[5] = 0x40; // Base address - - data[6] = colors.red; - data[7] = colors.green; - data[8] = colors.blue; - - for(int i = 9; i < data_size; i++) data[i] = 0x00; - - retval = sendDataInternal(data, data_size); - - - data[0] = 0x11; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0c; // Base address - data[3] = 0x5c; // Base address - - for(int i = 4; i < data_size; i++) data[i] = 0x00; - - retval = sendDataInternal(data, data_size); - - - // Keys data[0] = 0x11; // Base address data[1] = 0xff; // Base address @@ -884,17 +863,13 @@ bool Keyboard::setFXColor(KeyColors colors) { data[3] = 0x3c; // Base address data[4] = 0x00; // Base address data[5] = 0x01; // Base address - data[6] = colors.red; data[7] = colors.green; data[8] = colors.blue; data[9] = 0x02; - for(int i = 10; i < data_size; i++) data[i] = 0x00; - retval = sendDataInternal(data, data_size); - // Logo data[0] = 0x11; // Base address data[1] = 0xff; // Base address @@ -902,17 +877,103 @@ bool Keyboard::setFXColor(KeyColors colors) { data[3] = 0x3c; // Base address data[4] = 0x01; // Base address data[5] = 0x01; // Base address - data[6] = colors.red; data[7] = colors.green; data[8] = colors.blue; data[9] = 0x02; - for(int i = 10; i < data_size; i++) data[i] = 0x00; - retval = sendDataInternal(data, data_size); - + delete[] data; + return retval; +} + +bool Keyboard::setFXBreathing(KeyColors colors, uint8_t speed) { + bool retval = false; + int data_size = 20; + unsigned char *data = new unsigned char[data_size]; + + // Keys + data[0] = 0x11; // Base address + data[1] = 0xff; // Base address + data[2] = 0x0d; // Base address + data[3] = 0x3c; // Base address + data[4] = 0x00; // Base address + data[5] = 0x02; // Base address + data[6] = colors.red; + data[7] = colors.green; + data[8] = colors.blue; + data[9] = speed; // Speed + data[10] = 0x10; // ??? + data[11] = 0x00; + data[12] = 0x64; + for(int i = 13; i < data_size; i++) data[i] = 0x00; + retval = sendDataInternal(data, data_size); + + // Logo + data[0] = 0x11; // Base address + data[1] = 0xff; // Base address + data[2] = 0x0d; // Base address + data[3] = 0x3c; // Base address + data[4] = 0x01; // Base address + data[5] = 0x02; // Base address + data[6] = colors.red; + data[7] = colors.green; + data[8] = colors.blue; + data[9] = speed; // Speed + data[10] = 0x10; // ??? + data[11] = 0x00; + data[12] = 0x64; + for(int i = 13; i < data_size; i++) data[i] = 0x00; + retval = sendDataInternal(data, data_size); + + delete[] data; + return retval; +} + +bool Keyboard::setFXColorCycle(uint8_t speed) { + bool retval = false; + int data_size = 20; + unsigned char *data = new unsigned char[data_size]; + + // Keys + data[0] = 0x11; // Base address + data[1] = 0xff; // Base address + data[2] = 0x0d; // Base address + data[3] = 0x3c; // Base address + data[4] = 0x00; // Base address + data[5] = 0x03; // Base address + data[6] = 0x00; + data[7] = 0x00; + data[8] = 0x00; + data[9] = 0x00; + data[10] = 0x00; + data[11] = speed; // Speed + data[12] = 0x00; // ??? + data[13] = 0x00; + data[14] = 0x64; + for(int i = 15; i < data_size; i++) data[i] = 0x00; + retval = sendDataInternal(data, data_size); + + // Logo + data[0] = 0x11; // Base address + data[1] = 0xff; // Base address + data[2] = 0x0d; // Base address + data[3] = 0x3c; // Base address + data[4] = 0x01; // Base address + data[5] = 0x03; // Base address + data[6] = 0x00; + data[7] = 0x00; + data[8] = 0x00; + data[9] = 0x00; + data[10] = 0x00; + data[11] = speed; // Speed + data[12] = 0x00; // ??? + data[13] = 0x00; + data[14] = 0x64; + for(int i = 15; i < data_size; i++) data[i] = 0x00; + retval = sendDataInternal(data, data_size); + delete[] data; return retval; } diff --git a/src/classes/Keyboard.h b/src/classes/Keyboard.h index ebb847a..5c585b2 100644 --- a/src/classes/Keyboard.h +++ b/src/classes/Keyboard.h @@ -45,6 +45,7 @@ class Keyboard { bool parseKey(std::string key, KeyAddress &keyAddress); bool parseKeyGroup(std::string key, KeyGroup &keyGroup); bool parseColor(std::string color, KeyColors &colors); + bool parseSpeed(std::string speed, uint8_t &speedValue); bool setPowerOnEffect(PowerOnEffect powerOnEffect); bool setKey(KeyValue keyValue); bool setKey(Key key, KeyColors colors); @@ -52,6 +53,8 @@ class Keyboard { bool setAllKeys(KeyColors colors); bool setGroupKeys(KeyGroup keyGroup, KeyColors colors); bool setFXColor(KeyColors colors); + bool setFXBreathing(KeyColors colors, uint8_t speed); + bool setFXColorCycle(uint8_t speed); private: diff --git a/src/main.cpp b/src/main.cpp index b434683..08234bf 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -10,34 +10,40 @@ void usage() { cout< Date: Fri, 30 Dec 2016 19:36:56 +0100 Subject: [PATCH 012/187] Corrected systemd path for ubuntu --- makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/makefile b/makefile index bdf5fe9..7e7766f 100644 --- a/makefile +++ b/makefile @@ -25,8 +25,8 @@ install: @sudo cp bin/$(PROGN) /usr/bin @sudo test -s /etc/$(PROGN)/profile || sudo cp /etc/$(PROGN)/samples/group_keys /etc/$(PROGN)/profile @sudo test -s /etc/$(PROGN)/reboot || sudo cp /etc/$(PROGN)/samples/all_off /etc/$(PROGN)/reboot - @sudo cp systemd/$(PROGN).service /usr/lib/systemd/system - @sudo cp systemd/$(PROGN)-reboot.service /usr/lib/systemd/system + @sudo cp systemd/$(PROGN).service /lib/systemd/system + @sudo cp systemd/$(PROGN)-reboot.service /lib/systemd/system @sudo systemctl start $(PROGN) @sudo systemctl enable $(PROGN) @sudo systemctl enable $(PROGN)-reboot From 4bfa9811b3dbc4838c87d22cc9b5957441202d24 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 30 Dec 2016 21:35:26 +0100 Subject: [PATCH 013/187] Add wave effect --- src/classes/Keyboard.cpp | 146 +++++++++++++++++++++++++++++++++++++++ src/classes/Keyboard.h | 3 + src/main.cpp | 64 +++++++++++++++++ 3 files changed, 213 insertions(+) diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index d73bc37..fe548f3 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -978,3 +978,149 @@ bool Keyboard::setFXColorCycle(uint8_t speed) { return retval; } +bool Keyboard::setFXHWave(uint8_t speed) { + bool retval = false; + int data_size = 20; + unsigned char *data = new unsigned char[data_size]; + + // Keys + data[0] = 0x11; // Base address + data[1] = 0xff; // Base address + data[2] = 0x0d; // Base address + data[3] = 0x3b; // Base address + data[4] = 0x00; // Base address + data[5] = 0x04; // Base address + data[6] = 0x00; + data[7] = 0x00; + data[8] = 0x00; + data[9] = 0x00; + data[10] = 0x00; + data[11] = 0x00; + data[12] = 0x88; + data[13] = 0x01; + data[14] = 0x64; + data[15] = speed; // Speed + for(int i = 16; i < data_size; i++) data[i] = 0x00; + retval = sendDataInternal(data, data_size); + + // Logo + data[0] = 0x11; // Base address + data[1] = 0xff; // Base address + data[2] = 0x0d; // Base address + data[3] = 0x3b; // Base address + data[4] = 0x01; // Base address + data[5] = 0x03; // Base address + data[6] = 0x00; + data[7] = 0x00; + data[8] = 0x00; + data[9] = 0x00; + data[10] = 0x00; + data[11] = speed; // Speed + data[12] = 0x88; + data[13] = 0x64; + data[14] = 0x00; + data[15] = 0x00; + for(int i = 16; i < data_size; i++) data[i] = 0x00; + retval = sendDataInternal(data, data_size); + + delete[] data; + return retval; +} + +bool Keyboard::setFXVWave(uint8_t speed) { + bool retval = false; + int data_size = 20; + unsigned char *data = new unsigned char[data_size]; + + // Keys + data[0] = 0x11; // Base address + data[1] = 0xff; // Base address + data[2] = 0x0d; // Base address + data[3] = 0x3b; // Base address + data[4] = 0x00; // Base address + data[5] = 0x04; // Base address + data[6] = 0x00; + data[7] = 0x00; + data[8] = 0x00; + data[9] = 0x00; + data[10] = 0x00; + data[11] = 0x00; + data[12] = 0x88; + data[13] = 0x02; + data[14] = 0x64; + data[15] = speed; // Speed + for(int i = 16; i < data_size; i++) data[i] = 0x00; + retval = sendDataInternal(data, data_size); + + // Logo + data[0] = 0x11; // Base address + data[1] = 0xff; // Base address + data[2] = 0x0d; // Base address + data[3] = 0x3b; // Base address + data[4] = 0x01; // Base address + data[5] = 0x03; // Base address + data[6] = 0x00; + data[7] = 0x00; + data[8] = 0x00; + data[9] = 0x00; + data[10] = 0x00; + data[11] = speed; // Speed + data[12] = 0x88; + data[13] = 0x64; + data[14] = 0x00; + data[15] = 0x00; + for(int i = 16; i < data_size; i++) data[i] = 0x00; + retval = sendDataInternal(data, data_size); + + delete[] data; + return retval; +} + +bool Keyboard::setFXCWave(uint8_t speed) { + bool retval = false; + int data_size = 20; + unsigned char *data = new unsigned char[data_size]; + + // Keys + data[0] = 0x11; // Base address + data[1] = 0xff; // Base address + data[2] = 0x0d; // Base address + data[3] = 0x3b; // Base address + data[4] = 0x00; // Base address + data[5] = 0x04; // Base address + data[6] = 0x00; + data[7] = 0x00; + data[8] = 0x00; + data[9] = 0x00; + data[10] = 0x00; + data[11] = 0x00; + data[12] = 0x88; + data[13] = 0x03; + data[14] = 0x64; + data[15] = speed; // Speed + for(int i = 16; i < data_size; i++) data[i] = 0x00; + retval = sendDataInternal(data, data_size); + + // Logo + data[0] = 0x11; // Base address + data[1] = 0xff; // Base address + data[2] = 0x0d; // Base address + data[3] = 0x3b; // Base address + data[4] = 0x01; // Base address + data[5] = 0x03; // Base address + data[6] = 0x00; + data[7] = 0x00; + data[8] = 0x00; + data[9] = 0x00; + data[10] = 0x00; + data[11] = speed; // Speed + data[12] = 0x88; + data[13] = 0x64; + data[14] = 0x00; + data[15] = 0x00; + for(int i = 16; i < data_size; i++) data[i] = 0x00; + retval = sendDataInternal(data, data_size); + + delete[] data; + return retval; +} diff --git a/src/classes/Keyboard.h b/src/classes/Keyboard.h index 5c585b2..8bfedee 100644 --- a/src/classes/Keyboard.h +++ b/src/classes/Keyboard.h @@ -55,6 +55,9 @@ class Keyboard { bool setFXColor(KeyColors colors); bool setFXBreathing(KeyColors colors, uint8_t speed); bool setFXColorCycle(uint8_t speed); + bool setFXHWave(uint8_t speed); + bool setFXVWave(uint8_t speed); + bool setFXCWave(uint8_t speed); private: diff --git a/src/main.cpp b/src/main.cpp index 08234bf..39e51aa 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -25,6 +25,9 @@ void usage() { cout<<" -fx-color color :\t\tSet static color effect\n"; cout<<" -fx-breathing color, speed :\tSet breathing effect\n"; cout<<" -fx-cycle speed :\t\tSet color cycle effect\n"; + cout<<" -fx-hwave speed :\t\tSet horizontal color wave effect\n"; + cout<<" -fx-vwave speed :\t\tSet vertical color wave effect\n"; + cout<<" -fx-cwave speed :\t\tSet center color wave effect\n"; cout<<"\n"; cout<<" -p profilefile :\t\tLoad a profile\n"; cout<<"\n"; @@ -261,8 +264,66 @@ int setFXColorCycle(string speed) { return 1; } +int setFXHWave(string speed) { + Keyboard lg_kbd; + Keyboard::KeyColors colors; + uint8_t speedValue; + if (lg_kbd.parseSpeed(speed, speedValue) == true) { + colors.red = 0xff; + colors.green = 0xff; + colors.blue = 0xff; + lg_kbd.attach(); + lg_kbd.setGroupKeys(Keyboard::KeyGroup::indicators, colors); + lg_kbd.commit(); + lg_kbd.detach(); + lg_kbd.attach(); + lg_kbd.setFXHWave(speedValue); + lg_kbd.detach(); + return 0; + } + return 1; +} +int setFXVWave(string speed) { + Keyboard lg_kbd; + Keyboard::KeyColors colors; + uint8_t speedValue; + if (lg_kbd.parseSpeed(speed, speedValue) == true) { + colors.red = 0xff; + colors.green = 0xff; + colors.blue = 0xff; + lg_kbd.attach(); + lg_kbd.setGroupKeys(Keyboard::KeyGroup::indicators, colors); + lg_kbd.commit(); + lg_kbd.detach(); + lg_kbd.attach(); + lg_kbd.setFXVWave(speedValue); + lg_kbd.detach(); + return 0; + } + return 1; +} +int setFXCWave(string speed) { + Keyboard lg_kbd; + Keyboard::KeyColors colors; + uint8_t speedValue; + if (lg_kbd.parseSpeed(speed, speedValue) == true) { + colors.red = 0xff; + colors.green = 0xff; + colors.blue = 0xff; + lg_kbd.attach(); + lg_kbd.setGroupKeys(Keyboard::KeyGroup::indicators, colors); + lg_kbd.commit(); + lg_kbd.detach(); + lg_kbd.attach(); + lg_kbd.setFXCWave(speedValue); + lg_kbd.detach(); + return 0; + } + return 1; + return 1; +} int loadProfile(string profileFile) { ifstream file; @@ -371,6 +432,9 @@ int main(int argc, char *argv[]) { else if (argCmd == "-fx-color" && argc == 3) return setFXColor(argv[2]); else if (argCmd == "-fx-breathing" && argc == 4) return setFXBreathing(argv[2], argv[3]); else if (argCmd == "-fx-cycle" && argc == 3) return setFXColorCycle(argv[2]); + else if (argCmd == "-fx-hwave" && argc == 3) return setFXHWave(argv[2]); + else if (argCmd == "-fx-vwave" && argc == 3) return setFXVWave(argv[2]); + else if (argCmd == "-fx-cwave" && argc == 3) return setFXCWave(argv[2]); } usage(); return 1; From c019e1d1254c41657875130bfc607b66456f0afc Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 30 Dec 2016 21:41:47 +0100 Subject: [PATCH 014/187] Update README --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index cf1e9e3..035f6de 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,13 @@ Samples :
`g810-led -a 00ff00 # Set color of all keys`
`g810-led -g fkeys ff00ff # Set color of a group of keys`
`g810-led -s color # Set keyboard power on effect`
+`g810-led -fx-color 00ff00 # Set fixed color effect`
+`g810-led -fx-breathing 00ff00 10 # Set breathing effect`
+`g810-led -fx-cycle 10 # Set color cycle effect`
+`g810-led -fx-hwave 10 # Set horizontal wave effect`
+`g810-led -fx-vwave 10 # Set vertical wave effect`
+`g810-led -fx-cwave 10 # Set center wave effect`
+ Samples with no commit :
`g810-led -an 000000 # Set color of all key with no action`
From 56d5307043b14da0afad0440c90a83b7f0b28f48 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 30 Dec 2016 22:27:53 +0100 Subject: [PATCH 015/187] Add natives effects support in profile --- sample_profiles/fx_breathing_red | 2 + sample_profiles/fx_color_green | 3 + sample_profiles/fx_colorcycle | 2 + sample_profiles/fx_cwave | 2 + sample_profiles/fx_hwave | 2 + sample_profiles/fx_vwave | 2 + src/main.cpp | 101 +++++++++++++++++++++++++++++++ 7 files changed, 114 insertions(+) create mode 100644 sample_profiles/fx_breathing_red create mode 100644 sample_profiles/fx_color_green create mode 100644 sample_profiles/fx_colorcycle create mode 100644 sample_profiles/fx_cwave create mode 100644 sample_profiles/fx_hwave create mode 100644 sample_profiles/fx_vwave diff --git a/sample_profiles/fx_breathing_red b/sample_profiles/fx_breathing_red new file mode 100644 index 0000000..1b0be0b --- /dev/null +++ b/sample_profiles/fx_breathing_red @@ -0,0 +1,2 @@ + +fx-breathing ff0000 10 # Set breathing effect with red color and speed 10 diff --git a/sample_profiles/fx_color_green b/sample_profiles/fx_color_green new file mode 100644 index 0000000..05f8232 --- /dev/null +++ b/sample_profiles/fx_color_green @@ -0,0 +1,3 @@ +# Green Profile + +fx-color 00ff00 # Set all keys green diff --git a/sample_profiles/fx_colorcycle b/sample_profiles/fx_colorcycle new file mode 100644 index 0000000..1d98ff6 --- /dev/null +++ b/sample_profiles/fx_colorcycle @@ -0,0 +1,2 @@ + +fx-cycle 10 # Set color cycle effect with speed 10 diff --git a/sample_profiles/fx_cwave b/sample_profiles/fx_cwave new file mode 100644 index 0000000..3405986 --- /dev/null +++ b/sample_profiles/fx_cwave @@ -0,0 +1,2 @@ + +fx-cwave 10 # Set center wave effect with speed 10 diff --git a/sample_profiles/fx_hwave b/sample_profiles/fx_hwave new file mode 100644 index 0000000..5eb537c --- /dev/null +++ b/sample_profiles/fx_hwave @@ -0,0 +1,2 @@ + +fx-hwave 10 # Set horizontal wave effect with speed 10 diff --git a/sample_profiles/fx_vwave b/sample_profiles/fx_vwave new file mode 100644 index 0000000..30ea410 --- /dev/null +++ b/sample_profiles/fx_vwave @@ -0,0 +1,2 @@ + +fx-vwave 10 # Set vertical wave effect with speed 10 diff --git a/src/main.cpp b/src/main.cpp index 39e51aa..241659e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -340,6 +340,7 @@ int loadProfile(string profileFile) { Keyboard::KeyAddress keyAddress; Keyboard::KeyValue keyValue; Keyboard::KeyColors colors; + uint8_t speedValue; map var; vector keys; @@ -396,6 +397,106 @@ int loadProfile(string profileFile) { lg_kbd.setKeys(&keys[0], keys.size()); keys.clear(); lg_kbd.commit(); + } else if (line.substr(0,8) == "fx-color") { + line = line.substr(9); + if (line.substr(0, 1) == "$") { + ind = line.find(" "); + line = var[line.substr(1, ind - 1)]; + } else line = line.substr(0, 6); + if (lg_kbd.parseColor(line, colors) == true) { + keys.clear(); + lg_kbd.setGroupKeys(Keyboard::KeyGroup::indicators, colors); + lg_kbd.commit(); + lg_kbd.detach(); + lg_kbd.attach(); + lg_kbd.setFXColor(colors); + } else cout<<"Error on line "< Date: Sat, 31 Dec 2016 00:20:52 +0100 Subject: [PATCH 016/187] Corrected systemd path for ubuntu --- makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/makefile b/makefile index 7e7766f..f53062e 100644 --- a/makefile +++ b/makefile @@ -34,8 +34,8 @@ install: uninstall: @sudo systemctl disable $(PROGN) @sudo systemctl disable $(PROGN)-reboot - @sudo rm /usr/lib/systemd/system/$(PROGN).service - @sudo rm /usr/lib/systemd/system/$(PROGN)-reboot.service + @sudo rm /lib/systemd/system/$(PROGN).service + @sudo rm /lib/systemd/system/$(PROGN)-reboot.service @sudo rm /etc/udev/rules.d/$(PROGN).rules @sudo rm /usr/bin/$(PROGN) @sudo rm -R /etc/$(PROGN) From fc86f2af4430725155dd6d6203df8d349a75aeb8 Mon Sep 17 00:00:00 2001 From: MohamadSaada Date: Sun, 1 Jan 2017 13:27:51 +0000 Subject: [PATCH 017/187] Update Keyboard.cpp --- src/classes/Keyboard.cpp | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index fe548f3..e72d7fd 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -641,12 +641,22 @@ bool Keyboard::setPowerOnEffect(PowerOnEffect powerOnEffect) { bool retval = false; int data_size = 20; unsigned char *data = new unsigned char[data_size]; - data[0] = 0x11; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0d; // Base address - data[3] = 0x5a; // Base address - data[4] = 0x00; // Base address - data[5] = 0x01; // Base address + switch (kbdProtocol) { + case KeyboardProtocol::generic: + data[0] = 0x11; // Base address + data[1] = 0xff; // Base address + data[2] = 0x0d; // Base address + data[3] = 0x5a; // Base address + data[4] = 0x00; // Base address + data[5] = 0x01; // Base address + case KeyboardProtocol::g910: + data[0] = 0x11; // Base address + data[1] = 0xff; // Base address + data[2] = 0x10; // Base address + data[3] = 0x5e; // Base address + data[4] = 0x00; // Base address + data[5] = 0x01; // Base address + } switch (powerOnEffect) { case PowerOnEffect::rainbow: data[6] = 0x01; From 3af632a5897df2bba2ccf46e96d4db378d09d588 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Wed, 4 Jan 2017 03:37:33 +0100 Subject: [PATCH 018/187] Add FX support for g910 --- src/classes/Keyboard.cpp | 129 +++++++++++++++++---------------------- src/classes/Keyboard.h | 1 + 2 files changed, 58 insertions(+), 72 deletions(-) diff --git a/src/classes/Keyboard.cpp b/src/classes/Keyboard.cpp index e72d7fd..02bc2c5 100644 --- a/src/classes/Keyboard.cpp +++ b/src/classes/Keyboard.cpp @@ -611,6 +611,27 @@ bool Keyboard::populateAddressGroupInternal(KeyAddressGroup addressGroup, unsign return true; } +bool Keyboard::populateFXAddressInternal(unsigned char *data) { + switch (kbdProtocol) { + case KeyboardProtocol::generic: + data[0] = 0x11; // Base address + data[1] = 0xff; // Base address + data[2] = 0x0d; // Base address + data[3] = 0x3c; // Base address + break; + case KeyboardProtocol::g910: + data[0] = 0x11; // Base address + data[1] = 0xff; // Base address + data[2] = 0x10; // Base address + data[3] = 0x3c; // Base address + break; + default: + return false; + break; + } + return true; +} + bool Keyboard::setKeysInternal(KeyAddressGroup addressGroup, KeyValue keyValues[], size_t keyValueCount) { bool retval = false; int data_size; @@ -867,12 +888,9 @@ bool Keyboard::setFXColor(KeyColors colors) { unsigned char *data = new unsigned char[data_size]; // Keys - data[0] = 0x11; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0d; // Base address - data[3] = 0x3c; // Base address - data[4] = 0x00; // Base address - data[5] = 0x01; // Base address + populateFXAddressInternal(data); + data[4] = 0x00; // Keys + data[5] = 0x01; // Effect data[6] = colors.red; data[7] = colors.green; data[8] = colors.blue; @@ -881,12 +899,9 @@ bool Keyboard::setFXColor(KeyColors colors) { retval = sendDataInternal(data, data_size); // Logo - data[0] = 0x11; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0d; // Base address - data[3] = 0x3c; // Base address - data[4] = 0x01; // Base address - data[5] = 0x01; // Base address + populateFXAddressInternal(data); + data[4] = 0x01; // Logo + data[5] = 0x01; // Effect data[6] = colors.red; data[7] = colors.green; data[8] = colors.blue; @@ -904,12 +919,9 @@ bool Keyboard::setFXBreathing(KeyColors colors, uint8_t speed) { unsigned char *data = new unsigned char[data_size]; // Keys - data[0] = 0x11; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0d; // Base address - data[3] = 0x3c; // Base address - data[4] = 0x00; // Base address - data[5] = 0x02; // Base address + populateFXAddressInternal(data); + data[4] = 0x00; // Keys + data[5] = 0x02; // Effect data[6] = colors.red; data[7] = colors.green; data[8] = colors.blue; @@ -921,12 +933,9 @@ bool Keyboard::setFXBreathing(KeyColors colors, uint8_t speed) { retval = sendDataInternal(data, data_size); // Logo - data[0] = 0x11; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0d; // Base address - data[3] = 0x3c; // Base address - data[4] = 0x01; // Base address - data[5] = 0x02; // Base address + populateFXAddressInternal(data); + data[4] = 0x01; // Logo + data[5] = 0x02; // Effect data[6] = colors.red; data[7] = colors.green; data[8] = colors.blue; @@ -947,12 +956,9 @@ bool Keyboard::setFXColorCycle(uint8_t speed) { unsigned char *data = new unsigned char[data_size]; // Keys - data[0] = 0x11; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0d; // Base address - data[3] = 0x3c; // Base address - data[4] = 0x00; // Base address - data[5] = 0x03; // Base address + populateFXAddressInternal(data); + data[4] = 0x00; // Keys + data[5] = 0x03; // Effect data[6] = 0x00; data[7] = 0x00; data[8] = 0x00; @@ -966,12 +972,9 @@ bool Keyboard::setFXColorCycle(uint8_t speed) { retval = sendDataInternal(data, data_size); // Logo - data[0] = 0x11; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0d; // Base address - data[3] = 0x3c; // Base address - data[4] = 0x01; // Base address - data[5] = 0x03; // Base address + populateFXAddressInternal(data); + data[4] = 0x01; // Logo + data[5] = 0x03; // Effect data[6] = 0x00; data[7] = 0x00; data[8] = 0x00; @@ -994,12 +997,9 @@ bool Keyboard::setFXHWave(uint8_t speed) { unsigned char *data = new unsigned char[data_size]; // Keys - data[0] = 0x11; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0d; // Base address - data[3] = 0x3b; // Base address - data[4] = 0x00; // Base address - data[5] = 0x04; // Base address + populateFXAddressInternal(data); + data[4] = 0x00; // Keys + data[5] = 0x04; // Effect data[6] = 0x00; data[7] = 0x00; data[8] = 0x00; @@ -1014,12 +1014,9 @@ bool Keyboard::setFXHWave(uint8_t speed) { retval = sendDataInternal(data, data_size); // Logo - data[0] = 0x11; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0d; // Base address - data[3] = 0x3b; // Base address - data[4] = 0x01; // Base address - data[5] = 0x03; // Base address + populateFXAddressInternal(data); + data[4] = 0x01; // Logo + data[5] = 0x03; // Effect data[6] = 0x00; data[7] = 0x00; data[8] = 0x00; @@ -1043,12 +1040,9 @@ bool Keyboard::setFXVWave(uint8_t speed) { unsigned char *data = new unsigned char[data_size]; // Keys - data[0] = 0x11; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0d; // Base address - data[3] = 0x3b; // Base address - data[4] = 0x00; // Base address - data[5] = 0x04; // Base address + populateFXAddressInternal(data); + data[4] = 0x00; // Keys + data[5] = 0x04; // Effect data[6] = 0x00; data[7] = 0x00; data[8] = 0x00; @@ -1063,12 +1057,9 @@ bool Keyboard::setFXVWave(uint8_t speed) { retval = sendDataInternal(data, data_size); // Logo - data[0] = 0x11; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0d; // Base address - data[3] = 0x3b; // Base address - data[4] = 0x01; // Base address - data[5] = 0x03; // Base address + populateFXAddressInternal(data); + data[4] = 0x01; // Logo + data[5] = 0x03; // Effect data[6] = 0x00; data[7] = 0x00; data[8] = 0x00; @@ -1092,12 +1083,9 @@ bool Keyboard::setFXCWave(uint8_t speed) { unsigned char *data = new unsigned char[data_size]; // Keys - data[0] = 0x11; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0d; // Base address - data[3] = 0x3b; // Base address - data[4] = 0x00; // Base address - data[5] = 0x04; // Base address + populateFXAddressInternal(data); + data[4] = 0x00; // Keys + data[5] = 0x04; // Effect data[6] = 0x00; data[7] = 0x00; data[8] = 0x00; @@ -1112,12 +1100,9 @@ bool Keyboard::setFXCWave(uint8_t speed) { retval = sendDataInternal(data, data_size); // Logo - data[0] = 0x11; // Base address - data[1] = 0xff; // Base address - data[2] = 0x0d; // Base address - data[3] = 0x3b; // Base address - data[4] = 0x01; // Base address - data[5] = 0x03; // Base address + populateFXAddressInternal(data); + data[4] = 0x01; // Logo + data[5] = 0x03; // Effect data[6] = 0x00; data[7] = 0x00; data[8] = 0x00; diff --git a/src/classes/Keyboard.h b/src/classes/Keyboard.h index 8bfedee..80c7107 100644 --- a/src/classes/Keyboard.h +++ b/src/classes/Keyboard.h @@ -70,6 +70,7 @@ class Keyboard { libusb_context *ctx = NULL; bool populateAddressGroupInternal(KeyAddressGroup addressGroup, unsigned char *data); + bool populateFXAddressInternal(unsigned char *data); bool sendDataInternal(unsigned char *data, uint16_t data_size); bool setKeysInternal(KeyAddressGroup addressGroup, KeyValue keyValues[], size_t keyValueCount); From c34122267073194b44e2f0601fbecaa0a41f79e2 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Wed, 4 Jan 2017 03:55:34 +0100 Subject: [PATCH 019/187] Update README --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 035f6de..417632e 100644 --- a/README.md +++ b/README.md @@ -20,11 +20,11 @@ Samples :
`g810-led -g fkeys ff00ff # Set color of a group of keys`
`g810-led -s color # Set keyboard power on effect`
`g810-led -fx-color 00ff00 # Set fixed color effect`
-`g810-led -fx-breathing 00ff00 10 # Set breathing effect`
-`g810-led -fx-cycle 10 # Set color cycle effect`
-`g810-led -fx-hwave 10 # Set horizontal wave effect`
-`g810-led -fx-vwave 10 # Set vertical wave effect`
-`g810-led -fx-cwave 10 # Set center wave effect`
+`g810-led -fx-breathing 00ff00 0a # Set breathing effect`
+`g810-led -fx-cycle 0a # Set color cycle effect`
+`g810-led -fx-hwave 0a # Set horizontal wave effect`
+`g810-led -fx-vwave 0a # Set vertical wave effect`
+`g810-led -fx-cwave 0a # Set center wave effect`
Samples with no commit :
From 3f92a41d31c55af81a8a11c30dbe5adb94aa12e9 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Wed, 4 Jan 2017 23:56:41 +0100 Subject: [PATCH 020/187] Update make install (add ln g410-led, g610-led and g910-led --- makefile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/makefile b/makefile index f53062e..9100ac7 100644 --- a/makefile +++ b/makefile @@ -23,6 +23,9 @@ install: @sudo cp sample_profiles/* /etc/$(PROGN)/samples @sudo cp udev/$(PROGN).rules /etc/udev/rules.d @sudo cp bin/$(PROGN) /usr/bin + @sudo ln -s /usr/bin/g810-led /usr/bin/g410-led + @sudo ln -s /usr/bin/g810-led /usr/bin/g610-led + @sudo ln -s /usr/bin/g810-led /usr/bin/g910-led @sudo test -s /etc/$(PROGN)/profile || sudo cp /etc/$(PROGN)/samples/group_keys /etc/$(PROGN)/profile @sudo test -s /etc/$(PROGN)/reboot || sudo cp /etc/$(PROGN)/samples/all_off /etc/$(PROGN)/reboot @sudo cp systemd/$(PROGN).service /lib/systemd/system @@ -37,5 +40,8 @@ uninstall: @sudo rm /lib/systemd/system/$(PROGN).service @sudo rm /lib/systemd/system/$(PROGN)-reboot.service @sudo rm /etc/udev/rules.d/$(PROGN).rules + @sudo rm /usr/bin/g410-led + @sudo rm /usr/bin/g610-led + @sudo rm /usr/bin/g910-led @sudo rm /usr/bin/$(PROGN) @sudo rm -R /etc/$(PROGN) From 3762d5b6534c8265402a72835608d337fcf71b46 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Thu, 5 Jan 2017 00:35:27 +0100 Subject: [PATCH 021/187] Update make install (add ln g410-led, g610-led and g910-led --- makefile | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/makefile b/makefile index 9100ac7..5b55985 100644 --- a/makefile +++ b/makefile @@ -23,9 +23,12 @@ install: @sudo cp sample_profiles/* /etc/$(PROGN)/samples @sudo cp udev/$(PROGN).rules /etc/udev/rules.d @sudo cp bin/$(PROGN) /usr/bin - @sudo ln -s /usr/bin/g810-led /usr/bin/g410-led - @sudo ln -s /usr/bin/g810-led /usr/bin/g610-led - @sudo ln -s /usr/bin/g810-led /usr/bin/g910-led + @sudo rm /usr/bin/g410-led + @sudo rm /usr/bin/g610-led + @sudo rm /usr/bin/g910-led + @sudo ln -s /usr/bin/$(PROGN) /usr/bin/g410-led + @sudo ln -s /usr/bin/$(PROGN) /usr/bin/g610-led + @sudo ln -s /usr/bin/$(PROGN) /usr/bin/g910-led @sudo test -s /etc/$(PROGN)/profile || sudo cp /etc/$(PROGN)/samples/group_keys /etc/$(PROGN)/profile @sudo test -s /etc/$(PROGN)/reboot || sudo cp /etc/$(PROGN)/samples/all_off /etc/$(PROGN)/reboot @sudo cp systemd/$(PROGN).service /lib/systemd/system From b12946759ddaae1721b3a91a4ce45b279afe32cd Mon Sep 17 00:00:00 2001 From: MatMoul Date: Thu, 5 Jan 2017 00:42:34 +0100 Subject: [PATCH 022/187] Update make install (add ln g410-led, g610-led and g910-led --- makefile | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/makefile b/makefile index 5b55985..6242b0b 100644 --- a/makefile +++ b/makefile @@ -23,12 +23,9 @@ install: @sudo cp sample_profiles/* /etc/$(PROGN)/samples @sudo cp udev/$(PROGN).rules /etc/udev/rules.d @sudo cp bin/$(PROGN) /usr/bin - @sudo rm /usr/bin/g410-led - @sudo rm /usr/bin/g610-led - @sudo rm /usr/bin/g910-led - @sudo ln -s /usr/bin/$(PROGN) /usr/bin/g410-led - @sudo ln -s /usr/bin/$(PROGN) /usr/bin/g610-led - @sudo ln -s /usr/bin/$(PROGN) /usr/bin/g910-led + @sudo test -s /usr/bin/g410-led || sudo ln -s /usr/bin/$(PROGN) /usr/bin/g410-led + @sudo test -s /usr/bin/g610-led || sudo ln -s /usr/bin/$(PROGN) /usr/bin/g610-led + @sudo test -s /usr/bin/g910-led || sudo ln -s /usr/bin/$(PROGN) /usr/bin/g910-led @sudo test -s /etc/$(PROGN)/profile || sudo cp /etc/$(PROGN)/samples/group_keys /etc/$(PROGN)/profile @sudo test -s /etc/$(PROGN)/reboot || sudo cp /etc/$(PROGN)/samples/all_off /etc/$(PROGN)/reboot @sudo cp systemd/$(PROGN).service /lib/systemd/system From b85fa22ac2335d3184688b74d5ee46f9a7cbafa8 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Thu, 5 Jan 2017 00:46:30 +0100 Subject: [PATCH 023/187] Update install, uninstall in makefile --- makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/makefile b/makefile index 6242b0b..4b07265 100644 --- a/makefile +++ b/makefile @@ -30,6 +30,7 @@ install: @sudo test -s /etc/$(PROGN)/reboot || sudo cp /etc/$(PROGN)/samples/all_off /etc/$(PROGN)/reboot @sudo cp systemd/$(PROGN).service /lib/systemd/system @sudo cp systemd/$(PROGN)-reboot.service /lib/systemd/system + @sudo systemctl daemon-reload @sudo systemctl start $(PROGN) @sudo systemctl enable $(PROGN) @sudo systemctl enable $(PROGN)-reboot @@ -39,6 +40,7 @@ uninstall: @sudo systemctl disable $(PROGN)-reboot @sudo rm /lib/systemd/system/$(PROGN).service @sudo rm /lib/systemd/system/$(PROGN)-reboot.service + @sudo systemctl daemon-reload @sudo rm /etc/udev/rules.d/$(PROGN).rules @sudo rm /usr/bin/g410-led @sudo rm /usr/bin/g610-led From dc0118cfb91e032bf206e3b19ff3d616dcc45a1f Mon Sep 17 00:00:00 2001 From: MatMoul Date: Thu, 5 Jan 2017 01:12:27 +0100 Subject: [PATCH 024/187] Update install, uninstall in makefile --- makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/makefile b/makefile index 4b07265..bb2fb2b 100644 --- a/makefile +++ b/makefile @@ -22,6 +22,7 @@ install: @sudo mkdir -p /etc/$(PROGN)/samples @sudo cp sample_profiles/* /etc/$(PROGN)/samples @sudo cp udev/$(PROGN).rules /etc/udev/rules.d + @sudo udevadm control --reload-rules @sudo cp bin/$(PROGN) /usr/bin @sudo test -s /usr/bin/g410-led || sudo ln -s /usr/bin/$(PROGN) /usr/bin/g410-led @sudo test -s /usr/bin/g610-led || sudo ln -s /usr/bin/$(PROGN) /usr/bin/g610-led @@ -41,9 +42,10 @@ uninstall: @sudo rm /lib/systemd/system/$(PROGN).service @sudo rm /lib/systemd/system/$(PROGN)-reboot.service @sudo systemctl daemon-reload - @sudo rm /etc/udev/rules.d/$(PROGN).rules @sudo rm /usr/bin/g410-led @sudo rm /usr/bin/g610-led @sudo rm /usr/bin/g910-led @sudo rm /usr/bin/$(PROGN) @sudo rm -R /etc/$(PROGN) + @sudo rm /etc/udev/rules.d/$(PROGN).rules + @sudo udevadm control --reload-rules From 1bc97a84669f7bbcee86c4168bc6d3cbe999f883 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Thu, 5 Jan 2017 01:40:07 +0100 Subject: [PATCH 025/187] Add pictures --- pictures/g410.png | Bin 0 -> 59630 bytes pictures/g610.png | Bin 0 -> 57634 bytes pictures/g810.jpg | Bin 0 -> 43215 bytes pictures/g910.jpg | Bin 0 -> 21755 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 pictures/g410.png create mode 100644 pictures/g610.png create mode 100644 pictures/g810.jpg create mode 100644 pictures/g910.jpg diff --git a/pictures/g410.png b/pictures/g410.png new file mode 100644 index 0000000000000000000000000000000000000000..6032224d1f62d29344cb46c027a825f9c80cd8a9 GIT binary patch literal 59630 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�BFhD3>=O^qlFgRN!5V@C3*BNc9HsM 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