  NOM
    event - Divers utilitaires pour les évènements: génération d'évènements et définition d'évènements virtuels
  SYNTAXE
    event option ?arg arg ...?
  DESCRIPTION
    event add <<virtuel>> séquence ?séquence ...?
    event delete <<virtuel>> ?séquence séquence ...?
    event generate fenêtre évènement ?option valeur option valeur ...?
    event info ?<<virtuel>>?
  EVENT FIELDS
    -above fenêtre
    -borderwidth size
    -bouton numéro
    -count numéro
    -delta numéro
    -detail detail
    -focus boolean
    -height taille
    -keycode numéro
    -keysym nom
    -mode notify
    -override boolean
    -place where
    -root fenêtre
    -rootx coord
    -rooty coord
    -sendevent boolean
    -serial numéro
    -state state
    -subwindow fenêtre
    -time integer
    -warp boolean
    -width size
    -when quand
      now
      tail
      head
      mark
    -x coord
    -y coord
  VIRTUAL EVENT EXAMPLES
  VOIR EGALEMENT
  MOTS-CLES

### NOM

event - Divers utilitaires pour les évènements: génération d'évènements et définition d'évènements virtuels

### SYNTAXE

event option ?arg arg ...?

### DESCRIPTION

La commande event fournit plusieurs utilitaires de gestion des évènements du système de fenêtrage, comme la définition d'évènements virtuels et la synthèse d'évènements. La commande a plusieurs formes différentes, déterminées par le premier argument. Les formes suivantes sont actuellement reconnues:

event add <<virtuel>> séquence ?séquence ...?
  Associe l'évènement virtuel virtuel avec la séquence(s) physique d'évènements indiquée par les arguments séquence , de manière à ce que l'évènement virtuel se déclenche chaque fois qu'une des séquences se produit. Virtuel peut être n'importe quelle valeur chaîne et séquence doit avoir une des valeurs autorisées pour l'argument séquence de la commande bind. Si virtuel est déjà défini, la ou les nouvelles séquences d'évènements physiques sont ajoutées aux séquences existantes pour l'évènement.

event delete <<virtuel>> ?séquence séquence ...?
  Efface chacune des séquences associées à l'évènement virtuel indiqué par virtuel. Virtuel peut être n'importe quelle valeur chaîne et séquence doit avoir une des valeurs autorisées pour l'argument séquence de la commande bind. Toutes les séquences non actuellement associées à virtuel sont ignorées. Si aucun argument séquence n'est fourni, toutes les séquences d'évènement physique sont enlevées de virtuel, ainsi l'évènement virtuel ne se declenchera plus.

event generate fenêtre évènement ?option valeur option valeur ...?
  Génère un évènement de fenêtre et le prépare pour le traitement comme s'il avait été produit par le système de fenêtrage. Fenêtre donne le nom de chemin de la fenêtre pour laquelle l'évènement sera généré; ce peut être également un identificateur (comme celui retournée par winfo id) tant qu'il s'agit d'une fenêtre de l'application courante. Evènement fournit une courte description de l'évènement, comme <Shift-Button-2> ou <<Paste>>. Si Fenêtre est vide tout l'écran est désigné, et les coordonnées sont relatives à l'écran. Evènement doit avoir n'importe quelle des formes autorisées pour l'argument séquence de la commande bind excepté qu'il doit consister en un unique modèle d'évènement, pas une séquence. Des paires option-valeur peuvent être utilisées pour spécifier des attributs supplémentaires de l'évènement, comme les positions x et y de la souris ; voir CHAMPS D'EVENEMENTS ci-dessous. Si l'option -when n'est pas spécifiée, l'évènement est traité immédiatement: tous les gestionnaires d'évènement se terminent avant que la commande event generate retourne. Si l'option -when est spécifiée alors elle détermine quand l'évènement est traité. Certains évènements, comme les évènements clavier, exigent que la fenêtre ait le focus pour recevoir l'évènement correctement.

