begin process at 2012 05 27 20:02:01
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

GTK+

 > INFORMATION GTK CONCERNANT UNE TOUCHE

INFORMATION GTK CONCERNANT UNE TOUCHE


 Information sur la source

Note :
Aucune note
Catégorie :GTK+ Classé sous :GTK, Key, Event Niveau :Débutant Date de création :05/08/2011 Vu / téléchargé :1 482 / 19

Auteur : Phelim

Ecrire un message privé
Site perso
Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Cette source retourne les informations de la structure GetEventKey quand vous pressez une touche du clavier.

Instruction pour compiler cette source avec GTK :
gcc -Wall `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0` -o key_tool -g key_tool.c

Source

  • /*!
  • * \brief GTK Program to get information about key pressed
  • * \author Fabien Arcellier
  • *
  • * To compil with GTK : gcc -Wall `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0` -o key_tool -g key_tool.c
  • */
  • #include <gtk/gtk.h>
  • static void destroy (GtkWidget*, gpointer);
  • static gboolean key_press_event (GtkWidget*, GdkEventKey*, gpointer);
  • int main(int argc, char *argv[])
  • {
  • GtkWidget *window = NULL, *label= NULL;
  • gtk_init(&argc, &argv);
  • window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  • gtk_window_set_title (GTK_WINDOW (window), "Key Pressed tool");
  • gtk_container_set_border_width (GTK_CONTAINER (window), 10);
  • gtk_widget_set_size_request (window, 300, 300);
  • gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
  • label = gtk_label_new ("Press a key");
  • gtk_label_set_selectable (GTK_LABEL (label), TRUE);
  • gtk_container_add (GTK_CONTAINER (window), label);
  • gtk_widget_show_all (window);
  • g_signal_connect (G_OBJECT (window), "key_press_event", G_CALLBACK (key_press_event), NULL);
  • g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (destroy), NULL);
  • gtk_main();
  • return 0;
  • }
  • /*!
  • * \brief Close application
  • */
  • static void destroy (GtkWidget *window, gpointer data)
  • {
  • gtk_main_quit();
  • }
  • /*!
  • * \brief Display information about key pressed in label
  • */
  • static gboolean key_press_event(GtkWidget *window, GdkEventKey *event, gpointer data)
  • {
  • char key_event_info[1024] = "";
  • char *event_string = NULL;
  • GtkWidget *label = NULL;
  • if (event -> string != NULL)
  • {
  • event_string = event -> string;
  • }
  • else
  • {
  • *event_string = '\0';
  • }
  • sprintf(key_event_info, "Key\n\n \
  • send_event : %d\n \
  • time : %d \n \
  • state : %d \n \
  • keyval : %d \n \
  • length : %d \n \
  • string : %s \n \
  • hardware_keycode : %d \n \
  • group : %d \n \
  • is_modifier %d",
  • event -> send_event,
  • event -> time,
  • event -> state,
  • event -> keyval,
  • event -> length,
  • event_string,
  • event -> hardware_keycode,
  • event -> group,
  • event -> is_modifier
  • );
  • label = gtk_bin_get_child (GTK_BIN (window));
  • gtk_label_set_text (GTK_LABEL (label), key_event_info);
  • return TRUE;
  • }
/*! 
 * \brief GTK Program to get information about key pressed
 * \author Fabien Arcellier
 * 
 * To compil with GTK : gcc -Wall `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0` -o key_tool -g key_tool.c
 */
#include <gtk/gtk.h>

static void destroy (GtkWidget*, gpointer);
static gboolean key_press_event (GtkWidget*, GdkEventKey*, gpointer);

int main(int argc, char *argv[])
{
  GtkWidget *window = NULL, *label= NULL;
  
  gtk_init(&argc, &argv);
  
  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_window_set_title (GTK_WINDOW (window), "Key Pressed tool");
  gtk_container_set_border_width (GTK_CONTAINER (window), 10);
  gtk_widget_set_size_request (window, 300, 300);
  gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
  
  label = gtk_label_new ("Press a key");
  gtk_label_set_selectable (GTK_LABEL (label), TRUE);
  
  gtk_container_add (GTK_CONTAINER (window), label);
  gtk_widget_show_all (window);
  
  g_signal_connect (G_OBJECT (window), "key_press_event", G_CALLBACK (key_press_event), NULL);
  g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (destroy), NULL);
  
  gtk_main();
  return 0;
}

/*!
 * \brief Close application
 */
