To GreenOS: It was great working with y'all! This key input system is usable, but I've put some useful information below if you want to improve on it. FUNCTIONALITY: -Type! -Left arrow or down arrow as backspace -hold up arrow as a shift key (for letters only) WHERE THIS FAILS AND WHAT CAN BE DONE TO IMPROVE IT: 1. Some people are having problems after typing a specific key (for me, it's when I quickly press the shift key and then another key). From the comments, this seems to be caused by a user's computer or browser. I eventually managed to recreate the issue, but the built-in <if [key] pressed> boolean was reporting true when it should have been false, and I'm not sure how to fix that. 2. This disobeys the Code Guidelines for looping (see "Lag Prevention" of the Guidelines.) This likely wouldn't be an issue because the key input scripts would only be running during short periods of time when key input is required (aka it wouldn't be running all the time). However, if you'd like to edit this, my recommended approach would be to replace the _FramesHeld list with a list that records "Days Since 2000" values of when each key was last pressed, and performing functions off of that information. Therefore this system wouldn't necessarily have to be checking stuff every frame. 3. When two or more keys are pressed during the same frame, and released all at once in a future frame, only one of those keys with be added to the input list. This is because the script finds which singular key has been pressed most recently, and there are flaws when two keys have been pressed the same most recently. A fix for this would involve creating a list to store all of the keys that have been pressed equally recently, and processing each of those keys. 4. @cs2627883 suggested adding arrow key navigation. While that would be nice, it belongs more in the complete interface for typing things rather than just in this key input detection system. It's something to think about in the future. Other similar functionality would include highlighting portions of text, moving those portions, etc.