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

GTK+ avec C & C++ Discussion :

[gtk/gdk] Codes des touches clavier


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 506
    Par défaut [gtk/gdk] Codes des touches clavier
    Bonjour,

    Je fais quelque opérations sur les touches clavier, et je me pose une question: quelle est la valeur la plus sure (dans le sens où elle ne changera pas en fonction de la machine, du système, ou du clavier) entre la valeur logique de la touche (gdkEventKey->keyval) et la valeur hardware de la touche (GdkEventKey->hardware_keycode) ?
    J'ai pensé tout d'abord que ce serait la valeur logique, mais en faisant un test sur un ordi fixe, et sur un portable, j'ai constaté une différence de valeur keyval
    sur la touche " ²" , alors que le hardware_keycode des touches semblent identiques....

    Quelqu'un s'est-il déjà penché sur le sujet ?

    Autre question, comment identifier à coup sur la touche ALT-GR ? car le type de mask sur un eventKey identifie la touche Shit, Control, Lock, mais pas la touche ALT gr (ou Compose)...

    Merci

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 506
    Par défaut
    il semblerait que la valeur hardware ne change jamais, alors que la valeur logique est utilisée par gtk pour mapper les différents languages (fr, us, etc...)

  3. #3
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Bonjour,

    A mon avis, la valeur hardware dépend de la position de la touche sur le clavier alors que la valeur logique dépend du langage.

    Pour la touche Alt Gr, tu as uniquement GDK_Alt_L et GDK_Alt_R.

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 506
    Par défaut
    Je n'en suis plus si sûr, depuis que j'ai remarqué entre un portable et un fixe, que la touche ² ne renvoyait pas le même code logique...
    Voilà pourquoi je pense m'"appuyer sur la valeur hardware qui ne semble pas changer, mais je ne trouve rien sur internet qui précise si la valeur hardware risque de changer d'un clavier à l'autre, ou d'une machine à l'autre...
    Mes tests semblent dire que non, mais on ne fait pas de preuve par l'exemple

  5. #5
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Je viens de faire un p'tit test, sous windows quand je change la langue les deux valeurs sont modifiées :
    En français :
    • A : 113 - 81
    • Q : 97 - 65
    En anglais :
    • A : 97 - 65
    • Q : 113 - 81
    Je viens de trouver un Howto sur le clavier, voici un passage interessant :
    Citation Envoyé par [url=http://www.ibiblio.org/pub/Linux/docs/HOWTO/translations/fr/text/Keyboard-and-Console-HOWTO.txt]The Linux Keyboard HOWTO
    [/url]
    2. Le clavier - généralités

    Quand on appuie sur une touche, le contrôleur clavier envoie des
    scancodes au pilote clavier du noyau. Certains claviers sont
    programmables, mais en général les scancodes sont fixes. Quand le
    pilote clavier est en _mode scancode_ (dit aussi _mode raw_), le noyau
    se contente de transmettre les codes tels quels à l'application, c'est
    ce qui se passe sous X. Sinon le flux de scancodes est décomposé en
    keycodes correspondant à l'appui ou au relâchement d'une touche. (Le
    simple fait d'appuyer sur une touche peut produire jusqu'à 6
    scancodes, réduits ici en un seul keycode.) Si le pilote clavier est
    en _mode keycode_ (ou _mode mediumraw_), l'application reçoit les
    keycodes (ce mode est utilisé, par exemple, par showkey). Sinon, les
    keycodes sont traduits d'après une table (keymap), ensuite, soit un
    caractère (ou un chaîne) est envoyé à l'application, soit une action
    est déclenchée. (Exemple: si on appuie et relâche la touche q, le
    clavier envoie les scancodes 0x1E et 0x9E, ce qui est converti en
    keycodes 30 et 158, puis en la valeur 113, qui est le code ASCII ou
    Latin-1 de q (avec un clavier Azerty et une keymap adaptée). Si on
    appuie et relâche la touche Suppr, le clavier envoie les scancodes
    0xE0 0x53 0xE0 0xD3, convertis en keycodes 111 et 239, ce qui donne
    finalement la séquence ESC [ 3 ~. Ctrl-Alt-Suppr est une combinaison
    de touches qui déclenche une action.)
    Je pense que maintenant ta question à plus sa place dans le forum hardware, non ?

    PS :
    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
    #include <gtk/gtk.h>
    #include <gdk/gdkkeysyms.h>
     
    gboolean key_press (GtkWidget *widget, GdkEventKey *event, gpointer user_data)
    {
      gchar *text = NULL;
     
      text = g_strdup_printf ("%d - %d", event->keyval, event->hardware_keycode);
      gtk_label_set_text (GTK_LABEL (user_data), text);
      free (text);
      return TRUE;
    }
     
    int main (int argc, char **argv)
    {
      GtkWidget *window = NULL;
      GtkWidget *vbox = NULL;
      GtkWidget *label = NULL;
     
      gtk_init (&argc, &argv);
     
      window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
      g_signal_connect (G_OBJECT(window), "destroy", gtk_main_quit, NULL);
     
      vbox = gtk_vbox_new (TRUE, 0);
      gtk_container_add (GTK_CONTAINER (window), vbox);
     
      label = gtk_label_new ("Press any key...");
      gtk_box_pack_start (GTK_BOX (vbox), label, TRUE, TRUE, 0);
      g_signal_connect
      (
        G_OBJECT(window),
        "key-release-event",
        G_CALLBACK (key_press),
        label
      );
     
      gtk_widget_show_all (window);
      gtk_main ();
      return 0;
    }

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 506
    Par défaut
    arrrg donc en sous windows il change également le hardware ???!! Mais comment se repère-t-il alors ? Je pensais qu'il récupérait le hardware, et que selon le language il renvoyait le code logique adéquat.....
    je ne peux pas encore tester sous win, ma config mingw est en chantier
    tu es sûr de ne pas t'être trompé :'( ?

Discussions similaires

  1. Codes des touches clavier.
    Par anorham dans le forum C++Builder
    Réponses: 3
    Dernier message: 29/03/2013, 11h01
  2. [Toutes versions] Codes des touches clavier
    Par setepenre dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/01/2011, 14h46
  3. [GDK/GTK+] Répétition automatique des touches
    Par soft0613 dans le forum GTK+ avec C & C++
    Réponses: 0
    Dernier message: 05/08/2009, 07h55
  4. code hexa des touches claviers
    Par darkwall_37 dans le forum Débuter
    Réponses: 4
    Dernier message: 24/03/2009, 09h52
  5. Code des touche du clavier
    Par kroma23 dans le forum Langage
    Réponses: 4
    Dernier message: 27/03/2008, 17h46

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