For the input system on Neochip8 the way i worked it was to have the keys mapped as a boolean Array of 15 slots, and when you press the key on the keyboard, it sets the corresponding slot (in terms of the chip8 key) in the array to true, then when you take your finger off it, it sets it to false again.
it seems to work pretty well anyway, having it as a single variable i found you couldnt jump forward or anything like that in ant, so it made it kinda impossible to play.
also its best to make the delay registers much slower than the opcode loop cycle, this makes games like invaders much more playable, you can get passed level 1 then :evil: