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

Allegro Discussion :

Unicode vers Ascii, et autres questions sur les claviers azerty


Sujet :

Allegro

  1. #1
    Membre régulier
    Avatar de DjPoke
    Homme Profil pro
    Invalide temporaire
    Inscrit en
    Août 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Invalide temporaire

    Informations forums :
    Inscription : Août 2005
    Messages : 93
    Points : 77
    Points
    77
    Billets dans le blog
    1
    Par défaut Unicode vers Ascii, et autres questions sur les claviers azerty
    Bonjour,

    Voici quelques questions pour plus expérimentés que moi, merci de votre aide et de votre patience :

    1) Je me demandais s'il existe une commande native dans Allegro 5 permettant de faire la conversion de l'unicode vers l'ascii ?
    Pour l'instant, la seule astuce que j'ai trouvée, c'est de prendre la valeur unicode, et de faire un ET logique avec la valeur 0x7f. (je n'ai pas besoin des caractères accentués, mon app est en Anglais)

    2) Existe-t-il un moyen de sélectionner les locales ? Pour l'instant, mon clavier est reconnu comme azerty, mais quand je récupère le texte saisi au clavier (en unicode), certains caractères sont tout simplement remplacés par d'autres.
    Arobase, par exemple, devrait être obtenu avec altgr+0, mais j'obtient la même valeur unicode que quand j'appuie sur le "à".
    Pour l'instant, je contourne le problème en vérifiant les keycodes en même temps que les valeurs unicode, et je retourne des valeurs ascii. Mais sur un clavier qwerty, ma routine ne fonctionne probablement pas.

    Je bosse sur Windows avec Codeblocks en C++.

  2. #2
    Membre régulier
    Avatar de DjPoke
    Homme Profil pro
    Invalide temporaire
    Inscrit en
    Août 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Invalide temporaire

    Informations forums :
    Inscription : Août 2005
    Messages : 93
    Points : 77
    Points
    77
    Billets dans le blog
    1
    Par défaut
    Voici comment je convertis pour l'instant l'unicode en ascii. keyAltgr est une variable globale. Ce système ne peut probablement pas fonctionner avec un clavier qwerty. La question que je me pose, c'est comment éviter la section "missing chars" dans mon code ?

    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
     
    // unicode to ascii (0-127)
    // with special bug fixes for azerty keyboard
    string GetInput(int code)
    {
        // unicode to ascii
        string ascii(1, (char)(code & 0x7f));
     
        // disable backspace char
        if ((code & 0x7f) == 0x7f) ascii = "";
     
        // missing chars
        if ((code == 224) && (keyAltgr))
        {
            ascii = "@";
        }
        else if ((code == 233) && (keyAltgr))
        {
            ascii = "~";
        }
        else if ((code == 34) && (keyAltgr))
        {
            ascii = "#";
        }
        else if ((code == 39) && (keyAltgr))
        {
            ascii = "{";
        }
        else if ((code == 61) && (keyAltgr))
        {
            ascii = "}";
        }
        else if ((code == 40) && (keyAltgr))
        {
            ascii = "[";
        }
        else if ((code == 41) && (keyAltgr))
        {
            ascii = "]";
        }
        else if ((code == 45) && (keyAltgr))
        {
            ascii = "|";
        }
        else if ((code == 232) && (keyAltgr))
        {
            ascii = "`";
        }
        else if ((code == 95) && (keyAltgr))
        {
            ascii = "\\";
        }
        else if ((code == 231) && (keyAltgr))
        {
            ascii = "^";
        }
     
        return ascii;
    }

  3. #3
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 986
    Points : 221 902
    Points
    221 902
    Billets dans le blog
    131
    Par défaut
    Bonjour,

    Pour l'extraction de l'Ascii, je pense que c'est correct.
    Sinon, par rapport à l'Unicode, avez-vous regardé ici : https://www.allegro.cc/manual/5/utf8.html ?

Discussions similaires

  1. Autre question sur les rêquete de QBE ET SQL et analyse croisée
    Par lilyali dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 17/04/2019, 19h34
  2. Réponses: 0
    Dernier message: 03/04/2015, 11h49
  3. Réponses: 0
    Dernier message: 21/06/2009, 22h54
  4. Réponses: 2
    Dernier message: 29/03/2008, 00h28
  5. Réponses: 7
    Dernier message: 11/09/2006, 15h23

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