From a70db5a2664f6050ef7a4a339545ff798dbb68ef Mon Sep 17 00:00:00 2001 From: Athene Allen Date: Sat, 22 Mar 2025 14:46:45 +0000 Subject: [PATCH 1/1] pipboy update --- gnargle.github.io.code-workspace | 7 ++++ img/projects/pipboy/firmwareInputListener.png | Bin 0 -> 21058 bytes projects/pipboy.html | 35 ++++++++++++++++++ 3 files changed, 42 insertions(+) create mode 100644 gnargle.github.io.code-workspace create mode 100644 img/projects/pipboy/firmwareInputListener.png diff --git a/gnargle.github.io.code-workspace b/gnargle.github.io.code-workspace new file mode 100644 index 0000000..ef9f5d2 --- /dev/null +++ b/gnargle.github.io.code-workspace @@ -0,0 +1,7 @@ +{ + "folders": [ + { + "path": "." + } + ] +} \ No newline at end of file diff --git a/img/projects/pipboy/firmwareInputListener.png b/img/projects/pipboy/firmwareInputListener.png new file mode 100644 index 0000000000000000000000000000000000000000..9b7ecfc4312cda42b3590b67b5bee577452f9777 GIT binary patch literal 21058 zcmZs@bzGBQz&DI2At5SKf`lN5bT^1}D@u1u$EcAaQc_AcDBay9-5ZVM$c?T6gN?yE z^>^RT^LandAB@Fy&b4!$xX!m0@m5`dnBXY^78VwC^mIIGd0s+ z_08k!whH@7La3P7eC8Es)J77Xdh|e9QBhcB5b6T0zN$L#HM}ftCO&-W6Ex8O06JJf z6L6CuD3FSmojvkf@!-~IALYRcZr=@{=8nJ-EBuysb2LboZF=r}e(?3PtAM4uq|$}2 zuPTRE)n)U*WxyuuO$$^~yUp5;{0%i*W4JuaI-LrY7rPV5qTxt>p{&RkWN)6k247W)Pg^uq3FW-_f1(ThW|Mf{pB9)Z}B&0q-MAKCJmooTuNFad(p&G&EpPo-|O5hRsK79ayJ2pEAtdTVt?bc67%_s)M@9Hk6HO%et|}Gcq_~A zxt$m`L`z?uAy1eC1#8eQ;?42Nd_zl{Ng6;q-U_7Zr2n;B$-k;@y9q%Sc!1Mj2|p{R zZ2-0HtD(GrgPI$}d}t*jqD1}`A~b*jKJ454!869{W-tQEEY~a0J2e>e?Q_7t_Cvm$ zFv?`GsdAOT46?h!7}dO?OCKG|mR zbiuqgHbN=%8-2Smlgcl^1?!);p!%7vu?Fm1^QY4S+Q7rolYV5wP{P{VSVam%;fkCePlKlA~{L)=Eh^?|`k8JS&Df>xR)r%Y-G zLs2Q~L%3{rJo&=v-BROJ({2d-TB5vEc#A8YzIYmmL~~Z%?rJnoCtJFi9TZ7QWLB#zcR z-iEp@>5SX1dDjcx(k@5|_kGh9FjAG&iJ=}nv9n-qXE79g5o~sVy4L7>+i4+zr*llwJn*rGqfvXoo);oN;`SsnmzMF<7nd-K_`~^sLQmPpz3^HN(uNz;F!@HWr@U?f_ z+UeHMtQZ~Xh?#i?z;7eQ95bS5)!ezam_<#{2M<|t2i&$0^{jUH$I>OZOCn377d)j>(@@KBd-p=H9 zUFifOiPfUElJW)eILB7$W>CVmSwpd)u~ZtTsg=sM$IEx>Pfd&LxtKt+3v_dQ;*T&b(5PW*gL)vvKpqYm!8QKhrM!4p-EVCvv)>l|A1H63rfX>2gIA!oHDF`56YnM;RkSDU%JyK25K;SWu%Rfbme_d+>}4GDAzK5Fn-Q6)(cSk z(k%UNJ!E>Eku9@_kQ`bWq#2eeNd?;=i>zOvWBO~pcO$L))hfEax5r=uYX2@Aln?XD ztn{=l3w4=dh%7jxZb~$KRlCmq5VY` z3y)7<{S|{st-cAcE;H%3o??fL>W_A+J8b<#7lazS_xyYzUJFP>`lJxa?2#Jk(hbbT zI{pyq&(BCb7pHbs;nVmxEMcjV_@LWJxxFKs{v;DkdnfGhXlP9Z32*}d2(}v?@ypy_ zkE6)uZamA%79Z6ZXgCSmXYm$B-M?{R3Zjz=no0$@zyCXSzTmHj z5QB)fUg_PMIpLc6jgmo?L;=Epu;|De;rRhPE{h~M{@>1a|7Py=K!uk?T`>m$$^Kog zK93H&>n_jCccZ?MK_P6%kfndeN3W;~l7*&D~M^g)AvK{EZeF*OO&4r$>MLM`Bd8|KLTvGdZsX8eJxK zncp0ds;B%(_^4one%%^cd?)uuhQ+09M}((qP^?>0?~@p{^_s0aCS3A zdcm4Vggy1lt%iA*hBHGPzImm<7;=Y}^JC*lbSt@W{A=y5dkbDm;HYx}ez~R5>34Qh zMO&k-JAjfoHY@SH2gcG#PhZ>bl_E(mPgiU0Qo-oaq8qNMQ}hYEu{p}1z}6A$mctel zp()AuXVOpDfNWh3!B9I6Vf5pc73<8W;m}S!SnAHOFsQDPTk%#tvtT&A*!AVD(?=KS zQ_2^GGczC3P3&#%y1;52S1_;2cs>*{!B^p>-qx@umm8$lYxqRb8na+52h;KU z!qhOMg~>A?291CR$0lv4`@MZHrH@DLNk955zt=HALGAhF3SYcstx#Pa}B`2?V$O|A!>yH>+$ zYq_R9YA9o;UC!a4|6DDVsj_dcJa)AUVFqly6`m-wnv%e+_jF^PwNCR%@FMZOX>8VS z-B#Qvd8v3Eq^*4_Za~1RG~HRh=!bUv?`BL?wCeX(B@!6t+#vi@O#d?K&>9pwxo|%d z^-33Q;JBt-tg@$&B~>UwO+6G+&Iz~dOf#O7FPJda7c}@gqx{k_Rb+tmo47?e!`BGl zL#mAv0Ut@m+=T!uiU%ko*_ifZycxXL&bs_rc_4W^lbKt!Pa+x52!i#OSP@tWnsL2! zy5ix*fIPGcr-~w+hx6J>cHq_R(?A0eJ)QK$RwaM>y4@Yr7{}iW^fN58XH`5pgwLJC z-#Bx}YnohT_inO{ACXQ{lBZw`Za90sgl~ zK!~`-Cp_))=?=Xj@q4?R_9wJs`4?jp!k=IadSFo$7kPWYv=KQU7gC@^YNEZGrS0NA z2UY|`t{d=o8C?;0$-uzi@?1YLGjj}-DK-`lF6ZHbgIibQ%uRY&FEX921zZa}a46>P zrHjzvADW&3Vo%TwQs3aUu(9ZWExqOCNQIyOW4yomas3 zyl2HgW-b-9-_9#W!&a8YHA z+)(JO8oYLJc-VX(qME(PxW~auMG7*zyl{lhv}Ernukr6>|r|j^`Y~@LFfw z9+;~cz4M;&X3CJh@8cI%^>yispgRzhwW*spAJsUlB4~#O7xuManCZ`s>bK6ZwnLWJ zz^vzXvt0kqT`geCsXv?1r%0m<%;!7&DKHc{!8Ao$@{($VLY54Nr)q%SG3iDtmf)DlSVxRy0XrWw9ouma?$lWrPH})a zVdG>T>IU7(h1Xf`Z?{z9w8tbk-N!St$5c^~Zp&vYs7hCagg0c3J(Y1`eZw%oH}grv zD^m)z7W*)fXCxIbu_ajhM{s^~mCEuUE15z{3A63Oo_3YzkUV&i@EN<>JUBE-6`Cif z58g;VMUd9tdQR7vEvTlAO)ZN8OZTnqXohdsRUn?XM*itHe0xBD!6~nqUQCa>&z{OJ znIqiN&i2Cnc)i%6voFEEQ6qu@0UGH@$-1Lrf82E2E3;SbRs8KCMqy6oc7uzIZ%xJn zSvEZBi#*7~V>`ZKMwZ-0gdnJlHmdHxdV%&Zz?~EM*~>(ru5?l7hlw-8S%^}f18QEk z$Ye}n#6+tAy=j)!OnCDRP1HIw&l}MEl@88A8*ojwoK99dr_C4r%yJC!q_=@K1=a4_ zqQ0R$b$@;xg;!tRvwT#4Uc6Up*U6l6PQKaD0hkvg&+G0eJo=$Khoku_hMNp6${i5c z<5O#>VI%~#0>7R9%N@b62t96XwKy;FI#OD;=yv8xe!3gl~}6P>Q~jP#tbqD+yjLsI0-(cbTApPwH2PUO&4Hb9o|O^%m}- zjhpzC<53mZ2DA^Q;_RhT2aj~lZ zCJ1p}PBB)Nqn+?zTcUcVF)KgjlQ1)R*zsKTXKw`|{*+KWNZ&{h--+Xclk=-=Ada)g zc4a~Q=Y9UK+jW>p_S3I{*dvpvz}G3W-~*<^v^AKAo19LEmVVqC8`x?Xl&z>QD~{Eb z^UFos_}F$#N|%4GJ`8^fp5|^03+z`-z+5A?V)ySU_8`y|w3h4Re2j9k+c*G$0}guG z!A~+=zr*HD=!m}XG~sr(-#Ti_ceW02qH#_v4s5ImF^H`5cx-8sQX9IP9i4yGSt}kS z;v(ZmL<0mrD_gGmcwb5#JM_T@F2XQPjEd)py8od)%Z1=WgzrHGs6u{AcHKAtAI~4M z*dm6K;2$;WGI%Cfpq;=9C&vwZPUvV5rf%R&y(>DV_KNy_NVaeb7^4&N0Ge0tjWo?4Io7r?dCOaWI2nBEo_|!7 zEr2O~@|?!o<4VF3?Zsyis6Cb@f_#COq{$N+e0bEFSg_ef`)ck462@>W`W{;l?3wS% zW}oap-%E>7@j%1~rW%=q(Oj;k11cg|aT%QE50;NJb(?>wYi+)2Q}KKJszko2-X z*oF-+ z=h>ywS)(}<3IWThKL3yJfY@46gnd{SNKwuy@yJjLBwt74I($aXT$uPk~86} z;ygOODX*I~2`+XAl1+8odJJC>^0AbKc_iRPERnp?U0L71i`gILibHIR;o*pK)&bRq zxjt8W{YV68jqKB&9jOT`G>d)f2W5}_4f6)?lHlZ$T^7^?d=aur;`jMOz`1;?Z zlgabcwQd`>f*k`W>8$HtJ=(sz!x-KV&rA}HrBrt2Ck8Z5W(j6}MB}uO1ivpV9=K8y z-<=^*MLGXCk$w%JQu_UQx2MB@cCxtj;RuVBJJUhfg?nW-@cYKR$fFM?#~$K)J(5c! zAfStrzY34vK_H1I6?JiH!OcO9{!c*g(Qj5VJK}6l`@GmJ$wtejF*{eblJTxTxKxW` z-~(LouJN7A+$I_4%3ntQJA5$QtKNao8VR2kF84{hHtKzaCjTE%dUoaM7tQ{VEGYz0 zBjZeR^TkXHSDW%l6nl1K2gKRwZp>*IDiDm?t)pJISnYL1+$LIGg7Pl*8y@6mhqRXC zT?S-hZa&RbBX3voj*~@5oDA@CeCg{HXps&QC&0tw!jAzu zJmPNRVuje}IN1ZWl7~I*+ZlK;i5DI2l8y4s!bK#K%tr!_;!o|TimQk!4^!?PW?iE5dmFyyFHSeE@7Yp`&5*A{7A;A^yo z&@|!pFGwJ;ux|U&C07So=%Yt|-YR!qZ9H=QaxdUorTozBu@o(J*Z1HSzGNRB8*dY? zs->gg0~_td76Vj!To)lqu$F6i<*2@8w46VokZs;_`QzgNK3JE7eL2yvA;HwtG`h4{ znyw0`x!iT4B#`+o_EGvX4!?pMzWnaz0NT~2hqO~Rn!)#l251creGKgNGn;eU!YRtL zI#X-=6^8U5>M8h7=8l`CdbD9^S_}p2y(+qNmqeq(1wd8?d*8+o%t~0Y?Vbw;^N@}G%U%Vce%#v6-iENZCc0081#hz{|<8g zfTMmT6_7m;a_C?`W%KIm2CcNky7{g(A z+k~x8<#U~U^BRw}@%0A0&lNTkPVd7{Kqhn#WJLmi7kcMbEqwdFkbO1S&PkaVtfE6a z%cGVAkq;0~Fc%_wC4<1B`w|hbhGEjvo(`DIEe(8~8;xGWaMlLE1&Kj}9CNIA^o>ED zD%CoO-@W9ayz(#dy<^%EuxAnK9MY~FWAj`Q{Sv?l;zGbbXlcdbK`|hzW6Ys9jm}de zJDlTH!h$0MQs_QNjtiKT4cq({&-e#Ag=d*_F5}nVQx3mzUQMX~i&XJlv*JhpJfp52uksj3@)nBLj zj$EvpfIe6|>8X&7J^tW%gTS7B)aaD&8{FE)o6o+7+!{wz7n4@PnWc$3AT#35@#*48cec4lIqdHmlrO#@$z%*N1*zoBfX@jG^U}R$F4V1{B;prUu z^7iGgl|m`^{F~>dpCqTm_RG8~`kO6q0}$WNsMJ*)$LeQbKKge~R`DVwNmJR0_|AAylhons;1hlCZ zN%a}EHSSEkrQ_=BwCvY6a_G3_Pm8qHj-SM{F6R}@xhNetva$i;15{#D_-o=a8ClX; zvPo~iLw7FHorDX!fbh6<)@qj2fR=N^ot+p5L5!rMb217?xCJ+}z61!vb!lz(=G@i_ z7x>}e^9y&ZmCog+V+!_DU{DS&$*u|=w^%a!fRo9u;TFywF;Ma62jsVb$yMiTDq|c0 z67R@V3_Z75s3zZF-y5w7g z*e%G_qUxg(k>{Gil?bHKTZ*R`9Y7@PvZvFm`tbO)wFDC1zV$3L-vDo0DkUZV9@oOi zGy2$7TeSP~NL9uq^;Ksmg0(Gauimd+F)1%*H5cgxT$XSoD~wFPv~i^^tUmE@B`qAF zT*(^+Bx7j0ltHhrEMc_#?!7h78H0MG*izP}nJ?e~gNG4MAlJQ5Lmo^81b)d^$76+F zA$#*xL5lP|8+LYLqmC|Jkr94{-Z&H_WAH=9K;Phf6YbjD(?#DGuLHN*m-%D$6@f(& zDyyM#Di}WMRgZm_hCAQ&rkT;=W7@X&bL7Vv*Y_x92Tsl{4Dfv{6X`?RvhNd00aI)| zWAZ#qF1uFeN3X6U^*KxCO`U!g^F}|3kp2Wx2$TI8p>f-DI=joYIY= z5fb{5Da#jLX%M^Ifz|4N$9|AItM{&}!GJu-R!RXLP-52 z{$QubD%fbbk$}`C^mTyq-zIo7&mVeZs26(t( zEjg}i5LWfgpXmNZ9>04wuC75q9};|br>Vz2u(4Re#KKZkE1^sENS17bL?$lW4?T;^ z>D?J$>#A*2sIDw@leJ%Bfe}5bzIP`h9%Z*Y$X0TY5=CeoyIhbS&h0`vi`9cb&U z+X=qHa5gHLk<9`GJ(XXnAS60S!v?8%UG6o)fJ`(|J(M}~&&Iyx4?i)=fmJFTPe9?E z-bD|H?~=Ep;Z&sE=$O>*NRI{6xMYT`#^8DT?K$h#o!oJ{*K`D9_u=iyTsE#d7ZUFn z_XhvE$>TKw>LpY&6^~4FQ8c-(-IZ;-!SD2&6lDT_^dXRW>IFbNPWDX$47KEFtdnTz z+AK*#=>Z|BqK=Xl4UX!rEDf=KHfDD(YR_eg@)O(M#=Z%G6Qw%Bz4)wuNo4D#OG;3M z=8<_r@3(9!bat@wW|HygHp@7&ec;Ot_1Hym;u~i#rr<;9VlX|p);;w3>ql0!wVx#EuYPGk}a}#Xc ze)huPC*>JqRLVP%H5JibkE5orlR|b-dhZBiRL44ysSCTlkXJMz(YgG(IOh8D5<+)= zYU)}x`)zSXY}I&py%k4w&g#s7KO}TNe4KJ<+)&IF4?cTW)fj-0u2}Gnf1NX~Zodn# zal+SUl2VM>^xoq!cK-4`_xTv#y{(|d4!r0AacR`?qm2A`!WHeuZzvjkVhW}CtUhzp z_DS<(FP^~waJkZ&z)`L-p^V!%sKo+r>BYc0|5tOk?>165vJ|qHwRty;k36zt?+!fe zxOZcW1eaewyW4XyUMY0Ww--yg+xDZpaRo4R8xUq-{L!tmBFil8hdov6ZI-G$Nm8Tb z^(Fc9*y+=y(&1Z(iQdSg$Cnk7wd$*YQyh@K;@IBAX;Q$G3|M?KW9)Vd*>2*Q_QDi7 zwV1jaEnwYlNhfQ<7T7{B5Zl{du56&kaq#;6*4VUgj#-6|)yj`fO%3ydxace^g=m|S zSSu8Qp!5&ANoNT&AEi`pq}#;y5>Yu$I7;fRkOxF6cY=oP7#ut1f;e-;Xje~w7CS`& zUlOl6H;f#8x{a2ep`NnAY0a$8A9e6SIT1t0{UM$70@id~TN2&FZ3^DDQoo^SL$8{s z-XyY-MPO_duQM@cKd&6|A;kYwYX0oAuRN(3>(HtlzEn11-|z)nd>>ND`yJ-3*5ysWySzBQ&K`*ukuqfh!TRuCd;CceGc&AUj zIMa~m!K11ZOu@0y-u_5^x6^Cfi)@;`G))f?m(l%p0J}j*{#zQgOtimH#Y^f7_vsv^ z&JM4s4DHqXv})Ol#=s{A6(S#N3LIeP(_Y&(Xz025EsKzxTrFfENL=5C6aoiub3-I}Y9U;m{;WJW}Jvv#C$u+*PE?MnLD znL{Pt#`*HXfILYuIQa}+Ru&YG^prx6`WjRgW<4RdrNG(>bN&9yz4DW>S7GVtOLzV% z%{`J9f3R`dovj6TtNGY8&NGMR(jkX;H#Zmk_?m@_66i)uEi~t60)W|oOOD?y57z2* zIc}~GgDt*|M=zpJ7%8cMQJrXFW9I`?ms9-6xJ0aVXG^zk9^;kVJ&o+cwa*udHv))f z>aj6X;AeTf*7^Hh*%~UZjF_MoA0k41<_0?wnE~;yL>+k=8;effga?Y{zoE0=K2*2$ z`oU(@FJ{oP@9Aeto3O`w)8fxnq|1nfMl8IYQ!;NMf17T>^nVdjwu`xc`KX%jX|@Ko zUneE)scPLE`L!-$TOTK1A9+z`PJZ6&kbO{8snL)E`+T0w&%3!Bp$iq3Ng7R*SsRo- z&=mV)PI>c~n_qIC-}w{Zw9vOHXSrVp>Xz-aE!71?$~sKfEH6hyx=ee-rTiRu>M>m- z&9?j!qk_Bk7T!&8eb37;P~;dR(IiTbEHPErew96PNL9(%8CF*2`?5i?IU_nUm~;T! za?JJU?SY3ua3^uWt?{43pGVXylcOFV-5+hohF18u)wwjD9#K4S%lJXmewRM@)>)Nl zzyxvc^hokb%+N@Qsbz0K%(dKCnb-#cTP6{`0-f6)?gLG#lUG8^bAtqsSfCMMFH!)dF!6c&5-hOi`#nZ@Jz7u;ucTaNsY=S{Ak&-?vfzPO{4&+^Tc6ZoEj9#Ip6 z+fdB%Dc+;igM#-pQrJnhvm?`?bWbx_ftqcKH0p@eWZ*&`0^zf4n3DB0wDf;>r%ovF z%|RgRca-a#8CK}L{GBT%&T@vC>r;Ymgo~debJ$|P+sLHHOVI=8?b<#oL4PRUxG8^?+bD}Q_#_-Wnp_5_^srhE`ka86r)9zqkRop zbw5wrOo8Bt8c^F%iafYSDn$tyg~2nYvH^y zk&ow1&d2XQBgdCE8sVRSv{C`wufBKbL($F(S1%`Z7akM!VCWl{waUlMb+qa%3U16E zJhwG10)bXEHVX#qAPu>;BCh=XSs-5&z+gjLW1PAl5<@G&GuWyoKc+HS?24!zzi7|d z?$CkTXpjX zIaEt{l)y6~?5ubp?(KV$!~WeQmZRq|hNX~O>~;q;vqK^d3yIhu3Df9!c)Z8q~I&9r=)!PwM?ipcFKQMKbRKNcJ- z;#E!+o|VH+=2_i^HFxVTRr|)4k!ImPRLuk;C*6BYvBm-$b-@yrphS~&ma8)>9Wj$z zINk28;N*umrS_|OPbx__w%5FjX9C+T8_OAWGE?uD(Tt}Wv-!$<}dnBLk zbJj3qM+b{ z*wACYZ)d^!f`iUKXXb=Ynip`R&7szRa(Hlxv4!q@>Z9yI8q|ll?c+^ z`8E9#wvG0K>CC=JMxI9IgTxN`d{{c?{p z8+02b*oTd2_~wl%2Fh(Y_6ZPF_2~F3kjeUGNz)M0oby9t^eSX~Gh1Pdn7l=@Al19# zWToEUC(x?6Vx{e~zf2(|_E}!5wyRC4X1sA-&G)?D_@V|JlB$?BDQ8w4bZ_xa@HnQ& zRY??WD|1A@J>6u2v1ZnMY&#*SSv1b~mM7QK%bLqw0Xv2|zAddZnEUGD9D6l+gIG;= zZ9_iVjb;8`QhJ|6o#~Mh@|NY%noU>>Pr%DM0bgZnKhfcc2UCt$v}a~2tG=@=d$YAQ z4>Tj$ojS$1e)frv75c4P_&da6Q5mT$ln0h){Q5wf!*x*A<_OUtvLe`3(a|IgOuYG2 zc<+;hRgX<_3d@zdo-99wvG*erPd|*U%I|p(bdLL#H65NZFA$;8f_LA4Nsz=~ubQ5Y zMyqDH;Yq6xtUII@4;2InAh#O!nKy5p~M+wQdff=`Ud{FSGs@cFO4N;PV6)nOAxaf?p6Bt=Hfv{m+ma~EK*KsgE^+)#3PMfu)zrIVotJ5rX)lxQ6=Qo&c!xd)9j*cceY9^*b zYPcA8nCOs@{X836auQb5J=j*pa()>v5_T=|P_!t&5Ab?lZlN3=jLh`tHa9LR`MKNN zmy$g^I372~gcscTVyq+X~m1BUq#;Y4CE({QJgBCYuym zq6~@;&)n!ibA}oG9E)E8LvC9at#ds;DJCXQUPv!*v5&%6XiG$N0*F~SyZ6Q^dM~hD zZrarlQUa7C^-U?`S5^6u47me1{^^|x33UBrTSnAnZ&gSqdBw9AOZl;lY(GEFp$e9u zpld`nrx1Q4o=~Ah+y!NbjGe@;5b^>fznj4+;(lwB(dVwHVQ7>r@*UQ__sh5LWLjEU z;^#SLydTlxo|GhNRTKO8lD-c6jL`FEIoZVmTd9YRj_(>QbHq*DYUGmp-0EE?HAIq7 zoGM5n+WNr^)RwS1-@-E-=Sp`$nN5M^N-wk%_T1zUMRqzhyP>N{um@w4<*g=F&B=%H zd=Bj%mNX)|uK5dcT%Iszr|>h*>g%!)!rYBAu*QFk=JT^rpoUWMAY=6gJuxzJ6eC@h z{?)(>CQhPg20jXD0P4qSJxEz4k*Q)oejfVDw?DB@k$kTl!o#;RzWRLOl!`f8-{vqy zsVA4E>Jt15JflugBWY3M zvGgOZ5|SVvr;&R=fxVO=>S)1&-Id1a_4_-a%?7rUHx+We-f_TVV1Ck0p#>xTDS5!t zU2hl)0eE-j4f=A;9RwRXC>|OPW-^A9DmZ0!f*Y=-+{D*7$sK2;rgzc-YmC#4(OXU) z{7J0?89Bzc+^pY!Lv0zGmvE427pQ>4EJ-5Dr2J7B?NOUwCMv1XlMwaJvvghr98MfL z`J7%vCUrn!_lr#(K6;z!&;S<0v1By+y6tARO$V#O+p_}sI^FC8-g(z|rP&@%DtWBI zzJZHl_}d-(N_YUvL!ijqZehB-oh!8etw}*8+Ni>M%0G|`7RRxRc(+(Czgx9_vq<$j zoWA~JeV-ylhcN3~I_#OifP?kHJ%F!27uu#Hnl!Nh?@5pi?65!o{4V?>2k6M9DmQa< zoe$aABsXAkKwJF6?)OYv^%hl&RvSOJ7 zi&Bp*gWXz!g#d#mJ*^Bjpv)(fF>D2r*E@F%A6cZ*PU?<)XCD%Zmd>K>yWyBgKw_w7 zaThec`i_F`osW|JzM0ZV4coNL=ReU^<4Y$Q5wu{PzR0V&h;l!eoXG|`l>k@q4<#@0 z*7khC&CzC!!*>d&itY%HsUnURz}56`eZhMYn?*oNq5Qo5s#{^}n)U}^Nhoc(oIklb z+W_m=9;@#n2rB!J5Vkqok31^hNNUm~rw%ySqV7s36qb?%?RKU&?DJZSBueuo92G~! zkY+YCg{|k%Uy6F&VM%6MN1BW0qN8WApBQG24ryHIiX%=aj010tm=Jf%e`1L?8({g?T1SfDX0QZRhM>c@>*Kvd&>2hsP^dC!kRU3Un-2eD* zP{#j>@si_8kkRX(=`M+^j16aAHhhq^QtAh8#jy(=RZm29(^ejLOON!>qVj>7ovRM* zqvFMM$gjy>LOq~+**&aCt#Rq8yhz>eLcdR6p>GOHFI`7Xu4aPSE+d=YeW}O^E^zpr zw&p9`catBb2U69?8>~L?`st%N004nsMh3UIY6h^ z%~L(b3;_b_`muW-vz8R}pUep$s@DYo7D71N1CUX>b=AGERkIOX3`h3pIF6W)Q+XIM z_mLXm*xk)dfg)=TiYfTr`N$3z)_5;@i;=@$>tQkI+U)hr{mSC zDf0bpT&!L}h%?#X?ql58W3fMz&P2^I!wgYQ-3Oo6&~h>@Aw;6a1em!qi+i zeUkoj-@}YG@KAqET5rO+iJywNS&pav=a-T_`u@M#fvlpye+Jg@6~_NL02%Qx7>=Rd z?OiPA-f~)G{dLshPvmy9+221?QTwmfZy_lnIvxjWZ*|1yWK*dB`jWpqTqEH6&#U$3 zO!)u!vbu>th+|insl186#1j3#WAWd6lYA*5=%4xKJHvX>kukE)2`K%mSUi0G3Xr92k65QZ_OIeSceY@@wo; zWRxeTvfTfxuG~@oKgQqxr@5D{3#i=pC`lB;%(uKWDW&>UFT%pG!%3M*<@B%GV0uqO zDuC&(Ra^k**G+(cjh5`X`V zwnTSKC0`KyC46f?qb)-TndU_GmMsA73%uJJSPk1MC`?pbIv#%JbS&~KKp zf~bp6y^@_BVlnwu-0&bLm`ilcdr#y(F?K5m)P{-^IX7-?#`!d7AeI9s#E{~4dtbOj zfy?6Wg~}i(CSOLtOA;3Q-%VOOEEoT5YHY8$*5xoF!j$!-L(0v8C6`hE*>7C!1q#zS zV?ZW!9;9)?Lu4x@izHMdU`m1B>j}CZ*PW~T}5#vik%(OwO zE6T9;W6WrO+yko*3NTit>i=Axk0yoqIzNg}U^V@=(kSdgA7VUeqhY5{%_C3W5{Qh# zFKsYi#n_&2kL)j9~-C>C3$9K5OX8rFP7UxdNU}o@A+7uUfZ*WqPk`j)4>{-?IBcO`H<|2ZlVbg z*3@ImY1fz|ug}Ka&oi`j(qMAd=O-3>@M(wdZ1n9{LG8mo$pOAC%VnQKdG;S~T4H&^D2HZY!e2k1Qk!nYMLxfP$$U{Z$xDp8&Ps|}pLZEvH&^V> zj!&Xh#$0P9VV|;g$d%QBZEDm0evbutRCbXoDz@@S-emnpps**V^-YumoW0?q(*!WN{ zlFX-61lWKPHMJ`uUr9Z9@(Sc!YMg|QVnCRtppIHmZ#JBkLxN6kLTdzhBQ+^M_aSB_ z@m?c|j9-2I(O-9a1=vYYc51$Ph&Ri*!RFtCnEUQyknZFo8KJ^=Il%lvw*#a62nO_2 z{||zo#yL!EU!a!C_rWiZNh2P_3DEBB|`tB38-5RQn3~HNLtq!henu}p* zdeTG(_)Nt4hvR!{#yTs?g+$elXozROVK@q9Px=O*$225M1Tnx9 zUym_x4%=0O;PP(v@0iQ2lm$I>a-)mMte~l7WdAtb`Y7|QcMi=Xx;vl+g>U-q)GWi~ zf3r7?L8|^}e$r|a3CcN^E*$TUr6kGpgmCor6^_Oy;t8gkk3@wxHl%yTML%~epXUw~ zcU^jT1_;+=hEfPtABL!vmD;a=t)nUE-zE3S&zyLs)#54EcxSvE%O(WRdu}ewYgWEyQr%-`)g>Eh}U42?MS2Apv_C-Jg-WTL&CKK zx^9_3+=se2|kBUUwFsRj&RtGT}8k5vy9{*qH6s1s9ZzSByK3Ey^zv#(T!7UG2vHRYR?P( z<|y(e=e%O3c%&LiSSh!{D4F5bo$9Cs#*>c8g^3WYlwL0*<5+CX*&9cvlRv%Sv-2bx zQ06V>DqiQdGv|0S4n{G*exF~s zl>eg(r<(DzH|2Q$@Yy}}*@Fwq_2D_H&xBYy`AIk*?q&*e$lU*?s@luCaGi;Nx5=1r zlmiB3%7drI6Z_7Lq>@ly zWyn@^fTot%CT+f@`XwAlC#vyJ&I+WYINgJ>k^z}Kr`KIM@kMa zdF&PLvdtV7+#BOD#QP>0Lv3psEhctgnJ#vz-9)1gMZFY2vU{507QaKSQmm zv+Vpx=YW!xjRy)+7uruAKv*Yg_t)TLmXlv5(ZzJ zr;K=i-kYgA+W7R8sT0L=#7mMbS>gu1oq;@X`A&;2%-@Yq?0mZ|VNYcXA50M?6G3c0HMl zm|c#mF}{Rw>{Bq!IYXz2EeAtlzV6qrGUZVGqN^kAMpW<jnG z#O~+IGRa8I;!mR2crswY?avF{?|wfeY2|uZ85wCBPVOzHv*G?!M#x8^y+&o zvU74i%8u7pe^YPq5~P^eA>Y5)8_ADpRm?d3_0Y$qB9OkWHAv*O0%3M);g#v=^n8=N z$Ne$u&ai2=NnwH`Z<0!!+ z?+Gglt+yi9(jE>2#S_qsmxK$sS#dlE`K6g8*|(#>O5~Y^dTQZ0lUJxQne#5;9lzgH zONFhRZrm(l9s)K-BZDicN=TN*)nlq zq`Q}XPSlOo(0Qk&)%TucmsvDsDylHA+qflar)4wa`%xVIh!ujn+;2CBA-p}f53Kc0 z>l{0hWxEjXZ2%=^QHl+HKW7v`NrAMXVjnJdnH;C=dYhh^plfk8SWB!xWnOd_0ha9Q zf4Fd|E42F^g$63DNMd&3;l-nRJt*V!S_BBhurM^JUGvG2zxKFol_2cHu~ zosYtV{pT?QI#_A+WID(93Uisht44K@i&OqdQN~fNRYYeGRxQSfG&jE5ew?Nwn$B>V zhSgP{O}J4Zs4kzvNsjR#5qV2I&1fBv=6b5ZFIb=-<(!GhxA!;2|Med;d7`|W&#=iE2_C}zDj_`{`<&q|+Iu|H2P_BiC>`XW=_k0-4PRGvJuKZx?@gfO{kP!Lj;AXt2U z{vWD&^HkXt!?${$q3ZUB*I?jO>bt3!?KxqD$fiZ6hyA?dU&dkb;Hd`#vK50qufU}w zS2P86riR2+nHq79JP%rk@?U;=2rHx=%RmHDvz9scCLtZKitX#qa;dujT}>fTdu28F zqph6|3>^o?z$2mkK4e%Zb95P#&?FM?>ucW_<}CZ`4?-AdMd{sP)g^MgBOc%?oVCOq z5Erm|MaV`w%D}=hx+-EWLiHVW8L|~C=mD62gKtU_X;SeMIL%nbeQ*9sm2O5gKQ^kx zoH68lEGpeFm=U!Y=kfsZv0ZHROM=8$J)cAL@V6+j|BpP<&jRu$wGZrVPeg zN4dRuSoH8`=l_Ao|5u*<{~$dKFKKwCHK=zJ5aFuHvsm&sKGfnvT&p(b#kp9}p!L3e zc4-$PL-ynLbgenhuft0Ew$AsKH;gY;|sXxE6AP$n@>FC$T|bXAwNrK;NP@_u$fO>@sHi3Pfyi3(PJ} zrguYxLLRmk(&4~{dSx?zs!@oObUfFaqv=_V5fmQ_j+hWYXmFCNz2_v@PgDrXb!cR} z?evWp;VyJLsmhRh(6f2t{C{O#@9`HweGT2r#S8ghDe2huOUjs>6vk#oy}O>WOZK0& z>u;_}3XjI1X|V$fWmwppkN9h=NN)|CKOn5qSnL+LzLznU0q!i?`k6)yEjV=Ci_sS> zT5S3ML0apa11bNHzi0v1X+5dF{lRlM&)ZfO?qr%AKRSMAz~VPCwAZhPRD6zE0inAw zXw2^xU|(Jns!w#WjP)Olzi+8`CSdUC6QNP&!K8*GBRm{Jmc$?5`D5l%4;CHRub)x1 zz$=x??*9DYH{wj(F2z2sDlOGIqn{b*iyGUI9pi=wvn)d3lH(qbk#q&N!bj) zsH?T2-GvsEAh>JsUNL(2XUAk;bTcc_&PUUHv11GtOAY$}+PLy)sNRQ!z z?8cTQDcjeY?0d3gn53)k1y3Na6-e}^ zqCqOR?V*hKH{O&&bz<<$XNS|Y6cFQ5XE=_y@S~z3=jpqUmUKk4bBI1S=$W^JiqtN( znk_lIU$Yn)iEZ&wJdqV|8`fkV+P>ouGf9W#6!JWwfoJ=R4b(+6ys2PxZ;F?rjSH$y;Gc)N3J!ycZLfooGm z7Y(hXiwf)(1<=CwfshD-Ozn(pk?!nXgJh^pvOgUqc-~5oGK(g&x{n z^hyg$QZtm#w<`IJ!#C-=5e=+0H$?^yMz4uZupFi*`M$cfJU=;|PMBqq4t}FEpjlAl zilq7^q7;kdD4ps7t~8X)BI;jlwg`dIHmTV)BXw2;u^2SWX9}y<=HMOtW4|ZM46u{VEvs)2rO#Ua&&Mty#8z|NuZ|c zyGXB8i}bu=5@NgSlje;FrlNLjLg#@qbtGNeve8P2)7(noCSjoIT46KNV6$9IJ7>B@ z@@45JY}YE0wX(S{b`l7boN1PZ6!_=tHd9NC+2o>}>0Lix z387l5<5b!vhpx^~toJeXAB|p90Qe;mMG(}{ziK*@E~R&&oBWz&OmZ<%`{-md_VshW zgMs&qeAjSSSMIo`Xnge+2y~cdz88fBf+o5tnU=#041kF0z8|)Szva7f7GytO@ppIBgqfQ&egL@St%?mk^!S zvLoZx)JmpDD+HH(vLna$OVDZwyTnN;J!%iWaIWN=KlTT@BDGxmNL!o+j zVXT5t-P|}l;?SnGfx7+r5M#8e$eg2b zM-zrKO_hC+bU8;=8kovnr?}?UH)7=&(-Q13e53NhBsFR$0rNSbR}^3%n1R(heDG%x%s5r|COk% zN{D6p;-50D^KUd%Uu7TFL)m2MDu|Mf-A$e-!5yA*19*#|gPrvcqc0J>^ggm2j^ z%vQL1sMsw-5CWIw0$i$Amo}z4XKfHKgTh5(cnk$^e^a7#`2^KszyBDbTscrjSFJ)n@BjXBOuo~q&P$PN zUB{I8mSFdbWNsN)lh5xpfAqQRmyg~NznBkz)xoh~*VTAYd|fLms#P%R=T#_22KvVf zVD*>U8mF46etPV>C-L@aN#xUDXC@tXRmHE@gQ)D7;L0r*9~Mc-l)gsDl3ibpg13vA z@$Vu$CsLn}gcj$9J@Q#5Q-)9zE~uqP9C|t9cg*=PtP)C&r*#V4GLQ2Vp4QW74)v;g z8|a)C1Xh-w=k;B8SMXj3u0x1p1+9y zz-5^*Nma}`+tZnCV#{}5-QFEcJeM=eFnGb7E;IP`K>y@$Pzm4TW^PpZ?KDbK|7RY`R?%Ta=g^#fz$tNKbVkTum)2Z)wYD;rwjT`djgfqhJ;pS3Vd~Wyg^!#<(H_;Q;U;7CGhkp zh4KpC%scq=jJmvbZ4$=gsmYWT6VP|M;}-3eB^RW>M>f&E4c&^{@^UN|ah<;&1r1Q4toIbB|q*OaP8S(sOb%MDH%WE48;M66biIWCm@&GlX& z{G^$i*Hw9#;CY`$B`*~4_!1LgYwIo|Tp{ZE1{&al72;JZH+JP=@yE0w>ixfDwc8{0 z4MCtdqoa@>pqRu{e-Cg13^!+mhm5m0K4EpNyAeGhAPG!Y51eV?Z;4yY*A~6On-9#~ z=;$|eRGKtccO9Qe*10eRW(Yx7VG?whS$s8Y_H{vX-e5djcmL;+&WA@-kl= zSxNbq^!a0cH9m{T3MmAS>Hc^xz z+_4QgB38iyY3&i`$X)9MvWVY4xlbq-o`fS8VhxX!ZdP~Cb!KogEGNpeJ*{IQy4>D! zY!qY*tng9iVCyaZK(urfs9)cCTTb9!JX9Rm19T5MdsqPH;Vfx#XXNRJdIAI!l5*x` zYv0L@t#e||iQ7wvDIP*C233s^Bxy$roSqQJso1<0F)~9c{aBBQRF18|H&-+Q6qQmh z0eyUTXgE_=Hb$#q7Ximbg^TS?iG58vj2?-3xH)&cNZJuHzzf|*_xv}r2Kitzt(o-$ zm@6Zv1tP^0a1^HF$7*Tu`tNqDokEg-@!AHr)bEyxg;%+(#ig_=)t5RQ&apzuqQ?(1 z*dUNQD!zUvzYzccI*g%Q%|(m)dy-;Di$0nTOO-!#TAyWJG-7h_w7#D&oRr_5(JDNFIxm2wcX=8lcMBffWn3;R v`?n^Lr;}yH +
+

Actually doing input this time

+

22/03/2025

+
+

+ OK we're back again baby. And this time I sweart I am going to + do input. To show willing I've even already started diving into + the firmware to work out how it's done! +

+ + A
+                screenshot of the dumped firmware. It notably shows a function
+                'd' and a call Pip.on('knob1', d) + +

+ So that firmware screenshot tells us all we need to know, + really. The Pip object has some events (in this case, 'knob1', + which is a) funny and b) the left hand wheel control) one which + you can register functions to call. +

+

+ This screenshot is from the portion of the code that handles + switching between the different health animations, but this + applies anywhere really. So what we need to do is: +

+
    +
  • Create a listener and register it
  • +
  • + Make sure we play the knob click audio like the rest of the + device does +
  • +
  • Move our selection up and down the list with each click
  • +
+

Pretty simple! OK, lets go do that.

-- 2.47.3