This game is still alive on here? Nice.
Anyways, I coded a mash practicing website for people who need practice because I couldn't find any on the web that I liked. Super lightweight and measures keys per second as well as lines read per second.
This web app works entirely within the confines of its own designated location on your device for security reasons. Modify at own risk, but use risk-free.
Hey there! This actually looks really interesting! Right now we have two tools for practicing mashing, which you can find here: https://www.speedrun.com/undertale/resources
One is the KPS program a lot of people use during runs to show KPS and TBPS. The other is the Mash Practice Tool that I wrote. Neither of these actually show textboxes, which I think is a great feature to have.
I did find a fairly significant flaw in what you have so far, though. It seems your app doesn't take into account that pressing both Z and X on the same frame can only count for one of the keys in the game. Undertale is locked at 30fps, so if you press both Z and X while the textbox is still scrolling, the text will be completed from the X press but not advanced from the Z press. This is the hardest part of mashing, even more difficult than just pressing keys quickly, because you have to evenly space each individual keypress so they're all on separate frames. Because of this, your app significantly overestimates mashing speed compared to what can be seen in the game itself. In order to fix this, you'd need to track frames and only take one textbox operation (either skipping or advancing) per frame, ignoring the other keypresses as they don't roll over to the next frame.
Another thing to consider is the difference between mashing on 1.001 Linux and mashing on other versions like 1.0 or 1.08. It looks like your app is meant to work the same as 1.001 Linux, where keys of the same function don't block each other, which is probably good enough because that's the version most people use. It might be a nice feature to be able to switch modes to work on mashing for other versions, though.
In general, I think this is a great tool and will definitely come in handy for mashing practice! Feel free to post it to the resources page linked above, as more people will be able to find it there than on the forums.
Undermash also seems inaccurate, as it reads my mashing is 10TBPS when Undertale KPS measures 8TBPS (unless Undertale KPS is inaccurate)
Ocean's Mash Practice Tool is not inaccurate, however. But Undertale KPS is better for showing live stats and not end-result stats.
Ocean's critique was very helpful; I had this program originally running at 100 FPS when it should be running at 30. Noted and updated.
The updated version didn't really fix the issue of registering multiple operations in the same frame. For example, if you mash Shift+Enter at the same time in your program, it registers as skipping and advancing one textbox every time you press the pair of keys, as opposed to the in-game behavior of either skipping or advancing the text (but not both) each time you press the pair of keys on the same frame.
It also looks like your keys per second is inaccurate. It should never be less than double the textboxes per second because this would mean you're skipping each textbox with less than two keys, but I was getting it to display the same values for both keys per second and textboxes per second.