From aaa081b4019d694c7a70d5fb87cd0c43e72e94fd Mon Sep 17 00:00:00 2001 From: whowechina Date: Mon, 24 Mar 2025 22:56:16 +0800 Subject: [PATCH] Button in HID report --- Production/Firmware/nos_pico.uf2 | Bin 102912 -> 105984 bytes firmware/src/board_defs.h | 2 +- firmware/src/main.c | 12 +++++++----- firmware/src/usb_descriptors.h | 6 ++---- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Production/Firmware/nos_pico.uf2 b/Production/Firmware/nos_pico.uf2 index 07ab3332d8e11904ad604ab09dcf319e4d1b5910..0e85b52729c4316fe0f7c348d3d568cda5373c18 100644 GIT binary patch delta 17815 zcmb7s3w%>Wy7&0~{#mB34&kS}RfXQnxD0f)7j)y_K>W6%D(K?onBrrfKv4Ca<3C|K8v4UVgtX zGiM&(Yrgqr=9?+D4w>zYY^M@`@>;47<4;H`^Odadb)=|${q+$h&0iwDEv*(xdJtlD z8Hhb|5h)OovJ}o-BljcM9>1E9Y>HN%A~OKsx9~` z@!~|1Ad91PWRr|3(1zB#?H=|bH=olZo1GDEcz?J_>`$3E@`b(RKp-gw)L0i-fGZ`Z~ z^u>r87yZrUC`PQ14Z`W8^wsZEvA(2YwSwpfgHAx^PXO-pJ$21yvmwELjzjh$c55di z{D)UAY#zxoIkF{0dVD{JCreHg%d%SVbR96{@kOa<`igHhI<7}*3}3G=V}u@G`Mevw z4_XdNnadAa`lSV*r5h#3nPd2JJqWWqc* z7LI$8s#riP8B`&K5evKANO*b>2@iOYFf@`-kpN|n_^|M2ue4KoW+x|fH?xe8?PWkG z65*03AwD+F+Qy)(Fi=$P=RYX_U?=1q^xOU=cNe#io5wlF*&pxp4Q%s0Xk>)-ZlpyT zMDU*AsK;cqhIC>zJy3Okd%$#%JFRKwFbsy?AQKLGu^RnxO5Aee6X=0 zddz1?c*OgpA@<5hS0N0B-HUX0_u^ZSuntOZ_9G$N$EuNvMN;7{PoU?)#{Ov4XDAD2 zr#Y{~uCjX#0=s9Q8fj?02HBKLO3_ZdYqG0{Q%PVz!LSPf6ado!v@alq!p<0F!d#Ubin|q1 zV4dH?33iVAoLj`%xOg-U_1IC4#t{~jB#en06B_J1kl-f|Ss9-%l?Y#W$iDcEx%q%a zuvb<**;#3n3tNX|Dj8zH;=UWk8U_Xuk#gg|GUP)45ScY5Q+|(6D*VHJYekU2*ilQ8 z3Lm>~sJ2B(g>&xc45<(^xU~zcE`JP6TB&fwjWbH1)b4&#bphIZ=#~m@_xoMx44$l& zW|T2|bX7%&+6{ADF8GEt7MW^xnZ}HOl|#dH_F)Z+5HA(IdGqMjD(Lw10K}MbgMo#$|39u0jY%s?$Fd`Su z3^8hrB^lU=?i9N9pecmdYM;;d2P6lNgJf2ujk#Ir1~2)%CyuJ*uK|~u6ekbqoR}4s zjB+h)&Q@!)z*&I@+6g{LiW0yAmU_rF#T>m{Ussl(zq@QFCjoEZQ^}-y$h8e3Mpotn z$0HH84BmrcP573=vTNv1$XV^K{>1f^;lFy5Esq&K=nIec)YyPw$D&cc_bFIZ=S0NX z_U%X1swg+^ApJxSc{E9%CK1Yjs#IDCl;#3eX^?8kAn8lenQ5;8?_mdHUtj`{z`<|! ze(tf(Jm)@j4I&23r$`fLHJXt000+PE{S9xGzn^wx!a?O?eI4#ev!NcP-qeFKEO%Q< zP47-fTh*|tBQ41OxKV3*wp5MsfSDTLXRjyk^FFLD=QO};JGa83we&Z{wpy8Zy!%qx0q)ZYmz4GTYHUl(Fxg;o1{i&| zv!t9R{qeUk)M z3`WRx+tf46H3%k)!RxT8mRl+ic15Vul%D(^>AA_pjbqHcH6ze&o8^ffRn7JEeNmBh}Lpqk2C-5zS!r2@=!-%6Hon z!DB5PQoyfiXgvHHhsMG0yrC5MH4G)g?`=a#@H=OSl&8&6%7u-ClT>L?;P8NH`E%cS zkSZu&`skFPZH7Efb+qXcPPa%^$$D93Dw}L(gfkv+hSKHBmN&VYGw6^_BzXE9QjCk{OAX8jH0s)m(4RK_zO5P%;9` zvp+X&q=ZwmD5^pt6pUB_c}dVZsqobJut|@U_15`y@QqE%M!FzTgOpTCkfM<;@<`QN zYn^|B;PgpaMz}iS)8VT8~(=j9(*vvR>$c?g4_xz9* z6g1{#n0mt#7oJ49uZ}t48?cQKb4GUSrIA7#Q+&qoYcJA{g~l6)#w;4UFt=^Cr3uy7 zDqAq zhPDKlkOLD>4;P)F`SFl{GGmzX#!^Q;{DR4o)y|zn3t#aKs75BE+leYOHCBH7AU6?t zRQQvygsqCe%!Xwpyh+`L7~z2tosF6C4#=_xBuN`0@H+wM%8zP+R^u?uQBrro7A@L` zG&?GvUPQMKR*iIL)UE^E_JtVsl2HfWDu2pw%NMsI-@rG+zJcuFF3T^LqNWF%iYyOW zy3D_rTQ{3ZW~5mfEIFvi{Gizg9u+(;pq~lDFA;RZ8!JlGbPJ>zR-tN6dz@*T*tXYz zzDTnr(DYKQjhV(2GE)y3e(J@-dqDCj!(aNO?KH)`TMX~^u?T4obGxSdrgw0S-1y_# zqno*QPLAZqqN%4U?Tr$cp~?yqsAt5pD8i{q4{{X;x#)xC#&#}B_@}4bRLiAWd~k;O%WTAg zia0rWjJ<0@uIYAgm9sQRyPumqc`1jTS*BFWa>|2$EmtN5hA2riMD3h0OG*aV9KxzI zTBC#~JsJ6*f-#*Odd%ev8j%-LB{&Sa=KlMfS?xop7V0(uYz5d4Kn<<~Qn&q9(_NsU zIi@fD8+kZ$X`FVXJ;KgEzSR?w}Hzw+SC%8iEFUz#>x7y5t4-LQU6(Qs4p$$Vy!4|mIGxW zHTY9ix~#!cf#dW`3`yq0VHn zsbYe?euC1m4#qaR>bbik>RX{fRIgl!L0bs}sw{E~rejxx0%jM-1P8QPT30>ov>shQEBV zvE`DhXw?zJ(J$U=IpykFwZ(w?o^~;d23z*KLb^H~2j^bU75L*e>W^ujY*J@t*28f` z(i`tzL*3ml=|Q*jM4(xaXQ|5&SwyaA|9V=@GRY(4ikfZB9ohDaqOH&(7ZOI)mK;kG zOgv`roGTI1_3rmvT-h{cKli!IriwLIV7X8<;)Ef*4n8#wSlBrQvHPdO$t4M~@c{08 z6YgV$Z_5o=016RV8)IY%~*0;yNal?`Cy|dBG+;{yIT3@!9`UDF2}EpKMkra z6ZUVy_{g0)HS_c!*{GW(ebt9GqokApQpyNYI?KW_ngd)jh)zYk0piO+ zT&e~tHWeR4R!~(?l~_RRcu1*=6p+q=?>&$@!1DE`Dpd6%S({tH#1)h0azh(s8n!7C zk5O($KE*+4Q5>|t)vjD1MR_eST^%Stsn^;)&NR-LYLN=DzTJ5&Ve@rKewx5f70{$S z?wmsE^R;6oaDu|DZ{QUl9Rmk>IzL@;G8HLOpb2$U3fNVIm7q!sC?QRxgunV2P#`-( zyWe<`oXeliFeAj9pAlny8Ct)D6z7SmATRBUVM%9Uw{PGPkH_U3(0K+xXS4GI@?cKFSzY=B>_Necv3Bji$nnt6Pf{92Gp*uugz zii~pH0wj$9Hh?OC@|Vc!!UAU6FljH$42yC{MnIGdktiqqEEWLv%;BTzmsPr|e51zF z-ngVuD*R#i81VOLBRDSy&YS6A0J18OldZ^t_B)3&;8!wCJcXI9zj!aY#>3}7y%b4e zRZ19%H3G>PKq7OD0VFXH3X%#E%g=AnueP z?z3L9W4bcsO)ul5^5%G{MZ64Zb<_sOWp>8g5VQS2PXPE4;6~6^{+%wRR~w`qr2FIa zX+%}5X>EaGdpc6=fOHSQ=83=-q^AMChOxK7G&m3W*TAIPAn%0yeUSG;DhH)cgggtW z4j>WodPt1`!!S22kb?IzNsO`&r9zR{Z~Cyk1yc(BdI zQSxYscKk}8%#>!?2@9*zZ0)9qD3b6*naBnv3Jaoz#^xpnOR34HkoQWm*Wmbtirz^1U4pJ-47#|`L zjBVPtbxMW#UUF`hKKC1lxH|jgI@H_gY=z&G&RAWoBSBZ=XaSQR&b!q2yGlo`RLJm< z!Z}53pT{@g8Ki1m4QlB1tTwIotMwz#D)_$5L$=Jxjep(K0P#*dLpuFgLs;b5>VU{< zk;pEWWd9DRIVc6?)2b4TvH)E zHJE9d=%+dpq-pR=lMdxYo-|XszdXz|N#NoXA?;1^P{TSrNP6b#TE~fG6#7rQ;$imE z+k^y2%VCttAyP%pwA8MgU{n7a+qwqr3cV%s49LncgONDl$L2=yJ1BBOQwb>IN-_hQH+ z*6UK92$a_yrB1Q{T}s~t*nG*!LBmAqDT9|I zmEu*_pynz)s2v}aRYV&l!q3AWf)6?bG|sVzJqu6^bglv~Uf@FlYagYFh4Y@n^A+6! z3KBRae-KG zoQ1GP5lUSEr7i-c5gJt<5G?~WV&N*GwrZz*KTw%tjS8I)7H5Q`$Ml9}IGemvwT!R} z&EqLMv`CN8be~UwXh*2tw@@9Hj3nGCrmzqwREwC*4=|Y@!DKaT)N1aH`52Uvk_;9= z_SS?pTua0f*RV`F>`H4m!q$%B)E5MB7Km_myAG~CWcaTy_8LCxrJ+!YmNHIBKtR2c zF(Tn{x1zi7B$zGvu68zI@7$n1H6%TV@}eD4N0kWgk_g3v5*YHMLztBa#=%->D-v^Q zTx@8T^>vW9?_5dPx>2T*3j<8SwL;iilGAnNQO$rwPw^h52$Mo4)J*qROnQ(rV!^WmA zKv-$McNNM@>rF9LV5Mc;!cx7H#rmmciArfP>#-iQhvDmhMNR{SENpbJ+-y@-pe5$j zP1bIiMlyT&lG7z&r3;j1rsTLq3GE~c{tL!!jt%MObfOIXdGHK#cEZPDq<7otbr+3F zJMC>;6lFOWgI^t&6dIG*14;zP0pXuRqMg!p(5<=#)thbVDOFQU zs#Qri&5UxQ9p+U?_}WvJQ3ru^NeSpmtuk zNtH2p14=Y6HD{V~;gSWjnkL`Crjc|LrG)yHnr*G>RMYbjL|zpU(W?_H;w<%grzTmi zs7wZ?6eh|L+{7T0nK8Z4#K6uFLXT^%GRVg03t_0JDhfN1z7R&L5Jn26zln@cZiF%; zlo_Fny0e4a9T4$|Y3B}W=ukF<_1;<%(0hqU?@s#xPKF-qM7!{AtZ6VD;=V37abxpP z?`|h7zNTpHUFGfbmiDPo34%kr(BOH((BN2}375P1i{V7IqO1hvfF&$~^2Lr9pq$CS z!!act;+{}i4yDzOZ=qC@U*l*E70-m?1rE)m{hTy^QMhpdlvX;HLupigRk&0GrSl!K z{0c`2`r9N3FnVO#Ck$`)q8xiK);sS<7+FuS-6wI`eLK?9dzZs5|)kyip4rbFB} zNjKC31*r3ZI8^P1+Xfggw%6y|y#fx4E4Ky-KPd7B z9V<5x)-qQb@3EaE%PeZy)+4ZPA0gW<;)CjjxbOyU|NIk%AvlTBcAJinF3VcNu1;a@ z_K@P$Yr~S=Jtr{mb3_CGlb7BBMzI+t-@rd0k5tiY8sxw8=jH4K$baRvY5EZ&v^IuK zhLT38RhW=U28UUPR|>zk4U->N7ZG-il9@7#%vw{3t>oS{GlR4r&PWYuRB^v`zSQmy zV6#1CGQmXbYwjiN+NJm+Xi;JT=zTAFPf4>IaS(HWWndnuipZ$wM1{6BOhz@vv?HqAl$R4x`#-^Sw0 z!|><`sY&R-Ju+YhzvqqWJk z0n)V*q}!pqNw~nxfL-;9+uZUSZ3^a~}1blcGrO~d*^#Km+MI4fjmjM6Eqm4+y8)Ez~!(=%Ynk;XM`8o#uPKf)x zE$(*$YF{a2eySujuZ-#_d1-)yr4byw0&P1(n&}qP=-fm;=;FxAuDM|~Cz}H(%n>NM zHjxcoEYY884mTtT?}-^YRl@wOl6-k8lX-Cg89Aj%5Srm}&7g~FZtnt8@J2z*dWc0p z9GrEM6>n%5-AS_jjnJy}zL={wjQ(Y7#}V@L8*s~XdcDF7ra{lD@hHY3LrDBq?wpv3 z)74QK1q%zNV$@w#Ngnegxvf10~!r9UV8w?kKP=Nc2cP34^)r&M~ zLGJVWQ-S+7;C>8geMhv?tqgF#GJ^Yebg6$B{ugi`1>9eBg?JC3{_dUGQ-0|k^s_7Y z!}vD)i=Fh=#yjxY5YprZNmlgdETm6Q{zw+|+!alaL6o?SRK!7#=+64M0rDjZGlgH{GKQ_wZc2lIz-+(XUOV@=UNA&3Y!1Xyi*fX z`S)s@I>uDPTxs^dR6vQ<&&uG2hvb}}H2xP4ylJ!3%^N+Dj~S#9RAmlXdVV|;T}(Ed zF9@>onRxb|2XFI1GwX)Qz7;8|r2so2fP^5m0U)fXhN!F%mSWtRfD~&)Qp63Bmp)Kq zH@WbECUF3`U^J4-3o#98WaW=8HyQpw8?TmBylMrL^B+x8my`64(w$KyfYL06(L#gokedc73#;;_D318TF1 z)J8fkL8Hr~jYz^bVicFnYD(7$-jwo0=~LR2ueR5aBI`a_=w2h)pSK2i_*N{)=d+kO zgT(o{p0Isl3g3$<^a1@VqqWKF15B=uVDbtyx@z{TnzBGiQ#SG;y-XuPDkJ9`aC+!( za2Wq4X5=b#|8kAeGf?MaGEwh`*OD|wPJR>#9{2CQ^MtzK#EK08;u}Q7mq3@ddV8*^ zws{8bg8W~5-@eAQ@8mv)87Ni><>>~fXmAr!Y?2ob2>mj#wCPI zi*nvadYu#FF2S7b;pjlqZ%tGnH|PW>_{}6hQR@F~`sO#dlkEB?IVj>k#Ug$KB3{#G zb+T|j3tTAdDgHS)JP??Jv>f)LP1Ha;$*ODVfa&pTlY$PEGWN50P_6;C@2jKy*vLcQ zj|z~yF`%K1A`Ov_?=30|42J~uKtMxbr@uW&Vp0_LC?P=NzksxmDc64&WE`HNhIBwW zu4}P{T)2K0VgIg!T*cpSgWqj`PbaMF2NraRFhZL|)UHjOUnB*7yV{ssvDqb`beSxpxF z7+TAQ#9aTlXLc(!|+gSwA|~zx;jfX-_-iK;k_7(*}rK? zp`9ja1bYffYN64XWIfI!?5|bKeS>7}uf<_z_ylPLH@{Xg3q3^mwUDsxA|}N{YTf1W z6xnr{01ik+J!Lp9yq)QVst*7@Bq!Z@%ol^?iknOF4a^$BtkXsNS5vc9lOoT9L6)N< zSoVPSydppGc)&Cs2i=bvlNTC|G&6fOGj#*gjf8$}1q7Vt+4zWlJ=~qLF?maX2=HiVaNymr??Crph@G5u{Eu*M9 zX7URee5b!H?;R_WiSJjf%(kcAZSp1+!I%NbGu~?0d@PCQLi(=pQWNl-& zHElc6#dAGXq=Yin>CvQ(r)tC!iyf^cY~PaSp^x$7f8=NrIaPEC|IzKfjLW^uf=Ok)gDL61`c&`c`&4(04AN10-068J3DqfMwisNO2ON6kzjn{Dw3f*g5jv$q}QM zMmuHTluSw5+O!C2*|bs@(YrXJw+?R_qfo+03D#CQr1_bAK`sv672!lap(LVx zE=8ChfpAttgM8YcAk5BeJQ{;7%Rmlmw+7BJLykQ2pzA7cFTnTmY+-~Gnj3+x5L;4m zx{w045cV_+)-)C&K>~Xuo-Kl2n&1-{K0%L1Z^n^YR;4zlA>L7hQ}9*(-6E`kV+Fsy z7>~ZQ;}gootalc}WbUA?E*IkzL*i_txD{X=lFfREz1O&rUEZ{I z?fvW7Wh>YfElncJ7TX5R8iJM7FYyW0 z5xouAYS;mU_W&FQcp0D*;50xFzIiWuD!??l;eeALHLB4 z2pZ*-2@We2Mbp`$!lD^$QPHd!GiDW)@J0?#5AwY@f^Uv?F#_M(;JbumcxOO2x5p!t zW5f^OE&Pv0T*R}L5mMGga8QY};@ENU_jr5Rhwx^G@2bSBSHhEIKza=xFWd+|V4$fR zApRIcNC9*J(*g7VRRDDW%>Y(_O#p2GdjJjtoB%ita2CJ;&`+<;sKNZT7W`;IRM7v{E;fy(y$A0{&f1st};|pU8_Fw>}j|?r}-x`B+Q9m{y%+l z-slYGkH2nS+yQyfNHpTnr_QwN*IU|J_XL}NDm-M^0r{0{S0R8rI(^qRt)=-XH2*mS zX1537q9`9K6Q}2b_3wzL^keNYiU~BykOnU>VK-Phf>M{Eb@7wkFaT1i(oE z8jm>n2rMs;0%yU0b_lCo0QeZ-Yk>PUBSpevqxIiC4m+ywp(ms4;$ONGPF8Fk z-a!f>Na1(zD@Cr4sBnI^6LxK9VV*kxt^!;KxCww>0sjM#0h@=GPX1CI_;9u!FJ)xz zpgr6pcFMMTT$hsS_NZlOEJ7N1X{CbQt#IAPuWf`=!x?^WBQE3bY{V(!9X>RFKGYAG%4xj)i$>HByhKrb;Q~6();ar|= zjzF{y$Hjz9+|F-q#(CJypKONn2)i=8Q+P0fot1EY%i^D3iDzVbycquc|Hjun{!{jD z4FAmloUf5kJ%r$YE8uUg#Q8jH!L#sbzQKYg%8x?(b6>zVgzgCfl5B{O!~$FNKl0C7 z@Ne+%`Hw9)2droS5}sWR+>CBDS|WO_#*I-l?tG2^dNtN$M8g=N!bA|C0c%uLE8*`6 z-j*Qb0pQs+VX+>L5Ni$9@><;Fk6Q$I+Y~`%Ej}dui>HU=}vy%2E2Z}+kMkjUzyy3r}cLwTQ9q? zs@9a&!m}-5W*?7WwgqeP3;c^M_zv8{54FJ9vm0Sv)${W=;z?6fz`qQmb;Or;*ZrTy~{aHce_mYap?+gD{Z-*VY z2w%>hdMhIe{*-fH;J1FXCX5^ZYYe{8> zWn~`qK|wR)ZT+jrZOYncsoYl0HSnjkG?&U6w{3l&T8sH*-uuim1JAtI`+nDVUEk;B zJ?A{|00wFu}DD=t2C5St;5V3bD5c~2%azL?~?aM$=1EHjL#KziKC(+@{ z#D`OeN|{L6D92i_K^2O2JH6alel~AL%}z!v_D!^zs&?~-4Xr%Vnb0uN=R?LxJ^8l$ z^466x;`5%MKB((HhQt*fq(h?DOPZCV;`Vv*6eNx$dzGVCjt;KqAX-U1n*d4YpC4KH`vE^;IB8NZFsaNNoNvkr}07{^{j;zs||mV_?{j+sE&=lsa{Krg-piEE+s=4D!! z(<2>+V#E)FwAGh!*%whZ&PngP4kmjbWGFncXA(MOUfjerr7&#ifu?VpQWR{d)aS!8 z;v*&@oe7$av;9w5`hf5}evG57t}QMR$i;?;)%vH}YVV@`I0fqbav5=PV!9U@)jgd4 z9-f0<{ML<(Nj;oFk1+IEoH!1!3c%`6EgvJU3nJ*_Pkm@F-e*LUpqGiq%Z*2q5$*F7 zjcq2{j>nPTx~Qfp{#ZoQcz>L(nJ)(Yrnoh>Vzj6(P8TCibQ3p)czGacCn~!+! zJxZycm9l=;#UPe?MavY#IRLf-G(umoPR1H5+5?DVyXxS(adtN^I(hzcelFk4C!vw3 z+lg`wJ$b-R?ItuE!&pViMwE54!VS~Q98V%5T#7@Rnne*@^-V}c=O_F&9yt|A1x}OTAss2xhfJQ5 zxGcgs-dtO%GT&Rejc3F+27)@J!VI~?1Bg+U26aYg+%d2mCD`ySrqXNZPpGfjUHzHs zSl|YobOMNoy)i-Z)C4p%Bca`RkImMTon~KPudo&C+V~2a zBCDN`A<)uLUj`G#QS%wyi1 z8H-SEMlV2^pZ>x|6U z80pZL0dWoxf~$nn+n3m5MbRJnB=JQMba(LARWQa+D7zKr zfu}o*`gR!>qIS!;^DEJd{G=9GLXynsGx4zWxwb86m}Ym`r>LF(bTmUMZRw7M4r++m zpq~75?m`BGkIS^-@m7q!#F1P$)j6(0zz1w4{t7 zl1elA%!(Ki?Ed zFsmB8B`uR$QX!Y=ozya|CB=FwJyz6sr?+f(#YH(pH{SzmX#6+;=q@^XX!mtOo_3`I zzOO?H-8Yi!fPOm;&;#Ihj^G&aswZL{qDoK9k2nnrsLP&F@O#NK5`HgwQsMWUM-9K9 zc~ao_jE9^_pI#IvHV=%|r9*+;gJ6cHxrZQXq3N@pK7E|+93JCP=+tIqMH;8JGh(HO zOxJ3ru+Curn1Nt_?*Q9{ZDyod&^VjQjBT1ax{gqpV=7?bsY6EGgLJ($jk6WxEA3dK z$6pffn9RYsk`a^qK_kA>eT?l2ay}Qe#)AXFpy>2wAL-PA1uwWc`0aH!f`G{fV?@@M zQS}-c|3>oBVE=^xnVy-mk@1_FnW^tve(gnB!=dtFck~hy6m7oPi^Pk*JeZ8T`982GyH^@7Mo4KVm>{LW3=L)OhG3@E`q$1_@iBKX z2%!Way1b^NG@lCjchbF7Ho96J^S)s7X7A=-LzS-w`yUF73-yl|tBEQzaag2(%1IzI z?H=WkHa-J+b@;O_h!J1*8Jn3YAAkzYpg@ItBmB+=cFIF~V6oLpbCko=UNjDi-GQd6 zshYVnvG~Wp3l_~6!T#F=!Tw(YI%MVbY76pqs z_&PrIi2l&yFwoMvtUQ zKWa{e?X_bUTr+tCTEJVaXlJar&^^0+Hi&+=drp*_E80rS+xXZvvvm(2D_Y%VTMeJ) z2to|~muZOG%|F8{$(#DSGsfBOfVr~7fU;WoY2z00xKC$Gb1Xr7cxyI8va@m{G7*(N zaVT!9%F=FBh2}WM z&+>NLLylsYK{G7bX^u}CN2(xIs*aMMVOm9+XDtC8Dr7_}ik6})pqgHFQBVrhz zVSO6H)3lyci1Kdu{`24LmNjqZIZ&RaXS7v^N*w00cyXV9%fHzclOtYy+^=`!I#R3( zu_^e8YXqb}41DC`OD8j};dsuFaaY7;K6k;QWi7{)Kp!Y)g#oq{K+J~)+5{n73hY$? zYT=vC@kkttYC)-H0M;1;;e4$4J9o?(8nh>oi{mG2e(}6Icba22&*q~q{@T}J8{^n# zK|Lq?2$#PiG)hC8p&Xf!Tk=~8S5U2)=AK(=;d8+(G$z$M%K1tVzHuPZHR@E!T~g)l z(o#^wd>SAh6zG{4H~FTZM3Fs!4TLi}q-MDp^CP+@8(@b3I#OLKLC1K|i|R}Dqk4jF zEY+FneggDc1u3;fBc!eHeG}3iy4Kk$(ZPM>b5ntqq9aA3b0iv8l`yx^kzkwdNWp|F z)Fx9JlozFOGoMrxYMJH$aTIccN{y0~8Wp8fp)rM$rcxaQ&Qww{pL|r9Wo5+R0Oo@I zuLr5gsgI>n@tr4OUR0C^`!@w+Y#KYo%>v34N9)je^{XHQ=G^6{IO|KKpr|OP$sf~c z>cYCXit~@y%;z8McVV5Pf=3*%P`NrgxH9vL{%^}*KlM@QC|Ao5P@L-$3Cws z*uUD>59X!KHoQd67F8;>{^JI{gK$$djNm6FQ}v9`M;1*TFHxK*+aR?}HKo&rRM-o^ zvjgA?z(IihFOhRo3uYYh6~X#{+;F~5Yboe0EZ-AXaKTiu5Po4P2F(m1SqdPx!v~X_ z&RCgmH8}Rv-BYI!NBYT(Vr_xauLblYJ}T9D*wOV|7gfRnDI@=pN%9kL+RhH4ej$h;r1 zRsapaDuDff&w?}wK(U_;6dQ=HL|rpH#K+(mVU;v^(PwZhycgvq^x!;I4+D@?9^01$ zVtT!b&c?2U@TBOPBc^6=xFw6_bjk07%+T_LY=v zJnp6DG&oYjqLla!hwO*)Mu0FQK$sCd$>qtweu9tbQ$hNYm-^K~sMS+*8H5o5ZUFok zb`QBw5j%8-nM;i6?2=lMT0YW>Nd0u9G;vIkJIwT~jTfNF91UWxLn;EKfnG`AM5zFe zq=5s$(8+>)`DmDxAwM1Rv5>EYv;n{gBV+@ln*a_$z8%sIfSr&(0Vzyywiv7OQ-yfY zOGiy5L{sbmx`2Pq^ZeXAKHb*sOmn1z#;x99f0>VlrK92NMek_aXlt570Shekq@ah) zpOLRzhEIL79Yn=?jn zR{}~HRNE}*3yr<8i;|@zYk)K*@5m?P%{fW$2H;Eq8BrYUq)DAQKcWFqmB^=Yb1`=k z8q*V^I*{ph%Wy<3)(HDNl*{zSiE9F+&s;oe%aP~N2P zER-p;P!q@=$UArG;fkIbg}B{KS}lcKl_%Km^-$}t1QX2mthB8RS>NJW0pCtH`N1;2 zGS{;ZPG0a7MbTc1cp3Isp(>f4y)LA$vdyhbb0lz!YtrosafX{i3(Dg}O(3Qz4xv1A z4}zs*{v76LF6^A+#H0YRm*q-6d0Pf|3dExaUnr||4kGHlVlb58zZFbog4`#5vcIgj z`Y-N$m!U!pt2Vka&V{E0y; zx@}CT{1rEKw^43l?vSbY{7a{AwLf zxC;HOZa3P4+mz*T))>*@{}kpMKh)jDA#MjiX9r@7fuCWMt3XKlQ?k&w6iUV6JAVjImQvO4S*za_tqH@NNe!P4PRBnr}0prsUpKw*-7zC%N zvm`@j$qY?es(@&9xK6ozZmZr+bn})+Sg3QP#yL@q=WR=N7r}B+;6K;N3hPiSX=7VsxvWRV-oM7#$VM`4#(ZY06 zLjtuBZ!O@M7yZPtVDQM0sA}Xb767?A%}Ck`4hSn4IR1Ug&30{j6{c)5r*2wAa&?}h zY+jVIb?dUmdlhXcFRmx{kOtuw8S!W^2Ksoc7sHvOj7u_$4;20OKHqNGbvSH2OU{+6-_`|{S z(1xvj%_hRF-7sV$hfJCFwKEjEe0{Hyt84X21#E~Gp)0aT712YU9{NW zMhe!gmJGHcBQql8p5+Ucr!W6x<(9*NjY<5-uE99y@#V#)wLgpK92wqXB6$Rk}G zmk#;dP(Gd;4SB-=oQokuD0Ud9hLZgOq-Slg*M<-}bwB~XPY#fkO@%|!uaZmOq+#Bi zOx|uX;nl>|bn6KA0XT1PhRz#PA09tZ_u4?k*sq|ly%lG!e@wYeKz4XRN?L9 zfejO+`VYw5qJ0CH@Uabpgl?4x-5N#cF{sl#Scjg)^Gc~Q=NA0YM*HLj2vS41`5 z4|NU<)*-50a_$EJ*%3wxa>^ZmcvaSFkG$2ZfIK*eR98uCtD@K*ggS@Ab@s|BALddT z4?zpmcYD+CA^rzw`8_#%cwPdRh4QZSe*XQY-;?o2*F^eJT`iHXjv{{)$iF@)0#O~1 z%lA4UJHyCV+)9bnV5&l$l3Si5$^pV?zIy4 z+9>Yt1Dy}Tbl#LR_y7>ygACLQq{a)P8h1mTkBXW5%gBO{GMU`jWc^2mq2c{@;;6`i zfW!tb;yf;DzO>oo@J9v1EJ#B($amzjo>9i@YhJ{0i0ZvWbwuuaE}P2Z(KB#aJA?fGlSc@5vHnx`rat=vF{(O4u z=)VMzAw8^K{^c~#qy;odCBD^8Mb~L>_a39^=Ag7 zJB?lHeY>pp|K00xnaRs%)FXcbY{rM#lwZ!RGQmOMYvk0Ky9sx;(4YyN2L^G#;7wP| zP8!-r*gR4fHX(WFtdSV-7bJ8t{*m01&uT{g-H!~KF!`*@qvsfb`~-69tPU3Ff1aJ9 ztA(i?u1+_yPJjO^P&YYTSAAIp=bSO(Ph@6KhI%_3pkaLsh~Wy0P)i={898blw3r%h zvEXu1xVI(af1ELRM*lI{+jBc(^OLJR7UkEy{{C@(l5>umpXomW+6@D;`(4nz{H zyT@J)W**_+7cwXnuN#gZxtHS*6|={{I>#ur4u5}z*WZ8DiwyfM3BB>Qc|Y@MfzT84feklzy>%u>GJm{yMF;aI^m&9EpeV3JHiZXVDRX1`9S}35TTpN zcjqQ0yzU#Ri`R2#MH%5PXqjOFGUI{;-m^S@AtPjPScbI?Qr|Yn`WB%P)q9n2d`$l1 z!q|dG!F1rM5RB3AKiNaiRGN%%N^VPQM7fHdX5BUeQ?Z5Vt!|uMKZX2!p@49ohi8sc z^5O7#gT5BpZGy)k3IGxIn+Vco0EF3UIJXf!UZTIG$F*eECBukcU}!Lgn2J-w7N(PB zH(a&kkxN;T`Gs31$-PW2w?3x)<3@NL;Qa|IAG)+6&l-AhK_!e2Nk|=HHI&8nV1wb| z#x8n;@{Nm@{*K)C<+QAWdUz>d(=?gmx`)%~m3~V%0nN_5xy}5vCOjBc6V+L{tA43x z6$4o|tvw6eF4g4gPaGg;zl16HiZO?hu>&lIUh+eF90CM*)WF%{8{|i(Ot{!POjchB z&u*W|&35G}qPzOLA)h!W=Xw>U;J%@0dZlEPl`^A{_CBcdja^F_nh(R_EENVAQ>Ij) z>rf_9znGC6@wP)?-iE{Ez&9I-?%J))Ctgx_%^Z;AR~QMPWp#cRlfdj+)O6w{q$Oj z!OF)Uf_GN#hrjdne+#AW_I6*>ZSnPg4f(Hn-@C@_*~b4B#*W+!l=J&wmPgkiR@F@A z|2Vjys~aU%8>3YHu?8O`Km9l{mWp|h%(;<~cn$^~99sYp`fZ4nau3}IAA-`SWZ%f8 zzQF;Bt{Y?F_p2KdQ=8$O!yQ@%w(+@D&CbX9c-Z2LVV%E~TTINFNozZR6`Zz)hGn2% z8kV#i0?>Nux-`!^V=FPDGeDp}#)Ay6*uM>3GBgwX(^$g&EHml%a^Zfijt#LOKm82* zikl8aF?0)I`vcrs$sB8C=3q_T8YJEf-E0(-LpL8L+^<=DTQtCyS!lERs2Y#pArKwU0;_3iHBL(EN!Gi9Unc#-p1YTn-ZBar_ zd0`>*hpYW(Mn+_W90MPsHGuKpKQnpL-$--=veEjpoajJ}N#4X7Zcas_U54S8rWDQ? zN=p;1taB%9w(yRfb6^)2ULw`&C6(6$+lVkb+i?-p>c#4`9rWNB2(ivHA>Z)#`$LyU zJ9Y+emY`$s@>E)7tU+|9qLd~jda_e(#^LzqmmxzwC(?0f9t45+dr>yDlO7r12n=wL@aE~)T%lnTk% zsH9x{#lq=iJYV2gNgcr#gXQ|L*rcNMpfU1Ose~_BJZa8azoF@J+*iZl&Z*bXv@kCI zfQ87yiHV~a*Gkl=0n?saaW#2pF*M%Tv&|xKqi_XI67Cy?Cs7K5Zy3%< zi z`Vf{{|B%ff`5ICc}ofapS zL~N|knGn5)S7aLPKldgXCfk2-QE@OVM4_9*a*YGQvu)ZJwEWa=;j9r))h-22L-?`~ zp5DvVKZjU>8z0d%BTCotSc{SH?s&Xh;PQtgQg4%twk^tN`P66yc&*Y8+l89gkcHu~ zwxH5Ssa-&;nIilQQT$94S2)B-P~}9mEu{D&Io=qBFQWLV5!$&pV{ix0YG9Xz5sHV@ zpCKHciq{ETv7AzV6s2NHsYH%1h{BiPO(RORsHd^Z0Gl3PPoCZ5DiS75$Ajmxg31)t zVmh5}X29x2FCt^$jefcV8|n&?7z2?PHJ0F;6lIJVw1F9q!9~JtW^90@-i!zLwCX)l zAMAWXL6bl{~Uj%{n1802l%Ji+Z>ThxFwfz(JX$ z(JeS*a4ErX?-5`SJ7I}%xD3w|Ogz?_k1OGD9^i9;JphLRcEHKJ0-`G2V#5fOYU$vz zi|FnSRXo(Nd@1+9vSq(rx|WvZLz&RXW23MiLXRQsO61x>RALu6E8ahZpB{y`;#x&Q z^_m9+t^#*RQr{-;hZ7aJPT(pf9Q~ULL1mT`I8jOQRdT!~3SUL>)wr?fIy?pt0sH_8 zc<_(}kP4s$$O2#it^kfc8lc}s07;-ynJ1f|lv0@vsre=0Ts5u|xOu>yhF78S#^Xd& zWV*Pkv7vtLQf}FbHTOSUzh-Fxwd0)nHQc1BT%oCO3RhTIVuJrB;m3L4GhEG(8tM+o z!8)Ktgqm=ohAJ~3KZsj|?elTy0z>eYRP-~L9auHI-?RN4n7YyzXFd`0Q@Nsc0pPL-~ea>*aWZ*pdH{Kz*_*_0A~O$0bBzR z0sH{*z#$cY1IPy`0+C@azkZ@+K%w(1L=)$x)}2G z`+tHVg{x)VL2GXMUs}-ev-1#p8V;5JKf}iVYl2&A5bFi?X!`#uL=MoAXe2~3k1YiMxSdZQ1Kr9bX z0&sN|OvV7oP>$}G(xdR*8ZLVR(mnS{<*Ob*>>_}z0JJ^@Yq%`(ElU#zE8SczJhK?< zQ+GZDiwf+1CjroNi%Ad5r-k`4KTKc#;0}PL06zh|NcVB!e=9aZAO-Lb z02Q3fO@ckj6uM7=e?`B8=>gz6zy$#M{oi3bl&t}%`yCq2R>Fce48}LKWtxr%d;?xD z&Bu4k7l`f#yfvo}La8hm>L!5c09Jq+06V}cfDN$dUpgeLS%#~I2HS$DURs71F*$C5 zbKu&XVQ#NpiH0L&Fv2>x9Xy~XNMA^!iTRg%3}ck=*C+574Fb0krzT$sBBQ2P?|>J& zPp)}8LS6kjC=CJ6>mdB#^xf^i6{EU?Xx#ro3%3bVR^n$RCGW)ZVLvZ$tL5wT;;4qJ={nwsjp@S%Qfw&|>7j!l1QU8Z01MD+6c#ta=3O)i zyBcxmK11*=iR!6FY{z>A-5Q*SYlS&$@NXkhs{bHa>km=ZT0>c`g?*Jun7I~D$xI1g z_{+o}zwQogp0{Hp-s9t-Z>oJrR0M<_YvG1=FvfC3Nxv4C;2y!Z7R33`kBy&vfnl@0 z4#Mjfgxl8PiTGjR{&hGPFBSwyhKQ_;BC?Lk(}e3{=`nPf@OTq8q}M}_Akzr200XkK z)%0ZhJ$NzgjiFQo&wY68;DaKeyNOa*FE{e)C=Tm!y`bBG+Z6rYp+Cb@AD4`CJjys5 zu#vfTNcdp`JzaTBA}RPDjI#G*lwGr&-P$O2&DgG@e=5=Ehf_4TVJZ_QJb~vX3!ZL1 z=%WW~BdXnpglC?>Q>BwQtQJ)3q9{Cp?W1nGIM@;$3yLnV2psX>2F*2xg{hnH+ELft zH(d)V)J=Hu{H!o*GrkMH+BW0tNLQ%4BpY-^ z*Z|00BEB5Npg@1P#A3%?w>q7hWjMB#T)e5-^P pe9uOCPbC diff --git a/firmware/src/board_defs.h b/firmware/src/board_defs.h index 74bdb43..2611434 100644 --- a/firmware/src/board_defs.h +++ b/firmware/src/board_defs.h @@ -22,7 +22,7 @@ #define ADC_KEY_CHN { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, \ 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16 } -#define BUTTON_DEF { 13, 12, 11, 10 } +#define BUTTON_DEF { 13, 12, 10, 11 } #else #endif diff --git a/firmware/src/main.c b/firmware/src/main.c index c936837..14e599d 100644 --- a/firmware/src/main.c +++ b/firmware/src/main.c @@ -31,6 +31,7 @@ #include "light.h" #include "hammer.h" +#include "button.h" #define WHITE 0xffffff @@ -88,10 +89,10 @@ static void hid_update() } } - if (nos_cfg->hid.analog) { - for (int i = 0; i < hammer_keynum(); i++) { - hid_report.analog[i] = hammer_analog(i); - } + hid_report.buttons |= button_read() << 28; + + for (int i = 0; i < hammer_keynum(); i++) { + hid_report.analog[i] = nos_cfg->hid.analog ? hammer_analog(i) : 127; } if (!tud_hid_ready()) { @@ -143,7 +144,7 @@ static void core0_loop() savedata_loop(); hammer_update(); proc_midi(); - + button_update(); hid_update(); cli_fps_count(0); @@ -189,6 +190,7 @@ void init() light_init(); hammer_init(); + button_init(); cli_init("nos_pico>", "\n << Nos Pico Controller >>\n" " https://github.com/whowechina\n\n"); diff --git a/firmware/src/usb_descriptors.h b/firmware/src/usb_descriptors.h index 0b86f60..dd97211 100644 --- a/firmware/src/usb_descriptors.h +++ b/firmware/src/usb_descriptors.h @@ -23,12 +23,10 @@ enum { HID_COLLECTION(HID_COLLECTION_APPLICATION), \ HID_REPORT_ID(REPORT_ID_JOYSTICK) \ HID_USAGE_PAGE(HID_USAGE_PAGE_BUTTON), \ - HID_USAGE_MIN(1), HID_USAGE_MAX(28), \ + HID_USAGE_MIN(1), HID_USAGE_MAX(32), \ HID_LOGICAL_MIN(0), HID_LOGICAL_MAX(1), \ - HID_REPORT_COUNT(28), HID_REPORT_SIZE(1), \ + HID_REPORT_COUNT(32), HID_REPORT_SIZE(1), \ HID_INPUT(HID_DATA | HID_VARIABLE | HID_ABSOLUTE), \ - HID_REPORT_COUNT(4), HID_REPORT_SIZE(1), \ - HID_INPUT(HID_CONSTANT), \ HID_USAGE_PAGE(HID_USAGE_PAGE_DESKTOP), \ HID_LOGICAL_MIN(0x00), HID_LOGICAL_MAX_N(0x00ff, 2), \ HID_USAGE(HID_USAGE_DESKTOP_X), HID_USAGE(HID_USAGE_DESKTOP_Y), \