Es hängt also mit dem .click() zusammen. Was muss ich ändern, damit es so läuft, wie ich es gerne hätte?
Mit der .click()-Methode erzeugst du ein synthetisches Ereignis, die Parameter, die du dem Aufruf übergiebst, werden vom Browser ignoriert. Eine Lösung für dein Problem besteht darin, den Teil, der die sichtbaren Änderungen vornimmt, in eine eigene Funktion auszulagern, das erspart dir auch das jonglieren mit verschiedenen Event-Typen in einer Handler-Funktion.
http://jsfiddle.net/8zpj7mpz/2/
PS: Ich musste für Chrome e.key durch e.keyIdentifier ersetzen, du müsstest mal nachsehen, welche Eigenschaft hier vom Standard nahegelegt wird.