IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

convertir code clavier en caractère


Sujet :

JavaScript

  1. #1
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut convertir code clavier en caractère
    Bonjour,

    je souhaite récupérer le code de la touche de clavier pressée et afficher le caractère correspondant.


    Pour récupérer le code clavier , pas de problème.

    Par contre lorsque je veux convertir ce code clavier pour obtenir le caractère correspondant j'ai un problème.
    J'utilise la fonction javascript "String.fromCharCode".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var car = String.fromCharCode(window.event.keyCode);
    je ne sais pas si c'est la bonne fonction à utiliser mais en tout cas je n'obtiens pas les caractères voulus;

    Exemple :

    code 65 --> retourne "A" au lieu de "a"
    code 97 --> retourne "a" au lieu de "1"

    Est-ce que j'utilise la bonne fonction javascript ?
    "Wash me away Clean your body of me Erase all the memories They'll only bring us pain And I've seen All i'll ever need"

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    bonjour,

    Citation Envoyé par danyboy85
    code 65 --> retourne "A" au lieu de "a"
    code 97 --> retourne "a" au lieu de "1"
    le code 65 est le code de "A" et 97 le code de "a" : les résultats sont justes.

  3. #3
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    Oui mais alors comment faire, à partir d'un événement e, provoqué en pressant la touche "1" du clavier, pour récupérer la valeur "1" et pas "a" ?

    Faut-il utiliser une autre table de caractères que la table ASCII ?
    "Wash me away Clean your body of me Erase all the memories They'll only bring us pain And I've seen All i'll ever need"

  4. #4
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    Pour être plus précis, chaque touche du clavier est identifiée par un code mais ce code n'a rien avoir avec la table des caractères ASCII.

    Si je presse la touche "1" du pavé numérique du clavier, le code de la touche retourné est "97".

    A partir de ce nombre 97, existe-il une fonction javascript permettant de convertir un code clavier en la valeur correspondante, ou dois-je moi même me taper toutes les conversions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var caractere;
    switch (event.keyCode) {
       case   97:caractere=1;break;
       case   98:caractere=2;break;
       //case  ...... 
    }
    "Wash me away Clean your body of me Erase all the memories They'll only bring us pain And I've seen All i'll ever need"

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 670
    Points
    66 670
    Billets dans le blog
    1
    Par défaut
    c'est quoi ton tableau de correspondance ???

    1 => 1

    tu veux recupérer quoi ???

    1 si tu tapes 1 ???
    1 si tu tapes a ???


    pas très clair ton truc ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    Je récupère l'événement onkeypress sur l'objet document et j'appelle une fonction javascript gererSaisie();

    Lorsque je tape sur la touche 1 du pavé numérique, ma fonction gererSaisie() est appelée, et grace a l'objet event, je peux récupérer le code de la touche pressée.

    Ma question est simple : existe-t-il une fonction javascript permettant, à partir du code de la touche du clavier, de récupérer la valeur de la touche, en l'occurence "1" pour le code clavier "97", ou dois-je moi même faire la correspondance entre le code de la touche et la valeur que je souhaite récupérer ?
    "Wash me away Clean your body of me Erase all the memories They'll only bring us pain And I've seen All i'll ever need"

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 670
    Points
    66 670
    Billets dans le blog
    1
    Par défaut
    et la correspondance entre le 1 et 97 elle sort d'ou ????

    si tu ne nous dis pas d'ou tu sors tes correspondances on ne va pas pouvoir t'aider ...

    a => a et pas 1

    si tu veux que 97 corresponde à 1 ce sera à toi de créer ta table personnelle !!
    je n'ai jamais vu nullepart que 97 vallait 1
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    Mais arrêtez de me faire dire ce que je n'ai pas dit!!!!!!!

    Je n'ai jamais di qu'il y avait une correspondance j'ai justement DEMANDE s'il en existait une !

    Quand tu tape sur la touche 1 du clavier et que ton focus est sur une zone de texte, ca écrit bien 1 à l'intérieur !

    Bon et bien moi je tape 1 mais PAS dans une zone de texte. Je récupère l'événement clavier et je veux que quand je tape sur 1 ca me retourne 1 c'est tout. Je demande tout simplement s'il n'existe pas une fonction du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getValeurToucheClavier(event.keyCode)
    Si c'est pas possible il suffit de le dire !
    "Wash me away Clean your body of me Erase all the memories They'll only bring us pain And I've seen All i'll ever need"

  9. #9
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    Citation Envoyé par danyboy85
    Pour être plus précis, chaque touche du clavier est identifiée par un code mais ce code n'a rien avoir avec la table des caractères ASCII.

    Si je presse la touche "1" du pavé numérique du clavier, le code de la touche retourné est "97".

    A partir de ce nombre 97, existe-il une fonction javascript permettant de convertir un code clavier en la valeur correspondante, ou dois-je moi même me taper toutes les conversions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var caractere;
    switch (event.keyCode) {
       case   97:caractere=1;break;
       case   98:caractere=2;break;
       //case  ...... 
    }
    malheureursement tu dois réaliser toi-même la correspondance code de la touche/code du caractère.

    voici un exemple (fonctionne sous IE et FF)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    <html>
    <head>
    <title></title>
     
    <script type="text/javascript">
    <!--
    function test(ev)
    {
     var valeur= ev.keyCode;
     var shift = ev.shiftKey;
     
     var elmt = document.getElementById("idDiv");
     if (valeur>=96 && valeur<=105)
     {
       elmt.innerHTML = valeur-96;
     }
     
     if (valeur>=65 && valeur<=90 && shift)
     {
       elmt.innerHTML = String.fromCharCode(valeur);
     }
     if (valeur>=65 && valeur<=90 && !shift)
     {
       elmt.innerHTML = String.fromCharCode(valeur+32);
     }
    }
    //-->
    </script>
     
     
    </head>
     
    <body onkeyUp="test(event)">
    <div id="idDiv"></div>
     
     
    </body>
     
    </html>

  10. #10
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    Parfait !

    Merci beaucoup Auteur, c'est exactment ce qu'il me faut !!!

    Bonne journée a tout le monde
    "Wash me away Clean your body of me Erase all the memories They'll only bring us pain And I've seen All i'll ever need"

  11. #11
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 670
    Points
    66 670
    Billets dans le blog
    1
    Par défaut
    Sauf que ça ne fonctionne pas pour les chiffres du pavé alpha ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  12. #12
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    Sauf que ça ne fonctionne pas pour les chiffres du pavé alpha ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    if (valeur>=48 && valeur<=57 && !shift)
     {
       elmt.innerHTML = String.fromCharCode(valeur);
     }
     
     if (valeur>=48 && valeur<=57 && shift)
     {
        switch(valeur)
        {
         case 48:  elmt.innerHTML="&agrave;";
              break;
         //......
         case 56:  elmt.innerHTML="_";
              break;
         case 57:  elmt.innerHTML="&ccedil;";
              break;
        }
     }
    code complet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
    <html>
    <head>
    <title></title>
     
    <script type="text/javascript">
    <!--
    function test(ev)
    {
     var valeur= ev.keyCode;
     var shift = ev.shiftKey;
     
     var elmt = document.getElementById("idDiv");
     
    //0->9 du Pave numérique : il faut que la touche Num soit activee
     if (valeur>=96 && valeur<=105)
     {
       elmt.innerHTML = valeur-96;
     }
     
    //A->Z avec la touche Shift
     if (valeur>=65 && valeur<=90 && shift)
     {
       elmt.innerHTML = String.fromCharCode(valeur);
     }
    //a->z sans Shift
     if (valeur>=65 && valeur<=90 && !shift)
     {
       elmt.innerHTML = String.fromCharCode(valeur+32);
     }
    }
     
    //0->9 de la partie alpha
    if (valeur>=48 && valeur<=57 && !shift)
     {
       elmt.innerHTML = String.fromCharCode(valeur);
     }
     
    //0->9 de la partie alpha + shift
     if (valeur>=48 && valeur<=57 && shift)
     {
        switch(valeur)
        {
         case 48:  elmt.innerHTML="&agrave;";
              break;
         //......
         case 56:  elmt.innerHTML="_";
              break;
         case 57:  elmt.innerHTML="&ccedil;";
              break;
        }
     }
     
    // et caetera, et caetera....
     
    //-->
    </script>
     
     
    </head>
     
    <body onkeyUp="test(event)">
    <div id="idDiv"></div>
     
     
    </body>
     
    </html>
    pour aller encore plus loin :
    -tester les touches Alt, Ctrl, Alt Gr (Alt+Ctrl), Caps, Num.
    -et affecter à chaque code touche un caractere selon les exemples ci-dessus.

    on peut ainsi s'amuser à désorganiser le clavier

  13. #13
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 670
    Points
    66 670
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    if (valeur>=48 && valeur<=57 && !shift)
     {
       elmt.innerHTML = String.fromCharCode(valeur);
     }
     
     if (valeur>=48 && valeur<=57 && shift)
     {
        switch(valeur)
        {
         case 48:  elmt.innerHTML="&agrave;";
              break;
         //......
         case 56:  elmt.innerHTML="_";
              break;
         case 57:  elmt.innerHTML="&ccedil;";
              break;
        }
     }
    en l'occurence c'est desorganisé
    à la place de & j'ai 1; é renvoit 2 ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  14. #14
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    Citation Envoyé par SpaceFrog
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    if (valeur>=48 && valeur<=57 && !shift)
     {
       elmt.innerHTML = String.fromCharCode(valeur);
     }
     
     if (valeur>=48 && valeur<=57 && shift)
     {
        switch(valeur)
        {
         case 48:  elmt.innerHTML="&agrave;";
              break;
         //......
         case 56:  elmt.innerHTML="_";
              break;
         case 57:  elmt.innerHTML="&ccedil;";
              break;
        }
     }
    en l'occurence c'est desorganisé
    à la place de & j'ai 1; é renvoit 2 ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    if (valeur>=48 && valeur<=57 && shift)
     {
       elmt.innerHTML = String.fromCharCode(valeur);
     }
     
     if (valeur>=48 && valeur<=57 && !shift)
     {
        switch(valeur)
        {
         case 48:  elmt.innerHTML="&agrave;";
              break;
         //......
         case 56:  elmt.innerHTML="_";
              break;
         case 57:  elmt.innerHTML="&ccedil;";
              break;
        }
     }
    le clavier n'était pas désorganisé : il ne répondait pas aux exigences du clavier français tout simplement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Convertir un entier en caractère avec des 0 devant
    Par Oluha dans le forum Développement
    Réponses: 12
    Dernier message: 28/08/2017, 13h37
  2. Convertir touche clavier en code
    Par jojo86 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 21/12/2011, 19h05
  3. [XSL --> HTML>Convertir code HEXA en caractère
    Par portu dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 23/04/2009, 11h26
  4. [javascript] générer un code de 6 caractère alphanumérique
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/09/2005, 17h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo