From 7795c1d2cccd21030fe223030a73681105562349 Mon Sep 17 00:00:00 2001 From: Violet Millie Date: Fri, 26 Jan 2024 15:08:29 +0000 Subject: [PATCH] First commit --- .gitignore | 189 ++++++++++++++++++ .vscode/settings.json | 3 + README.md | 4 + bun.lockb | Bin 0 -> 177732 bytes package.json | 17 ++ src/extension/manifest.json | 26 +++ src/extension/typescript/Content.ts | 30 +++ src/extension/typescript/KeybindManager.ts | 31 +++ src/extension/typescript/RegisterKeybinds.ts | 8 + .../typescript/keybinds/ComposeKeybind.ts | 24 +++ tsconfig.json | 23 +++ 11 files changed, 355 insertions(+) create mode 100644 .gitignore create mode 100644 .vscode/settings.json create mode 100644 README.md create mode 100755 bun.lockb create mode 100644 package.json create mode 100644 src/extension/manifest.json create mode 100644 src/extension/typescript/Content.ts create mode 100644 src/extension/typescript/KeybindManager.ts create mode 100644 src/extension/typescript/RegisterKeybinds.ts create mode 100644 src/extension/typescript/keybinds/ComposeKeybind.ts create mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7ee3b69 --- /dev/null +++ b/.gitignore @@ -0,0 +1,189 @@ +# Based on https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore + +# Logs + +logs +_.log +npm-debug.log_ +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Caches + +.cache + +# Diagnostic reports (https://nodejs.org/api/report.html) + +report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json + +# Runtime data + +pids +_.pid +_.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover + +lib-cov + +# Coverage directory used by tools like istanbul + +coverage +*.lcov + +# nyc test coverage + +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) + +.grunt + +# Bower dependency directory (https://bower.io/) + +bower_components + +# node-waf configuration + +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) + +build/Release + +# Dependency directories + +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) + +web_modules/ + +# TypeScript cache + +*.tsbuildinfo + +# Optional npm cache directory + +.npm + +# Optional eslint cache + +.eslintcache + +# Optional stylelint cache + +.stylelintcache + +# Microbundle cache + +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history + +.node_repl_history + +# Output of 'npm pack' + +*.tgz + +# Yarn Integrity file + +.yarn-integrity + +# dotenv environment variable files + +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) + +.parcel-cache + +# Next.js build output + +.next +out + +# Nuxt.js build / generate output + +.nuxt +dist + +# Gatsby files + +# Comment in the public line in if your project uses Gatsby and not Next.js + +# https://nextjs.org/blog/next-9-1#public-directory-support + +# public + +# vuepress build output + +.vuepress/dist + +# vuepress v2.x temp and cache directory + +.temp + +# Docusaurus cache and generated files + +.docusaurus + +# Serverless directories + +.serverless/ + +# FuseBox cache + +.fusebox/ + +# DynamoDB Local files + +.dynamodb/ + +# TernJS port file + +.tern-port + +# Stores VSCode versions used for testing VSCode extensions + +.vscode-test + +# yarn v2 + +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + +# IntelliJ based IDEs +.idea + +# Finder (MacOS) folder config +.DS_Store + +# VS Code +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +!.vscode/*.code-snippets + +# Local History for Visual Studio Code +.history/ + +# Built Visual Studio Code Extensions +*.vsix diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..78664b2 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "editor.tabSize": 2 +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..b9ee6c8 --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +# akkoma-keybinds + +A Firefox extension adding keybinds to the Akkoma front end. + diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..54375a065c0db9938c568e87530efb500bca1b45 GIT binary patch literal 177732 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%0Dtvs`k}YlWx;%n{8HJ z+3r}~Gl}Le?!_dryT7X~-EF>WSmUD+;$?cpNlQW;*5vmXZt$a0>-*^Tw2#TDJSZEr(2kMFB;!mGM@o|cZspX-xJb{Fz+sdc6?DI}G zcv&}Cbe4L{xJ!9K&X(a1-)pMU^v`;IGJuL|e7*Aew| zy76(rDqCvz-AK>d(#>ISyWqfOLxVh5jHyWOqnj{0sbs%iX>e9GWoFC zteNawwHb-{8vuzf-YrRD+j5F+95q#oY;P<|jp;Mkh-GCenR71O$p3(;=ZnaF$Bhp4 zJ68B3`uu^qb*{cQ;xlg)4oHi#j{DN{R_vOXBdTEXAdq{8MgNFsT1pY^7{B=JtS6p zp_%)WMB0-xu8HZ#Z<7>>X7r<8btZbL(*ciV8Cg5W;l50;B1tJ3ceUUa>oXO0dmbo#;x8&i14wP?B2$kNE8u4`YZeH6MiX4a9J zRjt*h!shQ#+2@+#6}=|yW>!hg{yEO0XR(|<8MyB)Hm;$?!JDr4f!Lk|^Tc<{swX>r zNOg5Svf$g%wJw4_&kx+ux_3IKpl6;-q>SQ+{r$DuCXK$h(b4g|z4S)&@7=Q!X1%{( z*1a$NdvG7R-V^E-bJm}qg6wOPCEX6iMBip`K3aWB(kxmWmE z%WL9uW)17zvp(Uf+z!Rdb7cM>Rd*Q{Rn#p2m>9aHyOEF%>F(|Z>FySgEF>)b7yFXJ*j1 zHJUlUK;Yxd7L2}RP*yzucJiR3S($Gq1(q&$8H5xSGkUErcHeHe_T#vdY#?z&W~QJ4 zF)gJdq3DD$zCn~%NBiAqEhvF~9cRnP7vS0fT@sg31mff9UVi&M6sB29%dG9*PpN*U zpgnC{)P}SlvR`bnlI=HtWlhcIos1SwL~a$ruY_FS<<0Cvw4nDV76Dv)pv(LL+A0lK zMuzJ?y0~p1swQPX$;t*tM0`V_u6;M#Ubf8AO77UyPDSxy3r)ok@qLY?LZFV4Z zhduA}^dP`>0J@Z8n8u0emtHBvSlrK^JQdulLDK8Y)b&a05uxiL5;e*@TYLljX*O=f zC?2}!Ow-EG+9~hxY`3dR!wHTk_FnJp;PG_?x^^p%XOJI6{41kSCXVTQbqET}mWw1s zs8qQ(*WxYLlwkXC{?^*}IQ)bskKR1LvF(tD_o8u(3Sr`5zhRM`ZU(ro=N>pfxl(NC z_9Q2!=SmS_Bq`Fo#6(n^zJ3e`A8-vsO5ylDcg!DkdyipRMc5#giKywhZt|Q-N-afvSh=rv)2VQ?)_sqZndeZOBlZblmTBQ`W0R5fl z%piJ(RQRB7pxk-=rE;NFc&PmLxFhtQwpj7k{NFep)vik3S1%B_ z-q$q&I6%Gn?)?$A5(64qE;lULct}pmksU zfHUMrH$S)@!~N>EF+UXe>D>PX0=utsHE@8)wolqIK7Jk^{hBrN@he^*?H+_0dQMuF zJ4~?W2UT==J@p!`k~>%Ftl`6?#;5j}?+h6+1C*}rHr%W}ACM|VL<^rbv@6$1 zY9i6EA>9TVstUiFLJCh9qJq{oR+txL(nP4;)oxh4^SEb6Gm@0dmb;@uynKPc^?HHP zmkff`JXsd?@R`}$kD9b*7EY7;>!Y@CmegC!aq!)9fr64Q^S4+6_Xn!|sFm((0 z7A)_o)i+A~EVnT}bx^OpEwK9$=qAj34v482OT-YyCvp-ESAdSO_Ehin(0QYdX&#M? zEzD#kn>nQvJ$OSrb`{Y-*KGNRoiEvO%Kz>5STB0B=RLrE?Nx#UlpIq0z+vYd`PlwD zq}AZJ;=i~1p7OCb^G}1H45i8CC8sZnmE`o*e`XvVpP}=8VXb?a)i%-zU+7D@LA4%? z0k6M4VDu$}-Zp!$V3|Pib8@hb0~Em!L&R!S=6+9V+fDi8TqwXdLf-L5 ze76}f=X;b!N>}st2O7kG^4VK3i4%~?(wyflS-J0ZNnj$K1NHWG!y;ZFu=@#&zGToN z{qg!D%K)^9UxZ|#kkxM3HKD*{x$qvy&sK3qQmQ_uUUQD#-MP!66RX=iI-3u}dBGry zrOMOFO>Z&oO+g93^#i&qA(_gDn5>2^Akb&cq!ue4ekI>@#1b>xlN!%&y?L9w zUMp<<2_lQot%3MUMS`^+h(HL6nw%UVG?YgO;J%*I-~h!hM?ALjmwsW!>BEI@+4Jk@ ztl;fArcM5d6rp)3ez3}==bu`Vexx$4=ZBp>bgCoee?tMc$p#h0J2Zy+Gw5|s9y|^K zVDu$}xDV+_tz~!1$t|3SZH}ZHSjQ+!)RWHmzVul3h+{OM(zY8^#SbXT6ddBQ#0v#x zSD<{cv!3Cbeqhk^x;_1Z25f>EqwX4w{q3;;I>=oW6BL9q55zUy|@8EPHd zU)du|A2C+NOlx#MrS3;UIJvwIZU6RT@oV|aNGr-e`|^N@zKJ=^V=5c@< z40IbYrj}ZlMmyPzU6RlHmdk9Id!~YNSc4@pikeJ8j>IE?uL^2i{mds79y5`hFS7LerpBe(X?zzBD{Ge(QnPa{+uj zgaO?n=S?JT*G$G;LLTL;^`(|xoFv`{*Crq|yYKCBZ7k|OYiT%Z9rAM(V zj!dMNjF`{_9 zpK~8f#c>bK@gdZ7XRbgE z3)<@a6`h42RiPTK`L}YQR(SxgaCFhycLzWCX6)aEJL#UWFyztZ3k0q=3XHyF5Zllp zZ$s~8G6Nq3&Mo|J+?+);;Us!cs8nfGTb5<^>+g6tf}?NM$fGswnw zlX+2MO+(=~y1eE$t~8k|xfH88OS=iwZ`ElJ05=-wvJQ-VHZVWMAu$~i36OQj84sE< znR2gPLGsoLATnDHOh?1@!(7#w|0r z;WvK?T@@yq*>x4akoo1jG~ssVqqR@Wm~J{3}};2Dq=iG;n|pgyE7Y`Y1CK(Zgl8TdIgB z2FbHw9o)yFP}p?pOGV-%tx6n~BXA};zo|E-*1HNCd{pi1EhNKu4rl#Bvn!wb0)aob z1TgxNL7xtcl~t7F&3y-|7^MT#w2Dx_F+8YF=^^8{_t&zlLl4G5n^%1b>_07MmCewV zeYYF%Ed?<#3Ld{KS?D|Z`D@Ps>?Q(TGcG~9+olnYp4&*#G8lpMa;$)W6afMBIspZ9 zW59$k=MAb;W-L_m z!ut(ylYy=oozV_#N^5bYkqH0%a{s{cu?z*J*dB2ZSNsU!*Ok%3?6(qh!#j>vwZpVN zR7zC3pL_;Sa6%=Vf9F)G6x)dd+!UZ|qJ4gNeJ0R6l-IOYHl%Yf>!1qb7*z&)`Q{V3 z6dS_ICu21CsS}w3%wUz?QH|ylf84sxEz*Z-UxCsuQb@>80QWo4g@@g)%yV6%L65D+ zs-x8Efu16@LOgxk&^gdZ8W{Ex3j3;uKHglnh{lm;TB>ra5226T(pr49ewu+mfPOz!a+B>81y=-39)Gk(i@Hm3SX zQ%m9^zwn5fqZykZ>TeSlYB%Nujgh_sRZ;#f_$;dJ+nZ~E`+Bbf2Z+wS2YZ|l+k-oB zUAps2G{g3-rRIGN+$;p{(1CkrY7h=f{(BFz`u&P4=s*(D@$+|OEixaoV2|8sK0Bh9 zG2*>I;NvUu(s5eCsr@7kL`Ut~P9P`KCVVAB%sn8JemtH%oKuuc&V|5j^r zF%=57tDZ^#J$v{{RO_MMJ=Y zW^XPTMh^=O`bSWSpyFS1#T3~0BQT`sW$NQ4YWTh=*|h&YXw@yRkF=qk3eg?zC32K! z7}s;gb8;kCzd+z|$OfY?88q?m_aa@9@yt)(WL;`_Wo36{yg)QCokE7}e6|uB18?xu z+V`7!hRb1Ib+T8@7e>f(m#30xNiv8DOKQ!b+Sk7w?B)Pn&NDAH7Ex!&C{%U&Bj;1n zea98~?~@qgMTR1LKYVH@4TX}eW^|M)`*hA(cQS5-Tg3Vx|4_-s{K}PQ4W8H01Guj} zI&grZF-%T{dvlAPa%N24q%4diB^62Luc9s5beIaefjabbsEl@deqOR}QMW+Eoq9KQ znhg91*knVRwrNW8HRaxTfxz{?UNgY~iX!dlzP(`KUg^)=c&3NL)APshi|U^_m6lc# za1G{fi-eO)tNd%>$z^86;#e$=y!$ z*dH~PeICSVju-!ULolFwq>gOTGS2v;W35T}4GH!mz5!wH7wM~}2nJJADhPNx8RITp z75g{M_`q>^om+wfWF8ln!UDqD$;CjIi?bkoyT29hD|mz%WyEeK&hV|VQ}T^X3J0ZJ zKe|MRNg^BWiIs?__O_daKL4)L4AOJqYwsIeZvhy6$)H&^gRvUNJKJ_7?Tfgng~JoV z$+I&&^QW?o5ttC>&k((8A}2@M`n9nr#Wm|K^V8QiHA-i1>$vd`KDS*|+g$#T^4ttQmb*YDVe)Y9C3$FLIrw9&^_m~&^$3NuvAVCHU>#MvQry*bWZCX5yl}jG)+$A~B zO>&#`?!;_;_YEJ$xr(IdpT%>VJ9V02AiIN&uY0Ya7YOVYgVC1^$~3!Dk};3|WgwD# zP%yA_g~veXPEq-zY_o9V<$0rmFE*gjGE`Sk<86&%CGLB%kj@`bjC1bMQ1460d3Tl; zR{`$pS{WQ5-eQNbvUPlaq5+(EQ5AV1G!AAs5)VY@mfqj z{d!P&iiL)033paW;*gD0SEJ5&fnV3aBuYJ#tsnhCp;kqxRpTH-#hjygzZWo zAOyFKbXxRUA1NhU6hUbXd3TTl7Iuq}g|AAEUO<3&RLW@S(aA*c9^V?7f()goTyx|- zB!}-hz^wwhGpd7drcBE@G1F*QUX(v4&h^CmS`3z`8lX#?arcUs8ORc=-UqDTD6E%V zc)khmEq|M$`aCx|FMvE=An@n*dhY-S$dW4f zVD@qPN5=$_+*(d4t&>*rPvRQo_7o}o9L*|2m##yy^}IR8#vm>$1hT`5ak*&I?u+lU z&0ZQ4g)AT6v%WxJw+4*9WDw6zE4Lq`Br#sGLT@kj{pBB_G#I1SdKqgdql|7W_TQ(ves*06^31KU z`3-_{x=)LuXSAr>!^mk2naSo1{#87$Uhe1ES^D^cAXDkeGp4dyPqAgdJVOoOzAPL5 zKR|xG6-Zh7XjRpErKOxMwOE8%-;!w~jDP(B9SQEtZZ8wTB^)Mws>L*iTxXtv#I_0b zT(vNW;sX5+gi|7mC;-m;Uhnzf0By{`48C2!K23Fr`0BuB81&h!gPOYsTGCz{D`Ey) z4QG6jIA68H(KJFMP`@`Kyji;@rt~e2J}O7@-}vVDu$}xXddBecf=?v&v!T z+IL!bwxS6>(_MPGa?v9^PzBa>6Kp&<1dmvRe1p(PXEj{2Fd~sf!5uC=^^_onBv(Ap zeKEkFTO-i@GeAU8Jm-H!^EJfSpQz%7;uMyXk*IFS!2ej~;Zw57+_3%9j6+>!vkSJQ z^#1#}o5r>dQ{>O%kMxLpwKff}b7`>K1a!wnBsq?@GlD^3KXWb`s#62GZzC^s{p6io z@L4MKKSAW*jL-fVg0g@ix_h@EGwa%&*>931uC|-7U~)sK{Dk<8deQT zQHj8MTY#>FrYgCiG@$`pyl3H$h4nT8%*)+oSMm-fk!K@V2l_(aP<+JDx1D(5Xmj~^ z<6@^7OYI!^(MkF~PW8l=4;8e7jb93R+6>L!wAb zd$exM9G0F!5A=Rhjqe!TQoqq0qNZC~(m*HHYIIgKj#<-J1-Pw1w|+g#*w;+hXe_EKHdb%xshJ4=cjg+aCaW^V{FAk$bkDdF)J;8U_r~=z zz~k&U(B08-ZK@qIvmcnR98o8u_L4Rot+48aJhP$}7zjOfYGKaN45z6)*v9VPznm2+ zbv-0?hS-l0tqkk`_$nv zrVc}(heAcS;5+qRVttM1p0OIkq0o8_{B2>HXIx7?$Cz)9vH-Uo=o)?0fhWmlaLyK2WgdF*7N?V-NYY5?aC*c(eRo@ZD{_u?DUlEbsZm^=b@%J?x@rPMW@rQ^q4&ti1?YTGQS-p(Jil_1G2EGJe(es9sp78xkgFY$ z4L7ONrBcyfP8TaQb!p$TQW)TN0^N)v>SY`TyT!Y22qaXI_B)e0LqksQNUwe`-Sw~P zY+T3^tq6(4NnyMXQpfqDc#@iRUz1aAxr zsQ2tzK>hBYi{hU@H4%N%Z@-!dr+@sT;i^pNv)XFv@HvjE^H{d5P!l)$2Ny^~+aG3DaC~rB=5_Ht0xJI)5iAgX+(P)0o$s6j1IFy!u)IR8(i-I&<#?WKhFrBx7B-o zgufG);P?@8ISH>x|My4k4zxak+UAOY#=Ng(V1Xjf4T>%85&B)e{y!0 z3044i5a@D#AW*b%Do=Z&WZ>E84&^5Dtl!k-COj^`|H!{!oki5znvS@9>5NS{k zL0mtQyHax*9 zM1O>cAeeckTw?-3h@x`&S2sXV{$BWS&U>#62XlMEj#Z_q<*iZgPkhFLpTwhsu_qu; z(5Grg#;yDUf!z@>`jSEIBYu_&D}#x`8p0umaH=JV(yhCCJjHLPMhN+NA=b&0goqC~ zIMpKt-!td!?3#xmD*I?rZ-=73$!cVcNb24JxT8R~kKAdHVCUf*t$$9Ak5$dwEbb41 zvZP=;-L~1Pm#0wgDEQwlaN&RCp549UAcjm(786C#Uh2DM!^dqhxz-_H1h`{B_i#dr z%O(?>oN+$Z4zaPQtay7lqc~=J`AQ~Y7ZIl`<{7!|hm-IJR|&qN*dNs;f2#8Sc7>1N zG8XIoDUlt20In}y_n^Q58WZ4^8*R>vy#DRr@qL{Gf&+vId0nH~y3<%pL>H%O z0V4#<_wpzvl1F7+#m2g|r}I_wzO_M}RHOQcnt=QLWb#&pM!aLuP%#&SCDoNVn@GS5 z1a>FE=t~B%&HeVDx2Bq9!Hv??8XGO=IK&@O}%lCE#XBTm-jpVr3IS$zU19U|>O*^Lh8>0DHA_9u2Z*oM-0u@4vAZuz& zcjFugM8f{2ZHa43;jF*y;pDw(?9%yOPBIjJn*_BVOHA-V92waEodUX5KR(QElL!;s zNDnZJI*D=ceOTw*)x?&xnXQ;ybw6$L9M@UIv~K)0IeV*-`M6-3*cRRlnKI&VB;x#d z;@S=D6HEi$)>^AF5(yQU%EWSSwQm0s*icHE`Xaj%)EWzfv=sXKWf?KpooF3+GmMY7 z7@CA%V*?X2jylBr#ANO`OU`U?0OK$NbTtI!|a#r$QTu!$v-$;x?@M|jYFWzO5+;(c@7yM65qfXDZBPZAs;krS-C z)k^GfMr=5!6S8WPy8ZjkgP)U9IsS_v{OjX zoArl)2io_%Ya!n+xENuLem$bpu3gEz^R4kBv0-QXSl@sePqTd7#ocF;^i%ft%?kvs zcL9vPWRS$9x}O$kxrd#el3o-EszotW@L1g~NO7Ve#qLJx{bydA6omS>OW6!+mkq4E zNs#riSFx15GQZZ=Xexd>j?n?!*J}khK&HXp?-|T(rhFk{e$gclHvV=fEAc5ls6E4J zm}(a8a zpIvylkhiT^`GxAX>l!;?gwj`3_IG{68urKVp;x;Eae$f;(0$| z96x&fs>1-d%Rtw+ti8OP0WT2?4l*!c9?s(5j`_fo;&fmBT6U@!0!uIJOgFS~cHAJF zh%`-o`X@00hl7<*R z9<%dL;MaSeop)Y{P-0$rB*hO8?XVOwZ3w)nGa=5mg}=ufETDd0G8q8e*B%l$K&T@E zMRUGGDE~rfH)yyMC_KVGESVR_&K)G$_S+fs7>)?+mx$b%^Cs}_Q%G3sdw!{J8a|-< zfMRqZ%GFrp#rpz*>sDlzdV@0N|-#cSn@(Q;7u;lA*s-KlU705Tgx(pcs?rV<&93W8jdqo2^J=f#pR_ayy z2Ga_P+cLTi?=n0boH*Gp^&Yc9HPH98_Z8T+aqG~1Y`VtIxfl*sfhDpW9f%zL8+I=c zxZc-$2RK0DzVb|2=IJ@T#Q1BMkjCPaghp`K1%9p7W??SntE*+Eff|~McsC_K7Ui34 z4jCvbu@2}J;mZB#utd*G@X3o!Btl?`QX2r$CUbs89KCWZLHSE8{qx}y1(?_s9Z3Y z(rl2u!#B+ehBQHYSBk^;N%>k;mEK^=3N*vYGT9sWiw4ma#hq|q9GN!;+^>3 z1JdWi({KT;1gquJO&Q@o@8$A~o~J=Ybx*2i!7mVa9JavdO9nY(>p#ht=RS3B_1o(7 z*6H@8{$(m>o=c%plmO9I)VL^rYP%5%;<}Ds4TBvJe)FfVSXf?>{T`~e?3`PJu_71X zZUbG1?J81sW~0{D=-F5WRiuyIsb`_-^8d_W1DKfKO;zyUfYL(daPU`Zc}Qr>H84mELIw0iI{Kb76NiReK^ z^Am~bU&^1CX1%RE`Y!u6r6f0G6guN-xOMvO$MoL053R@x1RjT7F#3`~D+!Ve$e?Kgr#~wE;jPbn-^Jy?ZJ;InW1TNQGi;>6 zh4kwYIl$cmx=(E1vj?5VKfp>Mcs*`RaG$()zQ(Psq7xElXEMip@QFc4tcI(`yG$MS zD&yk2?V-pWhjX1~pGip*@tifnMFF_`KzD-FQHDiH0#gijX z|1ogAc?fi;_IobEW;zOguumJ0giebTB7gp6t^XHKeUh1N^4oyFDut0&ULj0n&oS2f zkZR@XM*qW|Jo^J@)aw9hp-zI=-WK?CI|905`AYIN@4kC@9f(OTf2b0pQJqfLV#jbX zWf8PI{Zf`$O|dUbCiU3CUz)?eMZo?cm()MpIRg(pF+93gUEd4X*Ej~c^!kr~=iKJ( zu9{-M5JF5zbJQ8(tGThP*&A=%kC-nmDnryUwh1yoMl>~t8e_&S1VuKZ>;3&5^T~O-|=&4JLnl>fPT9K#t_Eq9_XKuFtQ{4y7E89`ia`-o0#% z(7&G8zBd{4|3O{iK*;W8o-{8Q_BuxgkHhO)85|&13T33US(mROmHsp%d5Dpf7M&}b zodTJLDRfd)cpM%YfJJUF&hLk6F4G`f*6C)U}B{|Yi>$u+D~KL-J?>t|r}C4*YG z@IqmKqp3qO@EnJVoI3U`^y;3d`r3K15JF}094N57n=6{HiKF+LL&c=LjR+_$cP{J5 z5mhoV(BZ-5MrVI9!1bO3-Tby;6Z3;w1h$_T&SxpnlzNg_Q}9?Q$FT~%rGZS)S`vGZ zyU+V;7Nt;lNyTlaiba8okdYBqmDZ}>gY2Xk657rwEVpLjb6O&~i(7t4z2veWRL=qJAM-3tV+ z_Y#c0WROt1DOAs~IddWzC;Y6o6apmkaTw-)Jyukl4Ayi+QES6iyG690U@575^R3+$ z!x@K|egg?_57hW_-VtWYJ8OV@1$4{%>w@z+%BR+Ls|aA4(GERTS`-XMSP1BRCH((R z71;*0)!GQD z>1MI2zbn6M9X`*XR5+7JgkJ0~_N_dzG76P(3bAoF6c|Yzk*K;x$?RsJ`sY5r;``(# z5c&dv$KiEu2@cROhj0-`VAD*E`??hY~VvpCL>$=)@!-WlN+6p+?EkLhY?iy4^xYD1S%K_)rub&|}K!(iz z=5#k4n#F|OO4t3-{9T#W23z_!W!+`2^b^x1t!vvw&%XFi1K$gKsD+^iEX@vF7w`gs$Kf7~zGP54X6apx{00JqMG2C49Cz9~9zFhkcf@yC5QLf6vqI^Y z%_%aIIk}>W&7@6!Xb!tDIgl1j(-1AUinfTj-=74;$|NoO6)-?p zHkOMa`lf3#lpLAz%?^9JS}z889A0}<-~dH06a6Bk7fVZQka2_${|S?)*ri%c?_lS! zYczlPm4p>DawurTuKf1jJgwNfv#0PbUf7yplX!>R;D#Xf5>?>3HYEK1c4v-8S;_7Gvi~rNwPHJ9lGMyJ7-OL^5~ec?vh0e= zwvL0~u|;|@!1ccTrC6QBH8>0s1URVzRpNwv$SqnO05j`pnSmoGI}Jro8a& zC8R#&lO$iee;QmuG(BM=lXR98PFTr@nkOY;fC~w9HIw%`9YC2m8Ae~ zUvTz6`QT5F%>i6!pnEoXv@g2WZJ3-tGkCJufQ1(EiCrX1Qwq-|bS;k%<6oW)7t6m} zZR*baW*;MOh%rSptXQvI?`5@f+kd+pysy`C@c6#IHxV45$p*~Q@;ZJ&Q}*jxTW5r9 zqqb?5CNuO92}dqQq$*$QPFoG%t_EwPPcB@?ag4u1Hs?v;i3Tw#dJ}ZFE4S5OdwgIQ z2IvN*NpZrHlg%$ZUG!2Yyx~>}<@DvF*4>nl6aC?$l5|zI!EOFxGcY!1v>#T(nGjv(ij;35aZ-R(~)=~P)# z5S+!-bbIs!23ZeftqMj?2L+FP;QF+hW$O8MC7vF*euD$L56mIO<#+*6=t?%;dzo{= zyqO2{;t!^34n$ni=mnbwqd$$t$k`3#Pl-s)xIP`NuqEMfoMosCB}RscSWtP#0_uea zx*jzzKh%K`sWf``cd#HYyVAa(U|p)HP)}~;HUh+;%yi9c{83kOhaA^?xu|VEf|pYJ z{PTGa?Wbt@%5*;jGctgS0CatM>?m(xFiF;!u2!5!gnqo~-Ih8EMD(pBKWF7jy1Gc6 zGI28qjm#v(>T9O(ac(`|yWPzjCl~gLBlMal9{2@t5rOXHSP_(+z;Khhme!jKLY?>3 z!k$t%n}_J6p$&}2h`SX?RzD%;{_Wz22Aduw+qBCy2v)_}AI)MpU4Q@9nE6Q?;35It zaI1jq)%Pd50a!^~Px;ov8fQ1c&Yx7c7R4445M$qQ+F`8^(bPLOuUI$2cDgOzX@3`l z>(8Ow<#4T*-P}7V2Dq>9?*s>^{CD!S{m0XlT?q)IEd-3SzY8)qKRiZ%F|sKe?Tf1t zAgCA_SVJB(33aP1{xtZaU$MgQ@65|@eP*iT&t3+7Gr&awx_6a_2Qti4!gC9TVeS=C zOw^YfFON+3v`wTF#MU@!8BVP^1q_^=2vA7Wl!ABnKW|}5&Z4R=siBckFO$c>vTdn zbRZvo@FJ*e84YbTP~s(TX$82i?|T6U2idgrYztJ` zF4yl!f#VB)@63N()g7p_qfgH$0Rw(^MD^+!i(*WlD}+6%m-MwXLnyVY{w2B;@g;aN@V8vG|TIL^_wgJM{D2OI-lCn85KZ zowOHzSz7ftBVZeeZKf6=#o1*y$e>DLvP$wp$;-}>FT;1*BDzh8RxWk_fk6C|VqG90 zx0&E!#aZteGy?xRcLLXo1$6D0x|14YtiF%gK|f8&GMe0d|Jl0YV(1i={UIt_MnMWC z7t!10o-SB=cGOLcmV4_#vE2hwL}Lw2y-T0g7LEnrVgp^pRPXVp2<6y6jeBjISwtQK z>@+*8orR-{vL}@A_vCNh6nsR;5RB{3M1#NWWeYS#nl%V5{z#{aSBv!N=$+eZj|5yV z&VRWJ`WzXv(EOeRmG5+j2COx6B}bUF(7B8dh#j@J=0Bs21vY!bz(A9|&q_N)4>R<= z<0HuJr5gFbTN)Y{N>4viy67Oo;=RWm(V{Y zeQgdS+$@YYclVUss*?|SOs^Bp66vFjk0fqo_8L= z#Rs~R6Hq#|#``dA)kx{o?ZP?X+5RpvIf*|Uacx3*TDVjepjbPr9AG%( z$e(QfMc8zy=y%Q-6wXEhTmqomC{xab)5TjCgUy`d!72*#(CTkNJH%n#G2n+Kf+hW!>=m=~C!zw&#cbstVIP#&pAbfi&~*2_*epBSeSv)# z@cWow#{x7QE~#2Gfz1hGl-pmjPCqE{kV9Lax=CagCVdL**ynz$rJYy&b|U`YXwyy0 zWzHOe{Yb>-R;9AimV4T0#1QcMO9reL>$&(8-IvEkVmV9%vF0{t96EKnJ�~rRk}4 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

