- NOM
- grab - Confine les évènements souris et clavier dans une fenêtre
- SYNTAXE
- grab ?-global? fenêtre
- grab option ?arg arg ...?
- DESCRIPTION
- grab ?-global? fenêtre
- grab current ?fenêtre?
- grab release fenêtre
- grab set ?-global? fenêtre
- grab status fenêtre
- BUGS
- MOTS-CLES
grab - Confine les évènements souris et clavier dans une fenêtre
grab ?-global? fenêtre
grab option ?arg arg ...?
cette commande implémente des captures clavier et souris simples en Tk.
Les captures Tk sont différentes des captures X
décrites dans la documentation Xlib.
Quand une capture est positionnée pour une fenêtre particulière, Tk restreint tous les
évènements souris à cette fenêtre et ses descendants dans la hiérarchie de fenêtres Tk.
Tant que le pointeur est à l'intérieur du sous arbre de la fenêtre, le pointeur
se comportera exactement de même que s'il n'y avait pas de capture
et tous les évènements seront traités normalement.
Quand le pointeur est en dehors de l'arbre de fenêtre, les clics et déplacements
de souris sont transmis à fenêtre, et les évènements d'entrée et de sortie de la
fenêtre sont ignorés.
Le sous-arbre de capture "possède" le pointeur:
les fenêtres en dehors du sous-arbre seront visibles à l'écran
mais seront insensibles jusqu'à ce que la capture soit libérée.
L'arbre des fenêtres déscedant de la fenêtre de capture peurt inclure des
fenêtres top-level, auquel cas ces fenêtres
et leurs descendants continueront à recevoir les évènements souris
pendant la capture.
Deux formes de capture sont possibles: locale et globale.
Une capture locale concerne seulement l'application courante: les évènements seront
transmis aux autres applications comme si la capture n'existait pas.
Les captures sont locales par défaut.
Une capture globale bloque toutes les applications à l'écran,
ainsi seul le sous-arbre de l'application capturante sera
sensible aux évènements pointeur (clics de souris,
déplacements de pointeur, entrées et sortie dans les fenêtres).
Pendant les captures globales le gestionnaire de fenêtres ne reçoit pas les
évènements pointeur.
Pendant les captures locales, les évènements clavier (appui et relachement de touches)
sont répercutés comme d'habitude: le gestionnaire de fenêtres
contrôle quelle application reçoit les évènements clavier, et
s'ils sont envoyés à une fenêtre de l'application capturante alors ils sont
redirigés vers la fenêtre qui a le focus.
Pendant une capture globale Tk capture le clavier ainsi tous les évènements clavier
sont toujours envoyés à l'application capturante.
La commande focus est toujours utilisée pour déterminer quelle fenêtre de
l'application reçoit les évènements clavier.
La capture clavier est relachée quand la capture est relachée.
Les captures s'appliquent à des écrans particuliers. Si une application a des fenêtres
sur plusieurs écrans alors elle peut établir des captures séparées sur chaque
écran.
La capture sur un écran particulier affecte seulement les fenêtres de cet écran.
It est possible pour différentes applications sur un seul écran d'avoir simultanément
des captures locales, mais seulement une application peut avoir une capture globale
sur un écran donné à la fois.
La commande grab peut prendre n'importe quelle des formes suivantes:
- grab ?-global? fenêtre
-
Identique à grab set, décrite ci-dessous.
- grab current ?fenêtre?
-
Si fenêtre est spécifiée, retourne le nom de la fenêtre de capture courante
de cette application pour l'écran de fenêtre, ou une chaîne vide
s'il n'y a pas de fenêtre dans ce cas.
Si fenêtre est omise, la commande retourne une liste dont les éléments
sont toutes les fenêtres capturées par cette application pour tous les écrans,
ou une chaîne vide si l'application n'a pas de captures.
- grab release fenêtre
-
Libère la capture de fenêtre s'il y en a une, autrement ne fait
rien. Retourne une chaîne vide.
- grab set ?-global? fenêtre
-
Installe une capture pour fenêtre. Si -global est spécifié alors la
capture est globale, autrement elle est locale.
Si une capture était déjà effective pour cette application sur l'écran
de fenêtre alors elle est automatiquement libérée.
S'il y a déjà une capture pour fenêtre et qu'elle a la même
forme globale/locale que la capture demandée, alors la commande
ne fait rien. Retourne une chaîne vide.
- grab status fenêtre
-
Retourne none si aucune capture n'est actuellement en cours pour fenêtre,
local si une capture locale est en cours pour fenêtre, et
global dans le cas d'une capture globale.
Une implémentation incroyablement complexe et importante a été nécessaire pour produire
le simple effet de capture décrit ci-dessus.
Vu l'implémentation courante, il n'est pas sùr du tout pour les applications
d'utiliser les facilités de capture Xlib excepté par l'intermédiaire des fonctions de capture Tk.
Si les applications tentent de manipuler les mécanismes de capture X directement,
il y a des risques de plantages.
Si un seul process gère plusieurs applications Tk différentes,
seulement une de ces applications peut avoir une capture locale pour un écran donné
à un instant donné. Si les applications sont dans des processus différents, cette restriction n'existe pas.
grab, keyboard events, pointer events, fenêtre
Copyright © 1992 The Regents of the University of California.
Copyright © 1994-1996 Sun Microsystems, Inc.
Copyright © 1995-1997 Roger E. Critchlow Jr.
Copyright © 2003 - Le Portail Tcl/Tk Francophone.