Il problema sta nella proprietà keyCode dell'oggetto KeyboardEvent. Tale proprietà è deprecata e, cosa rilevante in questo caso, restituisce risultati inconsistenti sui diversi browser.

Da quel che ho capito, il sistema si basa sul fatto che keyCode restituisce 0 (su FF) quando si è premuto un tasto relativo ad un carattere "stampabile" (cioè quelli che non sono tasti funzionali come Invio, Canc, Shift, ecc.). Viene quindi usata questa condizione per determinare, appunto, il tipo di tasto premuto. Su altri browser, come Chrome, invece viene restituito un codice carattere per qualsiasi tasto premuto e questo genera il problema.

Ho provato a cercare qualche altra proprietà che potesse sostituire questa, per come è utilizzata su quel sistema, ma non ho trovato molto. Ci sono chiaramente diverse altre proprietà simili (vedi documentazione di KeyboardEvent), ma per ottenere un risultato valido bisogna modificare opportunamente il codice.

Se non risolvi prima posso giusto fare qualche altra prova ma non garantisco nulla.