From ea13d656fb3915024ac9b3ff8ef2c2248ca44f1a Mon Sep 17 00:00:00 2001 From: Alex Lynd Date: Sat, 11 Dec 2021 01:58:57 -0700 Subject: [PATCH] update Rubber Nugget software --- __MACOSX/faces/._boingo.bmp | Bin 0 -> 120 bytes __MACOSX/lib/._adafruit_debouncer.mpy | Bin 0 -> 212 bytes __MACOSX/lib/._adafruit_display_text | Bin 0 -> 213 bytes __MACOSX/lib/._adafruit_displayio_sh1106.py | Bin 0 -> 213 bytes __MACOSX/lib/._adafruit_framebuf.mpy | Bin 0 -> 213 bytes __MACOSX/lib/._adafruit_hid | Bin 0 -> 212 bytes .../lib/adafruit_display_text/.___init__.mpy | Bin 0 -> 213 bytes .../adafruit_display_text/._bitmap_label.mpy | Bin 0 -> 213 bytes .../lib/adafruit_display_text/._label.mpy | Bin 0 -> 213 bytes __MACOSX/lib/adafruit_hid/.___init__.mpy | Bin 0 -> 212 bytes .../lib/adafruit_hid/._consumer_control.mpy | Bin 0 -> 212 bytes .../adafruit_hid/._consumer_control_code.mpy | Bin 0 -> 212 bytes __MACOSX/lib/adafruit_hid/._keyboard.mpy | Bin 0 -> 212 bytes .../adafruit_hid/._keyboard_layout_base.mpy | Bin 0 -> 212 bytes .../lib/adafruit_hid/._keyboard_layout_us.mpy | Bin 0 -> 212 bytes __MACOSX/lib/adafruit_hid/._keycode.mpy | Bin 0 -> 212 bytes __MACOSX/lib/adafruit_hid/._mouse.mpy | Bin 0 -> 212 bytes faces/boingo.bmp | Bin 0 -> 16440 bytes faces/menu.bmp | Bin 0 -> 32906 bytes lib/adafruit_debouncer.mpy | Bin 0 -> 1175 bytes lib/adafruit_display_text/__init__.mpy | Bin 0 -> 4586 bytes lib/adafruit_display_text/bitmap_label.mpy | Bin 0 -> 3894 bytes lib/adafruit_display_text/label.mpy | Bin 0 -> 3802 bytes lib/adafruit_displayio_sh1106.py | 115 ++++++++++++++++++ lib/adafruit_framebuf.mpy | Bin 0 -> 4805 bytes lib/adafruit_hid/__init__.mpy | Bin 0 -> 389 bytes lib/adafruit_hid/consumer_control.mpy | Bin 0 -> 659 bytes lib/adafruit_hid/consumer_control_code.mpy | Bin 0 -> 354 bytes lib/adafruit_hid/keyboard.mpy | Bin 0 -> 1190 bytes lib/adafruit_hid/keyboard_layout_base.mpy | Bin 0 -> 1223 bytes lib/adafruit_hid/keyboard_layout_us.mpy | Bin 0 -> 330 bytes lib/adafruit_hid/keycode.mpy | Bin 0 -> 1764 bytes lib/adafruit_hid/mouse.mpy | Bin 0 -> 843 bytes 33 files changed, 115 insertions(+) create mode 100755 __MACOSX/faces/._boingo.bmp create mode 100755 __MACOSX/lib/._adafruit_debouncer.mpy create mode 100755 __MACOSX/lib/._adafruit_display_text create mode 100755 __MACOSX/lib/._adafruit_displayio_sh1106.py create mode 100755 __MACOSX/lib/._adafruit_framebuf.mpy create mode 100755 __MACOSX/lib/._adafruit_hid create mode 100755 __MACOSX/lib/adafruit_display_text/.___init__.mpy create mode 100755 __MACOSX/lib/adafruit_display_text/._bitmap_label.mpy create mode 100755 __MACOSX/lib/adafruit_display_text/._label.mpy create mode 100755 __MACOSX/lib/adafruit_hid/.___init__.mpy create mode 100755 __MACOSX/lib/adafruit_hid/._consumer_control.mpy create mode 100755 __MACOSX/lib/adafruit_hid/._consumer_control_code.mpy create mode 100755 __MACOSX/lib/adafruit_hid/._keyboard.mpy create mode 100755 __MACOSX/lib/adafruit_hid/._keyboard_layout_base.mpy create mode 100755 __MACOSX/lib/adafruit_hid/._keyboard_layout_us.mpy create mode 100755 __MACOSX/lib/adafruit_hid/._keycode.mpy create mode 100755 __MACOSX/lib/adafruit_hid/._mouse.mpy create mode 100755 faces/boingo.bmp create mode 100755 faces/menu.bmp create mode 100755 lib/adafruit_debouncer.mpy create mode 100755 lib/adafruit_display_text/__init__.mpy create mode 100755 lib/adafruit_display_text/bitmap_label.mpy create mode 100755 lib/adafruit_display_text/label.mpy create mode 100755 lib/adafruit_displayio_sh1106.py create mode 100755 lib/adafruit_framebuf.mpy create mode 100755 lib/adafruit_hid/__init__.mpy create mode 100755 lib/adafruit_hid/consumer_control.mpy create mode 100755 lib/adafruit_hid/consumer_control_code.mpy create mode 100755 lib/adafruit_hid/keyboard.mpy create mode 100755 lib/adafruit_hid/keyboard_layout_base.mpy create mode 100755 lib/adafruit_hid/keyboard_layout_us.mpy create mode 100755 lib/adafruit_hid/keycode.mpy create mode 100755 lib/adafruit_hid/mouse.mpy diff --git a/__MACOSX/faces/._boingo.bmp b/__MACOSX/faces/._boingo.bmp new file mode 100755 index 0000000000000000000000000000000000000000..b833292e632b302ab9c69595de7def2ce7ffd644 GIT binary patch literal 120 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}u^SMB_!U6R;N%;iVBzHH3u0pjjv*mI MP#KU8ur73!0EZ6$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuKH875j9nWq|CJ7*N-=cZa4Ia?Sy lSvnc(x;YuS>6#cAy6HNa8(Qj`IGdQ7n>#zYn3_2;004djA5#DT literal 0 HcmV?d00001 diff --git a/__MACOSX/lib/._adafruit_display_text b/__MACOSX/lib/._adafruit_display_text new file mode 100755 index 0000000000000000000000000000000000000000..ce423c6824f19a01398ef09201bf40742659c727 GIT binary patch literal 213 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@nRqb@vj0g5x_AdBnYYuq+ zM2L$f=jZAr78K;9>J^qI7A5ADWagzZ6zUroSQuKH8JZ*;CZ`x%yJZ%orsY>yo0wY~ mni#m4=sLN$TI!lu7@Fx?7#bMrnmbuqy0{rRIT=|PFaQ9n^dG$d literal 0 HcmV?d00001 diff --git a/__MACOSX/lib/._adafruit_displayio_sh1106.py b/__MACOSX/lib/._adafruit_displayio_sh1106.py new file mode 100755 index 0000000000000000000000000000000000000000..c53f77776562806c366537a53eb530e34bb0d392 GIT binary patch literal 213 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@nRqb@vj0g5x_AdBnYYuq+ zM2L$f=jZAr78K;9>J^qI7A5ADWagzZ6zUroSQuKH8JeV+nOK@wyJZ%orsY>yyBHdq mm^d06>l&C_80ea~m^$iOSh%_Bnwc3}IJ&u*nYoy{F#rIZQXh{1 literal 0 HcmV?d00001 diff --git a/__MACOSX/lib/._adafruit_framebuf.mpy b/__MACOSX/lib/._adafruit_framebuf.mpy new file mode 100755 index 0000000000000000000000000000000000000000..ce423c6824f19a01398ef09201bf40742659c727 GIT binary patch literal 213 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@nRqb@vj0g5x_AdBnYYuq+ zM2L$f=jZAr78K;9>J^qI7A5ADWagzZ6zUroSQuKH8JZ*;CZ`x%yJZ%orsY>yo0wY~ mni#m4=sLN$TI!lu7@Fx?7#bMrnmbuqy0{rRIT=|PFaQ9n^dG$d literal 0 HcmV?d00001 diff --git a/__MACOSX/lib/._adafruit_hid b/__MACOSX/lib/._adafruit_hid new file mode 100755 index 0000000000000000000000000000000000000000..b94d4b8ade21fb2025958ca96a8027971bf633f6 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuKH875j9nWq|CJ7*N-=cZa4Ia?Sy lSvnc(x;YuS>6#cAy6HNa8(Qj`IGdQ7n>#zYn3_2;004djA5#DT literal 0 HcmV?d00001 diff --git a/__MACOSX/lib/adafruit_display_text/.___init__.mpy b/__MACOSX/lib/adafruit_display_text/.___init__.mpy new file mode 100755 index 0000000000000000000000000000000000000000..ce423c6824f19a01398ef09201bf40742659c727 GIT binary patch literal 213 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@nRqb@vj0g5x_AdBnYYuq+ zM2L$f=jZAr78K;9>J^qI7A5ADWagzZ6zUroSQuKH8JZ*;CZ`x%yJZ%orsY>yo0wY~ mni#m4=sLN$TI!lu7@Fx?7#bMrnmbuqy0{rRIT=|PFaQ9n^dG$d literal 0 HcmV?d00001 diff --git a/__MACOSX/lib/adafruit_display_text/._bitmap_label.mpy b/__MACOSX/lib/adafruit_display_text/._bitmap_label.mpy new file mode 100755 index 0000000000000000000000000000000000000000..ce423c6824f19a01398ef09201bf40742659c727 GIT binary patch literal 213 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@nRqb@vj0g5x_AdBnYYuq+ zM2L$f=jZAr78K;9>J^qI7A5ADWagzZ6zUroSQuKH8JZ*;CZ`x%yJZ%orsY>yo0wY~ mni#m4=sLN$TI!lu7@Fx?7#bMrnmbuqy0{rRIT=|PFaQ9n^dG$d literal 0 HcmV?d00001 diff --git a/__MACOSX/lib/adafruit_display_text/._label.mpy b/__MACOSX/lib/adafruit_display_text/._label.mpy new file mode 100755 index 0000000000000000000000000000000000000000..ce423c6824f19a01398ef09201bf40742659c727 GIT binary patch literal 213 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@nRqb@vj0g5x_AdBnYYuq+ zM2L$f=jZAr78K;9>J^qI7A5ADWagzZ6zUroSQuKH8JZ*;CZ`x%yJZ%orsY>yo0wY~ mni#m4=sLN$TI!lu7@Fx?7#bMrnmbuqy0{rRIT=|PFaQ9n^dG$d literal 0 HcmV?d00001 diff --git a/__MACOSX/lib/adafruit_hid/.___init__.mpy b/__MACOSX/lib/adafruit_hid/.___init__.mpy new file mode 100755 index 0000000000000000000000000000000000000000..b94d4b8ade21fb2025958ca96a8027971bf633f6 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuKH875j9nWq|CJ7*N-=cZa4Ia?Sy lSvnc(x;YuS>6#cAy6HNa8(Qj`IGdQ7n>#zYn3_2;004djA5#DT literal 0 HcmV?d00001 diff --git a/__MACOSX/lib/adafruit_hid/._consumer_control.mpy b/__MACOSX/lib/adafruit_hid/._consumer_control.mpy new file mode 100755 index 0000000000000000000000000000000000000000..b94d4b8ade21fb2025958ca96a8027971bf633f6 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuKH875j9nWq|CJ7*N-=cZa4Ia?Sy lSvnc(x;YuS>6#cAy6HNa8(Qj`IGdQ7n>#zYn3_2;004djA5#DT literal 0 HcmV?d00001 diff --git a/__MACOSX/lib/adafruit_hid/._consumer_control_code.mpy b/__MACOSX/lib/adafruit_hid/._consumer_control_code.mpy new file mode 100755 index 0000000000000000000000000000000000000000..b94d4b8ade21fb2025958ca96a8027971bf633f6 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuKH875j9nWq|CJ7*N-=cZa4Ia?Sy lSvnc(x;YuS>6#cAy6HNa8(Qj`IGdQ7n>#zYn3_2;004djA5#DT literal 0 HcmV?d00001 diff --git a/__MACOSX/lib/adafruit_hid/._keyboard.mpy b/__MACOSX/lib/adafruit_hid/._keyboard.mpy new file mode 100755 index 0000000000000000000000000000000000000000..b94d4b8ade21fb2025958ca96a8027971bf633f6 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuKH875j9nWq|CJ7*N-=cZa4Ia?Sy lSvnc(x;YuS>6#cAy6HNa8(Qj`IGdQ7n>#zYn3_2;004djA5#DT literal 0 HcmV?d00001 diff --git a/__MACOSX/lib/adafruit_hid/._keyboard_layout_base.mpy b/__MACOSX/lib/adafruit_hid/._keyboard_layout_base.mpy new file mode 100755 index 0000000000000000000000000000000000000000..b94d4b8ade21fb2025958ca96a8027971bf633f6 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuKH875j9nWq|CJ7*N-=cZa4Ia?Sy lSvnc(x;YuS>6#cAy6HNa8(Qj`IGdQ7n>#zYn3_2;004djA5#DT literal 0 HcmV?d00001 diff --git a/__MACOSX/lib/adafruit_hid/._keyboard_layout_us.mpy b/__MACOSX/lib/adafruit_hid/._keyboard_layout_us.mpy new file mode 100755 index 0000000000000000000000000000000000000000..b94d4b8ade21fb2025958ca96a8027971bf633f6 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuKH875j9nWq|CJ7*N-=cZa4Ia?Sy lSvnc(x;YuS>6#cAy6HNa8(Qj`IGdQ7n>#zYn3_2;004djA5#DT literal 0 HcmV?d00001 diff --git a/__MACOSX/lib/adafruit_hid/._keycode.mpy b/__MACOSX/lib/adafruit_hid/._keycode.mpy new file mode 100755 index 0000000000000000000000000000000000000000..b94d4b8ade21fb2025958ca96a8027971bf633f6 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuKH875j9nWq|CJ7*N-=cZa4Ia?Sy lSvnc(x;YuS>6#cAy6HNa8(Qj`IGdQ7n>#zYn3_2;004djA5#DT literal 0 HcmV?d00001 diff --git a/__MACOSX/lib/adafruit_hid/._mouse.mpy b/__MACOSX/lib/adafruit_hid/._mouse.mpy new file mode 100755 index 0000000000000000000000000000000000000000..b94d4b8ade21fb2025958ca96a8027971bf633f6 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuKH875j9nWq|CJ7*N-=cZa4Ia?Sy lSvnc(x;YuS>6#cAy6HNa8(Qj`IGdQ7n>#zYn3_2;004djA5#DT literal 0 HcmV?d00001 diff --git a/faces/boingo.bmp b/faces/boingo.bmp new file mode 100755 index 0000000000000000000000000000000000000000..8c05ac356bb52085ec4aca87582e01e6749f3cb1 GIT binary patch literal 16440 zcmeHNF=*pj7S%3>2-Xm>7~%zg7%dp0!Vnc+qQal~`e68iHAF=qD!lMj7@`G3Tm+)R z3zKf#O}eCvyKy(^Cgr$Gwz9jV{O-nG(%JitZr(h}mh8mw{@DfD#P3PE_nv$2yYIfM z_hSBi_pKCs{>FZ{+26m|-&^+g2T5VSlJv*7lJw_4(I2}EK9hF(O+Ao$AoW1%fz$)3 z2T~8D9!NcqdLZ>c>Vf|c4@}$B;2lo1zlYu&?f1Zn$KV>kdi1C5lP0zC^y|1QOePtx#AR-d+!q<;R^II|z>pY}WYWzO-|w(cDs!;`>`(W%}QHz4K9rQgR`N^s?oS-u@*%jv{r3Y2S zv739RY^b*72dnUE7B1p~b{$<z=?GvY7Xq8{bx+Mg9h* z;EeWctDleF;a7`%N)|*l0^hhI;`6AG1`= zUzV|v&t3lZVc$v&E5OIXrv)Lu08p?qu&}wHRRr?d~kAl;xgquRw?7lDbaU4F`I}E z^|YYjv}jRXk1OGsqnLQ}0H2r@qe9$hgylTHj~IrfrtEka%{Q5=eT@9QPhOFv!PA?_ ztW2Q~StYCS^$={`G>L|OPnBf*KOgT|Vx{m(Z0w&R=++Ps(9PZXSW}YZ%<7tS4SuRe zFe_2fApZ>M z?LlG=n6{N5S`Z~?HmG}LM5tEebMo^s@-AXy5hll8+(HIL`mb4o)hd*E`DnS>xYbth zaGRE|N!%*Vk-Q4O)P-Qp>H$nE9Y@fPtQ zD5(eQMO1=PPM9NMPH;u*IgIDLbmTx#>d+>rG~-s#hr@F+y)L@w{Qg=k`&> z@LbRBrnXm}N5P$s-|7XT8x{2Gk+rB&nzYZGj>qRUN70ILbubX3{^j(d#q5dm-E(aY z(_y`ht5fD<8ki@c+EC~tNrxJ;e^{>QV~q*tO2K!kpq82CORB3lA7*|>$NR9rcufxx z5cR;Rf^}f_d++O2@ovDi85M>OYNKRruvTojdsa05iC@ip3hJe({&*YZ^5e6^Bilusx2K~MM%aUFg>yH4 zn5U&XlyR0@wwwZb?O9(dXt(}xIajZ{*;D09K0ZGpKP|Uh=m6U5<2YH}+y|Rt2sGkr zG_0qJRCvP8QpAM4B`{vzLxs9s><4??Sf%3MS_MAuX~p<@Z?OijZ8i^*#8ahLwyiT( zdt9{g?$FVzUP&uP=Ot>M37c#8{+^XwK`ho_{wZ|Yv)(EFyi)a9o>t7bG2(Wkb+dY~ z7d|g*`5mAQS%n#v7w!KwvJVw~hP-sOzg-+x);IrY_Dz@%e$hq+S@lZ2@~q#(TAV7h z)3e;xBno8QMIH#Fp|55}g^oV1@Eu{)CG<@~c*%Xd$(#qf{D`bG`@K$)moyX9jHMaD z8P!WrqO_v!p0#!MS}W2{d*0prQ7hgAyGvxd-yE=Lh{|2%3Kg)LLH^-+81g4R>d(je znZ3hiqO4-KzMmI9X|es=RnUkB2wN^6&sm#sjq|46;B)|0a6fNpib>T1w_cJk3s={H zb7Is@`6rp83U>)1?$>X^Be%w=pk{DNz-7F=h4g>M?7AY-J9?`&WT%gMwWDvSqk>oB z^$6GQp)N_ZFZ6Qcc@Dml*U{s1dYmT?yw{uqLSje9?zz!$yrWu2*NT?5U39bk{9(z` z4oe&Ar6Q}F=E2ixF!>sMI2C07haJ3i%-gcs9XjW=w0^!<=26Bag{|Lh3>>@@(w9@L z*6uduBkkUQs1NoZ>$?p)apXw6^_#7lZT(iTG@7rgA;)pSujj3fZm~7stHFH$+&llk z8#+g|Uio8rTzRO+aj$X@vN<36=PiE5#jOpu6Sh-Al`7@0hlARMV^D%3+CTURkxY zj!tJm>&1sO_+ZQZV7F?D3F|HGhMhg<-SElI`cb(=pkE*7*_+ah(JRkazOve5@kcAK zh#b!Snl>C~$^F+LJeN0&e$MLPE%%{5bhcc-DYDLbZJ)5!@A}wiC?;ZjTtO6&w!D3= z?(3!t`-1xGMxcm4X|a0H|ENTN@@+-?-edlKJoMj+uJ2<_ikf;L Y^+4)@)B~vpQV*maNImd9JRnK`0cH&zasU7T literal 0 HcmV?d00001 diff --git a/faces/menu.bmp b/faces/menu.bmp new file mode 100755 index 0000000000000000000000000000000000000000..8041e4849cfb18523e30fa9737bdb65a74e7bcbc GIT binary patch literal 32906 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 G2>cI3Fj%Dk literal 0 HcmV?d00001 diff --git a/lib/adafruit_debouncer.mpy b/lib/adafruit_debouncer.mpy new file mode 100755 index 0000000000000000000000000000000000000000..c8caa049ce79909795d3e7b16b50c3d781e292ee GIT binary patch literal 1175 zcmY*XO-~zF6ur;RWK05R-gp>{p)h=y7zb=HmQ}S8a${3Dp$!nI68Gz2#)BDZ&sa0# zRBWo3LKi`my6HX=+iu4B2klR2mqkk2Z5LfosoP$AYG`LO_nvd^efOUCib7~gJJoWF zAf~Fd>VeZXJytXJ?Y5;GPP%oxr}63e^<-cXInqFB|RmPqfj%(T$ zW3!-2j5$WjW{hu-M?AA>sDw*UPLXkNC!nlCxl*14N|adBwrtO~Or2S79x5{@7k_*Y zYJB%Wabt&Vtv_Zv>qRO=1$FYn%}1NNn~xq8S&w`;1y3kw6f&vM>k{Ra=c-7>sC?B> z6(17#Y&T0Jxzt}G7gEW#PKaAL^t_h)P9{?~y~Fl?TDO~-{?3{A`pXwhM@JL3j=e)% z?5ax|i%$08DScUj3q{z-HQGsSds={2u zW3E^AjBHqqv9@)c-%#Vsv+MPS@vlHYdHqU$Q-zmQYB_exaJ=KJm?NrWTAtxNt2QW! z4q_urvJu3?RLBnCAI>Ss-ohZ_*sejt+1uUtz-Tlu9>h4_sJeK?ZKvwt%^^61pr*GS z$FQz(G;HYL#&UXjo;(#HHkGLbMeAl#4L>MbQhB|#)O&xK02c}EKq zKPDaE^Xay~f0HLLC%!`RP>OJ089&LB3f9iC-WdOb##8}-oUVQuTgF8*Q#ryyaWk|!nqCr z!qb`IXqZ0+|4DST^XB6iJ{E*uMD|V3{d8vduE;;?a$@J_->*m!i;#F45WijH<#-qW z1bo#0$uD}H#M6nDB)k;(=h}So&SGLCy_iTQQy^z@@T0E`ouVVYGM$H?USalio?Mh9 z-tlA8zCtmp++V{i8ouFp$YSG|u(4K>Ejy00D1y=q)d;0AacJ$>hH9F!mZh~VN0x+k z9b3c0>p*}M(u&S>7?^>Xe(*zow2tM3M-m7a0(}keQRob`KTM}zbdN7q3@KQGJ0iXkHnMl$^2Z(P?IS=myQ=yLt8NRscI?%FtsmN7?;Mw zo;!am7k(W(t)PJpWU`G%Q@X)6jn3uLT7cfwVia?Z>m|oiDPG{pubt+xRP3xr)6{z@jv)2%u}?}a^dgIF zAxa%QNd1B5wanbCmX90S+XS&ALV6lF6KpT>+^gc2j0$?i(K) z`Te5If*P1!W`X4L@M0f5rVcuhk6*<=9)OW=7th1~^5PgA%CLY^Z$)Wy=#$8C^Q|an zV(dl04SjOq(l=Klhs_IbRxVYnzee|%@0edin+O3|0Z7(KFI;-F0;C-#zGXvHAXvHB zLw{6W2~w9TS0n#^avK_36|h$$?>)Jipy(Fe$V0sGv+)IWK9w}48z-|F!)$uGK|>|(3eXRO<9iw!ORInA%I$jG1@UGX9pKcyMfDB#ija*zs9f>WPPO&aRLR4nq(MF>NL z7{r_r-(Zh;?BWJcGSGNTIJlyevVyfOSGN z-qNjP`))Okz?$#(pbr4Fc1|691$_vLtOhCY|6#KnZ8TTFuw^i45Bg|%)mpk1q}4$e zx{4jZHazykUKbj@5CSn{k$)`$?XmO3_1Hy=V`RG)d1DcH;_$7kR)F*0qRl2gtyaES zi*%Xg``wTW_Qouit-wHwm9L1$h#{v3Oj-fMs1HM8^i#^;-KbMNW4nXoo1&4kZ3!6rN_{n8G*@w38A zcs8uTLz)?%3B$i}jKm~b_^cfv4&ClXZr0{T?WPI3bw2yucZm)1XLz zW*d%<9t&_Ir9BkoMw~*seJT!)xSoKRRFfK6IX0Ki=Cr&~P;5cU-L33!^QsPHIDR>s z&;oly%PR~ZZJb?cfVC-+O=t5QCD;`^0W(S?tkOh0abgOpY9^@?3dP|L5MEmmz}KNP z)i^f8D#kO3>1NfRGaPQmS3%tV}BHlR}Pp6XV zmbY|{5t@}dFkfZ2yIsv|&=wP#YQ!h>Qi9q&xnqBya^SgzfBg2{r%mbz;`W zw|D)==kpDB5A+}MYT%IZ^b*%5Jt`paf*lq3W2ja52q~D(7{*HP#?cU;yt*NCS97;nw)ug#x5{4P6 zke$m*iEL84SMuNRk6%jZQYLFi8BI%SNhzKw%x3di-=uASU;k-&w(G$EA3uvW>Apv0 z&wNz&^~?SHAeUk#!Oyl-D=Q3S5(EH%Y^<~9Sb%XR00f3S0(63Hd{CP4zc=7SC83&d zbrYNgj>9u6kE9zj>%&*xx75KP`T&^JH+q;vLeyG0+F|kypzCs3sFks@up?Qh1nDb0 zbFM7dJ`K|EM?PL$J_i!O9B}5KgXP+aJ0%dJl>inL=Z*5u6z>4t_IaS|kMig>XmWVi z(}oiiyvk;@c~U6!j>n#m9vmAPm9i(bd_I-bB>zSS@gMDUI+)@fRC3v|PGtNzV~2b1 zwimtl-dX`6x1Vb16d9%%@cR8f@gu7wGS=|dpGVtFt0Zg`o~4IM0_Aeg#!qN!HWz<% zPFuq5o;R_9t4N6;jeI-<#X1j(iz%vC^H^+>QXs?TKqj!(Vi3!;y_6C09#`0#_cNw= zkLT8wa_C*Ru+Y|wu3788?biB%y%-q>$?9tyk!oqQ-33N_py#I=vX;h5!i`-2GJ2b7 znPVRM(*Ru(?J)9yO{tP_lfqaMe^m7=B*uJQAtjjs#18<&%RCokrz@l%iY#35)+Sjk~=ow&(AbG9F;Iivg!a}5f1K)~?m>Sz=a(HU&ItJC)+N+@;Vold4iU9}9 z2*ot^eq9|E7@}^jou!!Kqg|k*z=)8=Z6)#cO%X-LkA)xBk_R`1*5Vuq3EM4`hfv)z zdob1yW+w&MUMyhAstuV4bUXkb2*oEMQkp>|M~JS)ck>X(){Qle;;AqQ@@h%gMLsXk znem-$tvWEp=P+C5DKHpxwrhklpsQ04Q#?zs*eB5Ps#uVyt`{)H--LlheV-?MAX~N% zNKEmi@5vMrdz%LaUA{%;Y$mE@&8yq9W^0SE7k`H}+ScsX<-O@>#uQ)w9+7=Gh_;Sv z{#!|1KlJ$@?`FSm>SKy;RBwh4?d=6v-+Pl=@PL2Q5z@cZ)#+-s6-!bt4q_J*LSKDO zCKbg)Ls2ie9M$@aYr8}D)_N&?9Gt`zJuVTh5{^n~W17t=&iY~0QCtQ4-k6Nw4+JoX OyvWiH{E0`*-2FdB0Gh=B literal 0 HcmV?d00001 diff --git a/lib/adafruit_display_text/bitmap_label.mpy b/lib/adafruit_display_text/bitmap_label.mpy new file mode 100755 index 0000000000000000000000000000000000000000..ac2501ca6b96934907e2bcc678a347515fcfcbdd GIT binary patch literal 3894 zcma)9-E$My72lOC%U{A*yK7nCxGX|m*)p-QV$_y&T1OV(U;-Enj%b^;EUhgCSyHs? zAPtjpMZ!#+&>7OnOlSJUL;ir3KP35kCJkVW4MY17n6~LtUfP*XM`rrazVzH(8El|U zcJy)go^#JV_nhB7_jh|uhQ0iU`~jXa9}k9uqp69gB8H=KG8W8;ij-D5N21DjFe%1@ zBT}p*nHlDBgCOnyg}*OJp*l~8r>o;h>PNW%7#QSB_$K0*vC>B)eKG~ zW0IS0s#7w_XngDyqm2$6w@^b?O8Be40tb%M)GzTs6H}fxny}FrF(=4`zMxD-x?k#= zW@ykuqZ&=uYV0=Ji~}K>mU|5LKq z$Nl9+55l55VBANiTYpBg*ITjsQ||h2-W|SnYBKceH>KfgX6ahB#7h)qr5bIpSfh>F zbH+`dRrgV}jj|5FYu!4QN(gn*=_nCvmy zoSK?Al9-5xiDV>^#$fcd3NQo72uYe8V`ANO_BE5OMjVMn6;GwjA(Bb9oAsD&jMh1t zh%26|@(anPry4vU>LbC>#jzBbObjJriIk_t)~eefVFv`Hq>uvn^wiqC;us8gKNyRK zbrd|4%2t$2C6ZD~$$08ub#*#e)DUI)F#XSKJv?P?#)C&rwVZ69=y$oOft-DpsOvD) z?^>u_17)2$JM%+2FrBk=q8xl*UuKTmLlC4dJ2)ce*cxs5UOH!|b1eV7AE@%o;EBin z28<}0qaqASNd%8lILDg1X?+yehN?(Brcf1$1W1s5d(d+1o*h9%HF78zlX5KW{g?_2 zgeZzKQIoaIQzt*K`|Jx$e_^O^#z|L;OM3N)tG)egsde;|sw>N;{va9tjDC)!(EwNHd^>u`69>@WL=tp<@brBop(u&*(mM03R&aGbtw7}$8S0|SBG8RViXuVUjjH{S%5C315HFQ& z)IJTxO^D!9$!iLb8AhPchyd}i__!2TAiVg#&kQl%B?jdX^j!VdeWrm!gVC6DEENr_ ztQFa{y(`L*U|33lO;mF!8df4%R2PxRTC#{!KwZ>&^T?*X=%Phr4@;xLi5L_IP{GKM zhTJ_YmXIN{yabNz-Spmoj53;dOq=j^RC(_7na6&F�`)ZdX#lxSULY+vyDS80~eV zv1n2RL)EC#KeVN3wpVYHW;E%!)Bds@v)!UetG_ep8UlU-GXn-xwia2D)ou8Te>cR) z%cpa@uMKjl8< zhhI{zt8Wy=J=P}ir(8o$ha=_`gf|a#_8k`vofUjXT8_RYgm~&1vIu6w zk_NI1zyB(G3lH5Mx-+zTcVMk>Z*FLP10o0DJNmUq#JhhHN4{I@aYGI+eMXQ zr<}-ZD6P(BzrB?&JoY!?c^FxZoeWzMPOtguFjF}mjnBiovD>hghkqUSCDKz8Skkjg zjzmWlG5zgrP!6US@=mtfc&|7|Y7WB}&C7c(8zJ9-OQs{b% zzsQgC`&}))`!Du%!uLqud+r$jE;Vy!c6H!xVXZiHZ(U`ZHm1b>gY^AnEfEM8zM56J z+UX^T<1HVTo#vV#6U!tK4_07FHZ2WiJq=nn$->|941{|(o&$|4yu$9j>#M~~np5Yf1>fQlwM&i zPXq*_>P;BEDOfRJ!iv8JXPnlD0)quB!A2E0wd|$AAEy<}l;HGxV^G@B>XPQ-GGIi0bFOpBMwaKi~o+ z--Kt_eRqoG*51|G!XxM_%wD*4CtoDZV*bMIRi>*j!paxOZ8Q+TNzU(QEc!XdR;FlhGZAQSUB&UP4yuZ<;BnC^~ahpC`v& z8d=J7>w(uMB;$-%>m2r%6MoChniiMqq>C(O2XWJ`0~!Zy01o<$P~r200@%ib7bP)~ z48AuZX>^dmaKIaNA+HH_ViHUNYa$xDOALvDW;)Ax&`YlxmYXcx2vqwE>|W)X5LD3L zs^wb%6w<3@Mm{NMIo^3^iM8$ee|Hwk%|;4Uo)|o%-5Ln1@@v#eV@+-oA^MX&)l9jj QS#CBB_h`qpj$lpvUs6&+UH||9 literal 0 HcmV?d00001 diff --git a/lib/adafruit_display_text/label.mpy b/lib/adafruit_display_text/label.mpy new file mode 100755 index 0000000000000000000000000000000000000000..4e938bf2e701c70b2aa135dc21387690b7d850f8 GIT binary patch literal 3802 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 R-^yR+FX3~!(Wtj-{{=N-UMK(n literal 0 HcmV?d00001 diff --git a/lib/adafruit_displayio_sh1106.py b/lib/adafruit_displayio_sh1106.py new file mode 100755 index 0000000..6ff8f3f --- /dev/null +++ b/lib/adafruit_displayio_sh1106.py @@ -0,0 +1,115 @@ +# SPDX-FileCopyrightText: 2017 Scott Shawcroft, written for Adafruit Industries +# SPDX-FileCopyrightText: Copyright (c) 2021 ladyada for Adafruit Industries +# +# SPDX-License-Identifier: MIT +""" +`adafruit_displayio_sh1106` +================================================================================ + +DisplayIO compatible library for SH1106 OLED displays + + +* Author(s): ladyada + +Implementation Notes +-------------------- + +**Hardware:** + +**Software and Dependencies:** + +* Adafruit CircuitPython firmware for the supported boards: + https://github.com/adafruit/circuitpython/releases + +""" + +# imports +import displayio + +__version__ = "0.0.0-auto.0" +__repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_DisplayIO_SH1106.git" + + +# Sequence from sh1106 framebuf driver formatted for displayio init +_INIT_SEQUENCE = ( + b"\xae\x00" # display off, sleep mode + b"\xd5\x01\x80" # divide ratio/oscillator: divide by 2, fOsc (POR) + b"\xa8\x01\x3f" # multiplex ratio = 64 (POR) + b"\xd3\x01\x00" # set display offset mode = 0x0 + b"\x40\x00" # set start line + b"\xad\x01\x8b" # turn on DC/DC + b"\xa1\x00" # segment remap = 1 (POR=0, down rotation) + b"\xc8\x00" # scan decrement + b"\xda\x01\x12" # set com pins + b"\x81\x01\xff" # contrast setting = 0xff + b"\xd9\x01\x1f" # pre-charge/dis-charge period mode: 2 DCLKs/2 DCLKs (POR) + b"\xdb\x01\x40" # VCOM deselect level = 0.770 (POR) + b"\x20\x01\x20" # + b"\x33\x00" # turn on VPP to 9V + b"\xa6\x00" # normal (not reversed) display + b"\xa4\x00" # entire display off, retain RAM, normal status (POR) + b"\xaf\x00" # DISPLAY_ON +) + + +class SH1106(displayio.Display): + """ + SH1106 driver for use with DisplayIO + + :param bus: The bus that the display is connected to. + :param int width: The width of the display. Maximum of 132 + :param int height: The height of the display. Maximum of 64 + :param int rotation: The rotation of the display. 0, 90, 180 or 270. + """ + + def __init__(self, bus, **kwargs): + init_sequence = bytearray(_INIT_SEQUENCE) + super().__init__( + bus, + init_sequence, + **kwargs, + color_depth=1, + grayscale=True, + pixels_in_byte_share_row=False, # in vertical (column) mode + data_as_commands=True, # every byte will have a command byte preceeding + brightness_command=0x81, + single_byte_bounds=True, + # for sh1107 use column and page addressing. + # lower column command = 0x00 - 0x0F + # upper column command = 0x10 - 0x17 + # set page address = 0xB0 - 0xBF (16 pages) + SH1107_addressing=True, + ) + self._is_awake = True # Display starts in active state (_INIT_SEQUENCE) + + @property + def is_awake(self): + """ + The power state of the display. (read-only) + + `True` if the display is active, `False` if in sleep mode. + """ + return self._is_awake + + def sleep(self): + """ + Put display into sleep mode. The display uses < 5uA in sleep mode. + + Sleep mode does the following: + + 1) Stops the oscillator and DC-DC circuits + 2) Stops the OLED drive + 3) Remembers display data and operation mode active prior to sleeping + 4) The MP can access (update) the built-in display RAM + """ + if self._is_awake: + self.bus.send(int(0xAE), "") # 0xAE = display off, sleep mode + self._is_awake = False + + def wake(self): + """ + Wake display from sleep mode + """ + if not self._is_awake: + self.bus.send(int(0xAF), "") # 0xAF = display on + self._is_awake = True diff --git a/lib/adafruit_framebuf.mpy b/lib/adafruit_framebuf.mpy new file mode 100755 index 0000000000000000000000000000000000000000..6e0a8de501d466b4dd4b4305085c482355493c76 GIT binary patch literal 4805 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 literal 0 HcmV?d00001 diff --git a/lib/adafruit_hid/keyboard_layout_base.mpy b/lib/adafruit_hid/keyboard_layout_base.mpy new file mode 100755 index 0000000000000000000000000000000000000000..2cf77eba116748b138eb7855c8137a52f7a4dcaf GIT binary patch literal 1223 zcmbtST~8us6nzhJMn7p6)70O>#I89tJxx6NFfIbYBFJm;L0#q_Cg-B^8w ztZAttov5vvMyj<+$S_l=QSQYYdg(;|KgCD1@B*VBnAy+6(eOIY6LKM|&6;vf zh!^n;A*$R^2+2n=^L&c7H{y~6Dlrp}56c)gH>#S}Xl_Izr!}qGDuv6+tH@MHBr#Q# zs;OmAcF@+U@IX2vhN1k%VM}A@Pm9H(Ul@PBqHoi`>7#R9$2+F$>H50!$cYws;A7^I z+tWcjca+X-=gIb7VrS$g_VPQqi7QRBseN(F(>dXv<}y3!Jb@ZwghGfH5=W^_hUE9j z?pDEwts;Ig4OLq?GDAcr*N9Y7F68y-m*uLY5=|kKWYoe78zEr>g*C^j7m#y^ke3DRj$jhJ0jKVaa0&TF+broE7i4AwJTmTA@tr!zoYi;fd4SN zda$0}^9E3l?EZ}IbnZz%j_(Kbqv)jI4Epf$L)=tID%6E8`!Q_zVgeZAv48x#&RK4M z{QFjCy+bH;A@SDJc{?EGN(2!u`RF98FDy!*6b86=9-9kS?TJT`JXO;Y3jdW7<*~poBML$SWc62H>tD zYp)Hvu@-%O6%5}jejD9c!Mj!muaMPb1=ZWKK(=d7dbo7>H#gVmte=7 zR?t1HfPE0{bikpnKr&1oM&uoe3q~Xdzu=lb3_~W!ByFQI&|esgq}U9m|6fR_?r|@( z^cQLkuLhUVn4!)FA4JDwF~In^Y+TEOXf;B;<1!r`oVAmWx}QL-xVan-OndM8E_9}| YD>3|0w87r(Fpx6n=pWw?Mr||y07^q{S^xk5 literal 0 HcmV?d00001 diff --git a/lib/adafruit_hid/keyboard_layout_us.mpy b/lib/adafruit_hid/keyboard_layout_us.mpy new file mode 100755 index 0000000000000000000000000000000000000000..7b3398c97002fdb745dab2ddc33b92b19814a973 GIT binary patch literal 330 zcmZ=}Ws+BD43LmuV0TGONlYs$%`Az}$V}1CPOVJJPb^A_&q=JzFD;2LE!HcjOi*ZG zFX)@j&?und4VCu+OFJbNr)n`uYoO~&0*cEpi!nxq7%>Papy~+?7GySI7GoA<6q7-f z2~1{StYHvg=Ir5b5K>?eWDpl)5EEb)V~|p25L0jrcJ}m)5Al!pc8zrQcX16&W@Jce zWPkxJZ4DR`Mr(o?I`g(HSh#43$+G23*O}>>Td2#)D<~={tEj4NHr}SUeaHNk*0%PJ z&aUpB-oE|`6DLicGIiSY88c_io-b`DN1ZXRAfegQ!tVG&U=aS2H& NX&Kq|8#iqA0RU^>U9SKD literal 0 HcmV?d00001 diff --git a/lib/adafruit_hid/keycode.mpy b/lib/adafruit_hid/keycode.mpy new file mode 100755 index 0000000000000000000000000000000000000000..4a30986abd7f6fc72f9479ae2b3a7878d32bc2d6 GIT binary patch literal 1764 zcmb7_S#ujj5XV=OL{84u~e9cK5p`^~wXyY20_dPSK~?g9m}2SAy60hszCu*yrow3mTZUjfEn z1y*|vSp9WijmyCFH-OE*39R`RFyjia*4x0$cYs;%0<*6IYrhA~xdzOAADH(6F#khf z3m*aNd<<;y6JSf90$aWgNz3G)LDK73pF`SfIGle0shZ_GUy|qx{3}Sh`r_A+cKHG~ zzkxK@>kaQ)NSV6Hzk}2=cdYLzYkJ(7NI=Hnp6{4HK!&@TYV#i$`zrX-#|-4%TMyF|tK`oa`(JkgO+eEPd`6w5DUKAaGC}A7E zi()aJ5CVi^2_~Zn#3hR5I3z$(oQ|i5q@s8_t|yU2aprbR?4o!kUQZCC2;%i2%_vsl zM2Izt)wqD<8^u~2OVCktVQO@MAvvN4g(wq(9?~P$0aV*IbWQbiLQ!l;LOYz^a5FA2 zBpt>f?TRT#z-X*Ce z9MBoV@2y#;M}*O(8;@KZtVS%j4ZY@t*HJn+ScB}45kqE^YA6}Y4o@@aMx%9Km!m@& z@8~9hVfmQb#c+pX3_ zMc5Y$H;d((jOQvxS${U0crY=aDgd(KvnpZ{Bd9WHS1c8T0zMG)I0StFjz9!62_GN~ zlf=(zxYUXFD@PTvv^Qd;Nm}l#$vb*?1Xmqkn*~#saTCd`Lhv}n1IE6tb4CmZZsY+x zo@ExG;}wcc`ss_chFWaPhGQ-F%c+(HuwW1Y#269qstBzu-$@CJTdCCjdkr+SxpFu0 z-)$oA`bs>$w%kke00EYV$X=;pS>_GMS;Z30$(T1H)H8*gB=II>&r4$dDIp|eOx`jh zYq5NQ`99%?OS5S8=6WRT6ffajq!Htd4?hH<-VS50H#| zhO^5O#uYURGa6^s)AWdx9e@|k?ytxy2ytTrWPv!sK=U}r!>#tOM`?|-QFITvQ&W_3 zNmflEZrnyzvawl;wCTtnzpq1W(y*ICHvQ9p=#XoD4g=h{g=`aNP@lEknW>|?G_I!U zdkap{a*+&A1cSkFI6OBw2^Nz?=Uodn(ic7J zIIVen9O`^Q_duG*ObOd(S07K#uRfh#TzzhnpGzO=Cse+#pHlg*-krm6XgIPz-^W-| z6T`^IlGpy}>CQek)HL0S(&$pBaB;3~-)^Ne<792*EpYc0#ZrLOsm>h+{z5Hch#2V6 Jtp!n5{sC&e^*R6m literal 0 HcmV?d00001