Explicit types for all variables, function arguments, and return values
Slightly improved readability, warnings are formatted better
fixed a bug with combinations
btw, this module literally reduces the UIS code by 1 line, lol. I would use it if the __newindex in the metatable helped strict typing understand that new indexes can be created, because in strict typing mode, Begin[KeyCode] causes an error that an index cannot be added.
I am not able to replicate your results. , It may just be my end but I am rewriting most of the code now around static functions and your improvements.
For the module reducing the UIS code by 1 line, its not that huge of a deal, I never enjoyed how it looked and probably so did a few others. If you enjoy UIS you can continue using it, this module is just a better looking way in my opinion.
Full honesty, this just looks like AI slop. It serves no real purpose besides slowing down input code. Every input runs on one thread, meaning that when UIS fires the input signal, your module loops through ALL registered inputs GLOBALLY. This is horrible for experiences with many input listeners.
Go through iterations, it may seem fine at first, but you should get someone else to test it out and point out pain points (or focus on something else for a day to clear your mind and come back to it). The design phase never actually ends so long as you update it, just slows down once you have settled.
A few more ideas:
The ability to remove sequences, combinations, or singles<?> of a Enum.KeyCode (or whatever) based on their respective callbacks (or/and timeouts).
The ability to clear the sequences, combinations, or singles<?> of a Enum.KeyCode, meaning itβll remove all references to the callbacks.
The ability to clear ALL sequences, combinations, or singles<?>.
The option to use a separate, singular, UserInputService connection instead of looping through all. For TaBigMemesGuy.
Modulate the codebase, your moduleScript is getting cluttered