2012-02-16 2 views
0

Lorsque j'appuie sur une touche de mon clavier, je peux obtenir le code clé de cette touche en utilisant e.keyCode. Mais le code clé que je reçois ne tient pas compte des touches alt/ctrl/shift enfoncées, qui modifient le code clé.javascript - calculer "vrai" keyCode

Heureusement, j'obtiens les propriétés shiftKey/altKey/ctrlKey avec l'événement afin que je puisse calculer le "vrai" code de clé.

Mais je ne sais pas comment le calculer correctement. Où puis-je lire à ce sujet? Est-ce aussi simple que de soustraire 32 si on appuie sur shift et ainsi de suite, ou y a-t-il beaucoup d'exceptions?

+0

Il y a des tonnes d'exceptions, et cela devient pire quand vous prenez en compte les configurations de clavier internationales. La prise en charge avancée de la gestion du clavier dans javascript est abyssale. –

Répondre

1

Vous vous trompez, les codes clés ne changent pas car ils se réfèrent à une touche spécifique du clavier. Indépendamment des touches de modification, ces codes restent les mêmes (et même les touches de modification ont elles-mêmes un code clé).

Capturez l'événement keypress, qui vous permettra d'accéder aux codes de caractères.

el.onkeypress = function (evt) { 
    alert((evt || window.event).charCode); 
} 
0

Je ne comprends pas pourquoi vous souhaitez calculer les "vrais" keyCodes. Si vous faites des raccourcis pour votre site/application/peu importe, vous pouvez simplement vérifier si le bouton a été pressé était (par exemple) S et que Ctrl a été pressé en même temps.

Les vrais keyCodes n'ont aucune signification en soi (sauf si vous en avez besoin pour quelque chose de spécifique).

Btw, vous devriez envisager d'utiliser jQuery pour votre projet. Il normalise les keyCodes afin que vous n'ayez aucun comportement étrange dans n'importe quel navigateur (Windows et OS). Je suppose que c'est plus important.

+0

Je en ai besoin pour un shell, lorsque cela est nécessaire –