static void destroy (GtkWidget *window, gpointer data) 
{
  gtk_main_quit();
}

/*!
 * \brief Display information about key pressed in label
 */
static gboolean key_press_event(GtkWidget *window, GdkEventKey *event, gpointer data)
{
  char key_event_info[1024] = "";
  char *event_string = NULL;
  GtkWidget *label = NULL;
  
  if (event -> string != NULL)
  {
    event_string = event -> string;
  }
  else
  {
    *event_string = '\0';
  }
  
  sprintf(key_event_info, "Key\n\n \
    send_event : %d\n \
    time : %d \n \
    state : %d \n \
    keyval : %d \n \
    length : %d \n \
    string : %s \n \
    hardware_keycode : %d \n \
    group : %d \n \
    is_modifier %d",
    event -> send_event,
    event -> time,
    event -> state,
    event -> keyval,
    event -> length,
    event_string,
    event -> hardware_keycode,
    event -> group,
    event -> is_modifier
  );
  
  label = gtk_bin_get_child (GTK_BIN (window));
  gtk_label_set_text (GTK_LABEL (label), key_event_info);
  
  return TRUE;
}

 Conclusion

C'est une source très simple, réalisé en quelques minutes mais qui peut rendre service.
Elle illustre également l'interception d'un signal sous GTK+ avec g_signal_connect

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source avec Zip Source avec une capture BINARY CLOCK GTK AVEC CONTRÔLE EN TRAY SOUS LINUX par dje_jay
Source avec Zip Source avec une capture [GTK+] FENÊTRE POPUP ANIMÉE EN BAS À DROITE DE L' ÉCRAN par katsankat
Source avec Zip GTK _CALCUL par jabirmed
Source avec Zip DICTIONNER RECHERCHE GTK par jabirmed
Source avec Zip JEU DE PIONS EN RESAUX EN GTK+ par karamimed

 Sources en rapport avec celle ci

Source avec Zip ALGORITHME ACO INTERFACE GTK par RyBeN
Source avec Zip Source avec une capture JEU PUISSANCE 4 EN C AVEC GTK par msaidara
Source avec Zip Source avec une capture [C/WIN32][DRIVER] DÉTECTION DE CRÉATION OU DE SUPPRESSION DE... par deck_bsd
Source avec une capture TRANSFERT DE FICHIER TCP [GCC - GTK] par ganjarasta
Source avec Zip GTK _CALCUL par jabirmed

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Probleme avec GTK et le code touche [ par Vamps ] Bonjour,En faite je veut en utilisant un switch que le programme reagisse a differente touche, en loccurance ici la touche ENTRER regarder le code :gb [LINUX/C/GTK]Au sujet des events, pour un demineur en gtk [ par pas2pseudo ] b'soir j'ai donc un chtit probleme j'explique quand je click (gauche ou droit) sur un bouton je veux recupurer dans ma fonction de callback la coordon mystère hexadécimal [ par remzz ] Bonjour à tous,Je débute alors peut-être ma question est-elle idiote. La voici :Avec l'extrait de code suivant (en C) :------------------char* key;int bdd oracle [ par stouk ] j'ai un probleme pour modifier une cle primaire, pour qu'elle soit egalement etrangere sous oracle.voici ma requete:alter table scenarioadd constraint Bonjour comment bloquer CTRL_CLOSE_EVENT [ par budo ] j'ai utiliser BOOL WINAPI ConsoleHandler(DWORD CEvent){ char mesg[128]; switch(CEvent) { case CTRL_C_EVENT: break; case CTRL_BR GTK [ par charafe ] BonjourJ'ai un projet en GTK à réaliser (le jeu de l'oie!!!!) , le probleme c'est que je n'y connais rien en GTK...Ou est ce que je peux trouver un tu glut key repeat [ par cppdupdup34 ] j'utilise glut et je me demandais s'il etait possible d'enlever le delai de repetion lors de l'appui sur une touchecppDupDup34<img src=/imgs Comment utiliser les flèches du clavier pour générer des évènements [ par pac2 ] Salut,Voilà comment je gère les évènements générés quand on enfonce une des touche du clavier:void keyboard (unsigned char key, int x, int y){ swit gtk fenetre fille [ par NoNo91330 ] est-il possible de creer des feneres fille avec gtk? Probleme de hash_map avec les string [ par playmo420 ] SalutJ'ai besoin d'utiliser une table de hachage dans un programme mais lorsque je prend une cle de type string, il y a une erreur... (ca fonctionne a


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales