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

SWT/JFace Java Discussion :

[Keyboard international] convertir caractères spéciaux en nombre : 1 & 2 é etc


Sujet :

SWT/JFace Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 15
    Par défaut [Keyboard international] convertir caractères spéciaux en nombre : 1 & 2 é etc
    Bonjour,
    comme dit dans l'intitulé,
    je cherche à connaitre la 'majuscule' de '&' par exemple.

    Il est vrai que je pourrais faire une table de correspondance en regardant mon clavier, mais le problème est le suivant : je ne peux pas garantir que le clavier sera toujours le même partout (clavier belge ou français n'étant pas les même par exemple)

    Le fond du problème est que des utilisateurs font des ALT+1 par exemple

    si je détecte le caractère '1' , lorsqu'ils tapent sur le PAD_1 : OK
    si le 'caps lock' est enclenché et qu'il tapent sur les chiffres au dessus des lettres : OK
    mais s'il tapent sur le '1' sans avoir le caps lock, le caractère de mon clavier rend '&' : PAS BON

    l'autre solution est de détecter les événement sur les touches :
    j'écoute PAD_4 ou [le code de la touche &] : cela fonctionne...

    MAIS , évidement il y a un mais :
    prenons un ALT+$

    sur un clavier QUERTY le $ se retrouve à la place d'un ' azerty, et j'ai un problème similaire sur mes nombres et les () [] et {} ne sont pas au même endroit selon les claviers...

    bref.... cela semble irrésolvable...

    ---------------------------

    cependant, si je connaissais le type de clavier géré par l'OS, je pourrais déterminer les touches "mobiles", clavier par clavier...

    des fois il faut un keylistener sur 4 et ' avec un AZERTY
    et sur 4 et $ sur un QUERTY
    et je ne parle même pas des ARTY belges et allemands...
    ni du QWERTZ que j'ai eu a un moment (vive les suisses !)

    bref....

    -----------------------------------

    Peut être que SWT ou java propose des Helper pour générer les évènements claviers, mais pas à ma connaissance
    mis à par une table de conversion touches de clavier par type de clavier, je ne vois pas ....

    je rame à fond

    merci pour les idées ou toute suggestion !!!!!

    JR

  2. #2
    Membre expérimenté Avatar de Amine_sas
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 245
    Par défaut
    Salut,
    L'interface "KeyListener" fournit 3 méthodes a redefinir pour travailler avec les evenements du clavier: KeyPressed, KeyReleased et KeyTyped.

    Si par exemple un utilisateur tape un "A" majuscule en enfonçant la touche MAJ (ou Shift) paralellement avec la touche A 5 evenements seront declenchés:

    1- Pression de la touche MAJ (KeyPressed appelée pour VK_SHIFT).
    2- Pression de la touche A (KeyPressed appelée pour VK_A).
    3- frappe de "A" (KeyTyped appelée pour un "A").
    4- Relachement de la touche A (KeyReleased appelée pour VK_A).
    5- Relachement de la touche MAJ (KeyReleased appelée pour VK_SHIFT).

    cependant, si l'on tape un "a" miniscule, seuls 3 evenements sont déclenchés:
    1- Pression de la touche A (KeyPressed appelée pour VK_A).
    2- frappe de "a" (KeyTyped appelée cette fois-ci pour un "a").
    3- Relachement de la touche A (KeyReleased appelée pour VK_A).

    Ainsi, la méthode KeyTyped indique quel caractère a été tapé ("A" ou "a"), alors que KeyPressed et KeyReleased indique quel touche a été enfoncée.
    exmple d'utilisation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public void keyPressed(KeyEvent evt)
    {
        int keyCode = evt.getKeyCode();
        ...
    }
    le code des touches équivaut à une des constantes définies dans la classe KeyEvent:
    VK_A ... VK_Z
    VK_0 ... VK_9
    ...
    How to Write a Key Listener (pour en savoir plus sur l'utilisation de l'interface KeyListener).

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 15
    Par défaut
    Merci pour ton explication (par ailleurs très claire) sur l'utilisation des listenerers de SWING. Elle permet aux gens de commencer à devellopper.
    Je reconnais ne pas l'avoir précisé explicitement mais je travaille en SWT.

    Dans tous les cas, vois tu,
    mon problème est plus complexe qu'une simple majuscule minuscule, avec détection de masque.

    comme je l'ai dit, je reche une méthode qui me permet de différentier des evenements de touches préssée en fonction du clavier et de l'etat de 'capslock' ,
    >>> cet état n'apparait pas dans le masque.

    je reprend mon exemple avec un QUERTY et un AZERTY
    QUERTY : minuscule 4 majuscule $
    AZERTY : minuscule ' majuscule 4


    je veux détecter que l'utilisateur appuie sur une touche avec un 4 de dessiné dessus.
    si je met un listener sur 4 et '
    avec un clavier QUERTY, lorsqu'on appuie sur le ' (qui n'est pas situé sur le meme touche que 4) l'evenement est déclanché !!!!

    si je met un listener sour 'TOUCHE_4' et 'PAD_4' je suppose que cela fonctionne....

    mais réfléchissons de manière plus abstraite.
    je veux maintenant détecter l'action sur une touche $

    si je met un listener sur $ et * (le cas de ALTGR $ donnant ] ne me concerne pas : il s'aggit d'un autre masque)
    sur mon clavier AZERTY l'action se déclanche sur $ ou * (capslock + $) ou PAD_*
    sur mon clavier QUERTY l'action se déclanche sur * ou $ (caps lock+4) ou PAD_*

    si je met un listener sur la touche '$' (à ne pas confoncdre avec un listener sur le caractère '$')
    alors le listener en QUERTY n'est pas sur la touche '4'

    je reconnais qu'il s'agit d'un problème d'internationalisation, et il est probable que j'ai du mal a l'expliquer.

Discussions similaires

  1. Convertir caractère spéciaux HTML en UTF-8
    Par maxence51 dans le forum C#
    Réponses: 1
    Dernier message: 03/03/2009, 17h20
  2. [RegEx] Suppression des caractères spéciaux et nombres
    Par kenny.kev dans le forum Langage
    Réponses: 6
    Dernier message: 03/03/2008, 17h53
  3. Convertir caractères spéciaux
    Par jadorelescss38 dans le forum ASP
    Réponses: 5
    Dernier message: 02/05/2007, 16h41
  4. Caractères spéciaux et nombre décimaux
    Par Arfigado dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/09/2006, 10h51
  5. [Win32][D7] Convertir caractères spéciaux en code URL (HTML)
    Par Benjamin GAGNEUX dans le forum Delphi
    Réponses: 7
    Dernier message: 17/05/2006, 16h13

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