Ошибка, про которую спрашиваете — в знаке равенства.
if(event.key = a8[event.key]){
— здесь вы просто присваиваете в
event.key
значение из
a8
. При вводе маленкой
"o"
, возвращается ноль, и
if ()
не срабатывает. В двух других случаях возвращается не-ноль, и срабатывает код внутри
if ()
.
Вообще, мне кажется, надо не по клавишным событиям реагировать, а по любому изменению поля ввода — туда, например, могут вставить скопированный текст. И показывать нужно не единственный символ, а всю строку.