So um... I kinda fixed the issue with the first and second inputs swapping? I realised that I was being dumb this whole time, I had to completely rework the code. Fortunately, Find...Replace is a thing.
What I replaced:
currentIndex-1) >>> currentIndex-2)
currentIndex) >>> currentIndex-1)
currentIndex + 1) >>> currentIndex)
So now that problem is solved... not really. It's just made it so that now index = 0 is unreachable, rather than the last index being unreachable.
The reason I made this change is because I noticed that I was able to do "++++:+54367etc." when + should have been invalid. I then noticed that + was invalid here; "5436:5+". That's when it hit me.
(Sidenote: at least the user can press delete and clear. Only issue is that those buttons aren't there. The user must use keybinds instead; shift+c, backspace)
Also, I've noticed that the larger buttons seem to have null images for image1 (or at least it seems that way because they disappear) and the smaller buttons don't change when invalid. Which is strange, because the larger buttons definitely have an image1, and the other buttons definitely should be changing image.
Edit: I must have accidentally ctrl+z'd or deleted those lines of code at some point... Fixed now.