U~yp{s9` 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 VW^Sbhy3h!PTOX5K{y+WiUjeRJTIc`( literal 0 HcmV?d00001 diff --git a/package.json b/package.json new file mode 100644 index 0000000..6eb73cc --- /dev/null +++ b/package.json @@ -0,0 +1,17 @@ +{ + "name": "akkoma-keybinds", + "module": "dist/extension/content.js", + "type": "module", + "scripts": { + "web-ext": "web-ext run -s dist -p default -u social.violetmillie.me", + "run-dev": "rm -rf dist && mkdir dist && cp src/extension/manifest.json dist && bun web-ext & bun build src/extension/typescript/content.ts --outdir dist/ --watch" + }, + "devDependencies": { + "@types/bun": "latest", + "web-ext": "^7.11.0" + }, + "peerDependencies": { + "typescript": "^5.0.0" + } +} + diff --git a/src/extension/manifest.json b/src/extension/manifest.json new file mode 100644 index 0000000..ac705d1 --- /dev/null +++ b/src/extension/manifest.json @@ -0,0 +1,26 @@ +{ + "name": "Akkoma Keybinds", + "description": "Introduces keybind controls to the Akkoma front end", + "version": "0.1", + + "browser_specific_settings": { + "gecko": { + "id": "akkomakeybinds@violetmillie.me", + "strict_min_version": "42.0" + } + }, + + "background": { + "scripts": ["Background.js"] + }, + + "content_scripts": [ + { + "matches": ["https://social.violetmillie.me/*"], + "js": ["Content.js"] + } + ], + + "manifest_version": 2 +} + diff --git a/src/extension/typescript/Content.ts b/src/extension/typescript/Content.ts new file mode 100644 index 0000000..f532cc3 --- /dev/null +++ b/src/extension/typescript/Content.ts @@ -0,0 +1,30 @@ +import KeybindManager from "./KeybindManager"; +import RegisterKeybinds from "./RegisterKeybinds"; + +console.log("Akkoma keybinds loaded!"); + +const manager = new KeybindManager(); + +RegisterKeybinds(manager); + +document.addEventListener("keydown", (ev) => { + const keybind = manager.getBindForKey(ev.key); + + if (!keybind) { + return; + } + + if ( + ev.isComposing || + (ev.target !== document.body && !keybind.allowWhileComposing) + ) { + return; + } + + // const keybind = manager.getBindForKey(ev.key); + + ev.preventDefault(); + + keybind.execute(); +}); + diff --git a/src/extension/typescript/KeybindManager.ts b/src/extension/typescript/KeybindManager.ts new file mode 100644 index 0000000..bac27a5 --- /dev/null +++ b/src/extension/typescript/KeybindManager.ts @@ -0,0 +1,31 @@ +export type Keybind = { + /** A string contaning the key that must be pressed to trigger the keybinding */ + key: string; + + /** The callback function to be called when the keybind is triggered */ + execute: Function; + + /** Whether the keybind can be triggered when composing */ + allowWhileComposing?: boolean; +}; + +export default class KeybindManager { + constructor() {} + + registeredKeybinds: Keybind[] = []; + + getBindForKey(key: string): Keybind | undefined { + return this.registeredKeybinds.find( + (registeredKey) => registeredKey.key === key + ); + } + + registerKeybind(keybind: Keybind) { + if (this.getBindForKey(keybind.key)) { + return; + } + + this.registeredKeybinds.push(keybind); + } +} + diff --git a/src/extension/typescript/RegisterKeybinds.ts b/src/extension/typescript/RegisterKeybinds.ts new file mode 100644 index 0000000..43ea2ca --- /dev/null +++ b/src/extension/typescript/RegisterKeybinds.ts @@ -0,0 +1,8 @@ +import type KeybindManager from "./KeybindManager"; + +import ComposeKeybind from "./keybinds/ComposeKeybind"; + +export default async function (keybindManager: KeybindManager) { + keybindManager.registerKeybind(ComposeKeybind); +} + diff --git a/src/extension/typescript/keybinds/ComposeKeybind.ts b/src/extension/typescript/keybinds/ComposeKeybind.ts new file mode 100644 index 0000000..dc1de16 --- /dev/null +++ b/src/extension/typescript/keybinds/ComposeKeybind.ts @@ -0,0 +1,24 @@ +import type { Keybind } from "../KeybindManager"; + +const keybind: Keybind = { + key: "n", + + execute: function () { + // console.log("Hello"); + const element = document.querySelector( + ".signed-in > div:nth-child(2) > form:nth-child(1) > div:nth-child(1) > div:nth-child(3) > textarea:nth-child(1)" + ); + + if (!element) { + return; + } + + const composeArea = element as HTMLElement; + + composeArea.focus(); + composeArea.textContent = "Hello"; + }, +}; + +export default keybind; + diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..d6d2616 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "lib": ["ESNext", "DOM"], + "target": "ESNext", + "module": "ESNext", + "moduleDetection": "force", + "jsx": "react-jsx", + "allowJs": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "noEmit": true, + + /* Linting */ + "skipLibCheck": true, + "strict": true, + "noFallthroughCasesInSwitch": true, + "forceConsistentCasingInFileNames": true + } +} +