Précédent   Forum des professionnels en informatique > Général Développement > Programmation système > Linux > GTK
GTK Vos questions sur GTK sous Linux
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/07/2011, 23h57   #1
Invité de passage
 
Inscription : août 2006
Messages : 3
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 3
Points : 0
Points : 0
Par défaut fonctionnement en mode réduit

Bonjour,

Le code suivant permet de faire bouger la souris par l'intermédiaire des flèches du clavier.
Ceci fonctionne que lorsque la fenêtre de l'application est active.
Que puis je faire pour que cette fonction (mouvement de souris grâce au clavier) soit maintenue même lorsque la fenêtre est réduite ?

Merci


Code :
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
60
61
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
 
gboolean on_key_press (GtkWidget *widget, GdkEventKey *event)
{
  gint x = 0;
  gint y = 0;
  gint xadd = 0;
  gint yadd = 0;
  GdkScreen *screen = NULL;
  GdkDisplay *display = NULL;
 
  /* Determine la touche pressee */
  switch (event->keyval)
  {
    case GDK_Left:
      xadd -= 5;
    break;
    case GDK_Right:
      xadd += 5;
    break;
    case GDK_Up:
      yadd -= 5;
    break;
    case GDK_Down:
      yadd += 5;
    break;
  }
 
  /* Recupere l'ecran par defaut */
  display = gdk_display_get_default ();
  screen = gdk_display_get_default_screen (display);
 
  /* Recupere la position du curseur */
  gdk_display_get_pointer (display, NULL, &x, &y, NULL);
 
  /* Calcul de la nouvelle position du curseur */
  //x += xadd;
  //y += yadd;
  x = x + 6*xadd;
  y = y + 6*yadd;
  gdk_display_warp_pointer (display, screen, x, y);
 
  /* Propagation de l'evenement */
  return FALSE;
}
 
int main (int argc, char **argv)
{
  GtkWidget *window = NULL;
 
  gtk_init (&argc, &argv);
  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  g_signal_connect (G_OBJECT (window), "destroy", gtk_main_quit, NULL);
  g_signal_connect (G_OBJECT (window), "key_press_event",
                    G_CALLBACK (on_key_press), NULL);
  gtk_widget_show_all (window);
  //gtk_window_set_keep_above (window);
  gtk_main ();
  return 0;
}
mikmak08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2011, 03h29   #2
Membre actif
 
Avatar de artificier59
 
Zaour
Étudiant - Réseaux & Télécommunications
Inscription : août 2009
Messages : 235
Détails du profil
Informations personnelles :
Nom : Zaour

Informations professionnelles :
Activité : Étudiant - Réseaux & Télécommunications

Informations forums :
Inscription : août 2009
Messages : 235
Points : 163
Points : 163
Je ne pense pas que ça soit faisable avec Gtk+/Gdk, à mon avis, il faudra se tourner vers une API de plus bas niveau, c'est à dire libX11

Après, peut-être que je me trompe, et dans ce cas, d'autres pourront confirmer ou infirmer
artificier59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h16.


 
 
 
 
Partenaires

Hébergement Web