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

MATLAB Discussion :

Quels caractères pour les touches de déplacement?


Sujet :

MATLAB

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 64
    Par défaut Quels caractères pour les touches de déplacement?
    Bonjour,

    Dans un GUI, j'aimerai exécuter une action lorsque j'appuie sur les flèches du clavier.
    Je rentre dans la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function mainGUI_KeyPressFcn(hObject, eventdata, handles)
    % hObject    handle to mainGUI (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
    key = get(handles.mainGUI,'Currentcharacter');
    dans ma variable key je retrouve bien la touche que j'ai pressée. Ca fonctionne aisément pour les touches alpha-numeriques.
    Par contre lorsque que j'appuie sur une des flèches le caractère que je récupère n'est pas affichable...
    De quelle manière dois-je effectuer mon test IF sur ce caractère afin de l'identifier.
    Autrement dit, par quoi dois-je remplecer le '????':
    Merci,

  2. #2
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Bonjour,

    tu trouveras la réponse dans ce post : Utilisation des flèches du clavier

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 64
    Par défaut
    Ok merci,

    En gros la solution la plus simple est de remplacer:

    'Currentcharacter' pas 'CurrentKey'.

    A+

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Citation Envoyé par Phelix2003 Voir le message
    En gros la solution la plus simple est de remplacer:

    'Currentcharacter' pas 'CurrentKey'.
    Sauf que, si mes souvenirs sont bons, CurrentKey est plateforme dépendant. CurrentCharacter fonctionne lui sur n'importre quelle plateforme.

    A vérifier

  5. #5
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Oui et puis je ne vois pas pourquoi ce serait plus simple d'utiliser 'currentkey' ?
    Vu qu'avec la table du post tu as toutes les valeurs ascii de toutes les touches, ça permet quand même d'être plus souple...

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Citation Envoyé par caro95470 Voir le message
    je ne vois pas pourquoi ce serait plus simple d'utiliser 'currentkey' ?
    Sauf pour les touches F1, F2, F...

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 64
    Par défaut
    Citation Envoyé par caro95470 Voir le message
    Oui et puis je ne vois pas pourquoi ce serait plus simple d'utiliser 'currentkey' ?
    Vu qu'avec la table du post tu as toutes les valeurs ascii de toutes les touches, ça permet quand même d'être plus souple...
    Tout simplement dans 'Currentcharacter' il n'y a rien dedans quand j'appuie sur une touche autre que alphanumérique... Tnadis que dans 'Currentkey' j'ai 'leftarrow','uparrow',....

  8. #8
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    C'est bizarre. L'exemple que j'avais écrit dans le lien donné par Caro ne fonctionne pas ?

    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
    function anim
     
    figure('doublebuffer','on','keypressfcn',@kpfcn)
    colormap(cool)
     
    axes('xlim',[-50 50],'ylim',[-50 50])
     
    fv.vertices=[-5 -5 ; 5 -5 ; 0 5];
    fv.faces=1:3;
    fv.facecolor='interp';
    fv.facevertexcdata=rand(3,1);
    fv.tag='triangle';
     
    patch(fv);
     
    function kpfcn(obj,event)
     
    h=findobj('type','patch','tag','triangle');
     
    xy=get(h,{'xdata','ydata'});
     
    switch get(obj,'currentcharacter')
     
    case 28 % Gauche
     
        xy{1}=xy{1}-1;
     
    case 29 % Droite
     
        xy{1}=xy{1}+1;
     
    case 30 % Haut
     
        xy{2}=xy{2}+1;
     
    case 31 % Bas
     
        xy{2}=xy{2}-1;
     
    case 27 % Esc
     
        xy{1}=[-5 ; 5 ; 0 ];
        xy{2}=[-5 ; -5 ; 5];
     
    end
     
    set(h,{'xdata','ydata'},xy)
    Si ça ne fonctionne pas, peux-tu nous dire quelle est ta version de MATLAB et sous quel système d'exploitation tu travailles ?

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 64
    Par défaut
    En fait j'ai conservé la fonction crée à partir de GUIDE.
    J'ai juste remplacé le 'Currentcharactere' par 'Currentkey':
    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
    % --- Executes on key press with focus on mainGUI and no controls selected.
    function mainGUI_KeyPressFcn(hObject, eventdata, handles)
    % hObject    handle to mainGUI (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    global FILTERED_DATA
    key = get(handles.mainGUI,'CurrentKey');
     
    switch key
        case 'leftarrow'
            val = round(get(handles.point_slider,'value'));
            if val>1
                val = val - 1;
            end
            set(handles.point_slider,'value',val);
        case 'rightarrow'
            val = round(get(handles.point_slider,'value'));
            if val<273
                val = val + 1;
            end
            set(handles.point_slider,'value',val);
     
        case 'downarrow'
            val = round(get(handles.position_slider,'value'));
            if val>1
                val = val - 1;
            end
            set(handles.position_slider,'value',val);        
     
        case 'uparrow'
            val = round(get(handles.position_slider,'value'));
            if val<size(getappdata(0,'input_data'),3)-1
                val = val + 1;
            end
            set(handles.position_slider,'value',val);        
     
     
        otherwise
    end
    Affpol2zoompoint(getappdata(0,'input_data')...
        ,FILTERED_DATA...
        ,round(get(handles.point_slider,'value'))...
        ,round(str2double(get(handles.plan_edit,'String'))) ...
        ,round(get(handles.position_slider,'value'))...
        ,get(handles.zoom_window_popupmenu,'value'),handles);
    Sinon Matlab R2007b (7.5.0.)
    sous windows XP...

  10. #10
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Je voulais surtout savoir si mon bout de code fonctionnait sur ta machine ?

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 64
    Par défaut
    oui ca marche...

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

Discussions similaires

  1. [MySQL] Quel charset pour les caractères accentués
    Par Général03 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 07/01/2010, 17h47
  2. [Joomla!] [choix] Quel CMS pour les besoins suivants
    Par masseur dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 23/01/2007, 00h53
  3. Quel avenir pour les informaticiens ?
    Par ghita269 dans le forum Emploi
    Réponses: 25
    Dernier message: 09/12/2005, 09h21
  4. Quel avenir pour les outils de génération de code ?
    Par Bruno75 dans le forum Débats sur le développement - Le Best Of
    Réponses: 5
    Dernier message: 05/11/2003, 18h30
  5. Quel Outil pour les applis Industrielles ET bases de données
    Par ThierryAIM dans le forum Débats sur le développement - Le Best Of
    Réponses: 8
    Dernier message: 23/04/2003, 09h14

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