event info ?<<virtuel>>?
  Donne des informations sur les évènements virtuels. Si l'argument <<virtuel>> est omis, la valeur de retour est une liste de tous les évènement virtuels qui sont actuellement définis. Si <<virtuel>> est spécifié alors la valeur de retour est une liste dont les éléments sont les séquences d'évènement physiques actuellement définis pour l'évènement virtuel donné; si l'évènement virtuel n'est pas défini alors une chaîne vide est retournée.

### CHAMPS D'EVENEMENTS

Les options suivantes sont supportées par la commande event generate. Elles correspondent aux expansions``%'' autorisées dans les scripts de la commande bind .

-above fenêtre
  Fenêtre indique le champ above de l'évènement, en tant que nom de chemin de la fenêtre ou en tant qu'id entier de fenêtre . Valide pour les évènements configure. Correspond à la substitution %a des scripts de binding.

-borderwidth size
  Size doit être une mesure en pixels; indique le champ border_width de l'évènement. Valide pour les évènements configure. Correspond à la substitution %B des scripts de binding.

-button numéro
  Numéro doit être un entier; il indique le champ detail d'un évènement ButtonPress ou ButtonRelease, écrasant tout numéro de bouton fourni dans l'argument de base évènement. Correspond à la substitution %b des scripts de binding.

-count nombre
  Nombre doit être un entier; il indique le champ count de l'évènement. Valide pour les évènements Expose. Correspond à la substitution %c des scripts de binding.

-delta nombre
  Nombre doit être un entier; indique le champ delta de l'évènement MouseWheel. Le delta se réfère à la direction et à l'amplitude de la rotation de la roulette de la souris. Notez que la valeur n'est pas une mesure en pixels mais en unités de déplacement de la roulette de la souris. Généralement ces valeurs sont des multiples de 120. Par exemple, 120 fait défiler le widget texte du de 4 lignes vers le haut et -240 de 8 lignes vers le bas. Bien sur , d'autre widgets pourraient définir des comportements différents pour les déplacements de roulette de souris. Ce champ correspond à la substitution %D des scripts de binding.

-detail detail
  Detail indique le champ detail de l'évènement et doit être un des suivant:

      NotifyAncestor	NotifyNonlinearVirtual
      NotifyDetailNone	NotifyPointer
      NotifyInferior	NotifyPointerRoot
      NotifyNonlinear	NotifyVirtual

  Valide pour les évènementsEnter, Leave, FocusIn et FocusOut . Correspond à la substitution %d des scripts de binding.

-focus boolean
  Boolean doit être une valeur booléenne; indique le champ focus de l'évènement. Valide pour les évènementsEnter et Leave . Correspond à la substitution %f des scripts de binding.

-height taille
  Taille doit être une mesure en pixels; indique le champ hauteur de l'évènement. Valide pour les évenements Configure. Correspond à la substitution %h des scripts de binding.

-keycode nombre
  Nombre doit être un entier; indique le champ keycode de l'évènement. Valide pour les évènementsKeyPress et KeyRelease . Correspond à la substitution %k des scripts de binding.

-keysym nom
  NOM doit être le nom d'un keysym valide, comme g, space, ou Return; sa valeur keycode correspondante est utilisée comme champ keycode de l'évènement, écrasant tout détail spécifié dans l'argument de base event. Valide pour les évènementsKeyPress et KeyRelease . Correspond à la substitution %K des scripts de binding.

-mode notify
  Notify indique le champ mode de l'évènement et doit être un de NotifyNormal, NotifyGrab, NotifyUngrab, ou NotifyWhileGrabbed. Valide pour les évènementsEnter, Leave, FocusIn, et FocusOut. Correspond à la substitution %mdes scripts de binding.

-override boolean
  Boolean doit être a valeur booléenne; indique le champ override_redirect de l'évènement. Valide pour les évènementsMap, Reparent, et Configure . Correspond à la substitution %odes scripts de binding.

-place où
  Où indique le champ place de l'évènement; ce doit être soit PlaceOnTop soit PlaceOnBottom. Valide pour les évenements Configure. Correspond à la substitution %p des scripts de binding.

-root fenêtre
  Fenêtre doit être soit un nom de chemin de fenêtre ou un identificateur entier de fenêtre; indique le champ root de l'évènement. Valide pour les évènementsKeyPress, KeyRelease, ButtonPress, ButtonRelease, Enter, Leave, et Motion. Correspond à la substitution %Rdes scripts de binding.

-rootx coord
  Coord doit être une mesure en pixels; indique le champ x_root de l'évènement. Valide pour les évènementsKeyPress, KeyRelease, ButtonPress, ButtonRelease, Enter, Leave, et Motion. Correspond à la substitution %Xdes scripts de binding.

-rooty coord
  Coord doit être une mesure en pixels; elle indique le champ y_root de l'évènement. Valide pour les évènementsKeyPress, KeyRelease, ButtonPress, ButtonRelease, Enter, Leave, et Motion. Correspond à la substitution %Y des scripts de binding.

-sendevent boolean
  Boolean doit être a valeur booléenne; indique le champ send_event de l'évènement. Valide pour tout événement. Correspond à la substitution %E des scripts de binding.

-serial numéro
  Numéro doit être un entier; indique le champ serial de l'évènement. Valide pour tout événement. Correspond à la substitution %# des scripts de binding.

-state état
  Etat indique l'état de l'évènement. Pour les évènementsKeyPress, KeyRelease, ButtonPress, ButtonRelease, Enter, Leave, et Motion ce doit être une valeur entière. Pour les évènementsVisibility ce doit être l'un de VisibilityUnobscured, VisibilityPartiallyObscured, ou VisibilityFullyObscured. Cette option écrase tous les modificateurs comme Meta ou Control spécifiés dans l'event de base . Correspond à la substitution %s des scripts de binding.

-subwindow fenêtre
  Fenêtre indique la subwindow de l'évènement, soit un nom de chemin de widget Tk ou un identificateur entier de fenêtre . Valide pour les évènementsKeyPress, KeyRelease, ButtonPress, ButtonRelease, Enter, Leave, et Motion. Semblable à la substitution %S des scripts de binding.

-time entier
  Entier doit être une valeur entière; indique le champ time de l'évènement. Valide pour les évènementsKeyPress, KeyRelease, ButtonPress, ButtonRelease, Enter, Leave, Motion, et Property . Correspond à la substitution %tdes scripts de binding.

-warp boolean
  boolean doit être une valeur booléenne; elle indique si le pointeur d'écran doit être décalé. Valide pour les évènementsKeyPress, KeyRelease, ButtonPress, ButtonRelease, et Motion. Le pointeur est déplacé seulement dans la fenêtre à laquelle il est relié.

-width size
  Size doit être une mesure en pixels; indique le champ width de l'évènement. Valide pour les évènements Configure. Correspond à la substitution %w des scripts de binding.

-when quand
  Quand détermine quand l'évènement sera traité; doit être une des valeurs suivantes:

  now
    Traite l'évènement immédiatement, avant que la commande retourne. Ceci se produit quand l'option -when est omise.

  tail
    Place l'évènement dans la queue d'évènements Tcl derrière les évènements déjà dans la queue pour cette application.

  head
    Place l'évènement au début de la queue d'évènements Tcl, il sera ainsi géré avant tout autre évènements déjà dans la queue.

  mark
    Place l'évènement au début de la queue d'évènements Tcl mais derrière tout autre évènements déjà dans la queue avec -when mark. Cette option est utile pendant la génération d'une séries d'évènements qui doivent être traités dans l'ordre mais au début de la queue.

-x coord
  Coord doit être une mesure en pixels; indique le champ x de l'évènement. Valide pour les évènementsKeyPress, KeyRelease, ButtonPress, ButtonRelease, Motion, Enter, Leave, Expose, Configure, Gravity, et Reparent. Correspond à la substitution %x des scripts de binding. Si Fenêtre est vide la coordonnée est relative à l'écran, et cette option correspond à la substitution %X des scripts de binding.

-y coord
  Coord doit être une mesure en pixels; indique le champ y de l'évènement. Valide pour les évènementsKeyPress, KeyRelease, ButtonPress, ButtonRelease, Motion, Enter, Leave, Expose, Configure, Gravity, et Reparent. Correspond à la substitution %ydes scripts de binding. Si Fenêtre est vide la coordonnée est relative à l'écran, et cette option correspond à la substitution %Y des scripts de binding.

Toutes les options non spécifiées pendant la génération d'un évènement sont remplies avec la valeur 0, excepté serial, qui est rempli avec le numéro de série de l'évènement X suivant.

### EXEMPLES D'EVENEMENT VIRTUELS

Pour déclencher un binding sur un évènement virtuel, deux conditions doivent être réunies. D'abord, l'évènement virtuel doit être défini avec la commande event add. Ensuite, un binding doit être créé pour l'évènement virtuel avec la commande bind . Considèrons les définitions d'évènement virtuel suivantes:

    event add <<Paste>> <Control-y>
    event add <<Paste>> <Button-2>
    event add <<Save>> <Control-X><Control-S>
    event add <<Save>> <Shift-F12>

Dans la commande bind , un évènement virtuel peut être lié comme n'importe quel autre type d'évènement intégré comme suit:

    bind Entry <<Paste>> {%W insert [sélection get]}

Les double signes inférieur à/supérieur à sont utilisés pour spécifier qu'un évènement virtuel va être lié. Si l'utilisateur frappe Control-y ou appuie sur le bouton2, ou si un évènement virtuel <<Paste>> est créé avec event generate, alors le binding <<Paste>> sera appelé.

Si un binding virtuel a exactement la même séquence qu'un binding physique séparé, alors le binding physique prend la précédence. Considerons l'exemple suivant:

    event add <<Paste>> <Control-y> <Meta-Control-y>
    bind Entry <Control-y> {puts Control-y}
    bind Entry <<Paste>> {puts Paste}

Quand l'utilisateur tape Control-y le binding <Control-y> sera appelé, parceque un évènement physique est considéré plus spécifique qu'un évènement virtuel. Néanmoins, quand l'utilisateur tape Meta-Control-y le binding <<Paste>> sera appelé, parceque le modificateur Meta dans le modèle physique associé avec le binding virtuel est plus spécifique que la séquence <Control-y> pour l'évènement physique.

Les bindings sur un évènement virtuel peuvent être créés avant que l'évènement virtuel existe. Evidemment, l'évènement virtuel ne doit jamais être défini, par exemple, sur les plateformes où l'évènement virtuel spécifique serait dépourvu de sens ou ingénérable.

Quand la définition d'un évènement virtuel change à l'exécution, toutes les fenêtres répondront immédiatement à la nouvelle définition. Partant de l'exemple précédent, si le code suivant est exécuté:

    bind <Entry> <Control-y> {}
    event add <<Paste>> <Key-F6>

le comportement changera de deux façons. D'abord, le binding <<Paste>> émergera. Taper Control-y will n'appelera plus le binding <Control-y>, mais appellera à la place l'évènement virtuel <<Paste>>. Ensuite, appuyer sur la touche F6 key appelera maintenant le binding <<Paste>>.

### VOIR EGALEMENT

bind

### MOTS-CLES

évènement, binding, define, handle, virtuel évènement

    Copyright © 1996 Sun Microsystems, Inc.
    Copyright © 1998-2000 Ajuba Solutions.
    Copyright © 1995-1997 Roger E. Critchlow Jr.

Copyright © 2003 - Le Portail Tcl/Tk Francophone.