5.5. Types d'entrées utilisateur

GNU Emacs utilise une extension du jeu de caractères ASCII pour l'entrée au clavier ; il accepte aussi en entrée des événements de type autre que des caractères, comme les touches de fonction et des actions sur les boutons de souris.

Le jeu de caractères ASCII consiste en 128 codes de caractères. Certains de ces caractères sont des symboles graphiques assignés, comme a et = ; les autres sont des caractères de contrôle, comme Control-a (habituellement écrit C-a pour simplifier). C-a tient son nom du fait que vous l'obtenez en gardant la touche CTRL appuyée lorsque vous pressez la touche a.

Certains caractères de contrôle ASCII ont des noms spéciaux, et la plupart des terminaux ont des touches spéciales avec lesquelles vous pouvez les obtenir : par exemple, RET, TAB, DEL et ESC. Le caractère espace sera par la suite souvent référencé par SPC, bien qu'il soit à strictement parler un caractère graphique dont le graphique est vierge. Certains claviers ont une touche "linefeed" qui est un pseudonyme pour C-j.

Emacs étend le jeu de caractères ASCII avec des milliers de caractères imprimables supplémentaires (Chapter 20), des caractères de contrôle additionnels, et quelques modificateurs de plus qui peuvent être combinés avec n'importe quel caractère.

Sur des terminaux ASCII, seuls 32 caractères de contrôle sont possibles. Ce sont les variantes de contrôle des lettres et de @[]\^_. De plus, la touche shift est sans signification pour les caractères de contrôle : C-a et C-A sont les mêmes caractères, et Emacs ne peut pas les distinguer.

Mais le jeu de caractères d'Emacs a de la place pour des variantes de contrôle de tous les caractères imprimables, et pour faire la distinction entre C-a et C-A. Le système X Window rend possible l'entrée de tous ces caractères. Par exemple, C- (c'est-à-dire Control-Moins) et C-5 sont des commandes Emacs significatives sous X.

Une autre extension du jeu de caractères d'Emacs est l'ajout de bits modificateurs. Un seul bit modificateur est généralement utilisé ; il est appelé Meta. Chaque caractère a une variante Meta ; comme par exemple Meta-a (normalement écrit M-a pour simplifier), M-A (un caractère différent de M-a, bien que ces deux caractères aient des significations identiques sous Emacs), M-RET, et M-C-a ; logiquement parlant, l'ordre dans lequel les touches modificatrices CTRL et META sont mentionnées n'a pas d'importance.

Certains terminaux ont une touche META, vous permettant de taper les caractères Meta en gardant cette touche appuyée. Ainsi, Meta-a est obtenu en gardant META appuyé tout en pressant a. La touche META fonctionne comme la touche SHIFT. Une telle touche n'est toutefois pas toujours appelée META, cette fonction étant souvent une option spéciale pour une touche avec une autre utilité première.

S'il n'y a pas de touche META, vous pouvez toujours taper les caractères Meta en utilisant une séquence de deux caractères commençant par ESC. Ainsi, pour entrer M-a, vous pouvez taper ESC a. Pour entrer C-M-a, vous devriez taper ESC C-a. ESC est aussi permis sur les terminaux ayant une touche META, au cas où vous auriez pris l'habitude de l'utiliser.

Le système X Window fournit plusieurs autres touches modificatrices pouvant être appliquées à n'importe quel caractère d'entrée. Ils sont appelés SUPER, HYPER et ALT. Nous écrirons s-, H- et A- pour dire qu'un caractère utilise ces modificateurs. Ainsi, s-H-C-x est une abbréviation de Super-Hyper-Control-x. Tous les terminaux X ne fournissent pas actuellement des touches pour ces modificateurs -- en fait, beaucoup de terminaux ont une touche appelée ALT qui est en réalité une touche META. Les raccourcis clavier standards d'Emacs n'incluent aucun caractère avec ces modificateurs. Mais vous pouvez leur assigner une signification en personnalisant Emacs.

Les entrées au clavier incluent des touches du clavier qui ne sont pas des caractères du tout : par exemple les touches de fonction et les touches du curseur. Les boutons de souris sont aussi en dehors de la gamme des caractères. Vous pouvez modifier ces événements avec les touches modificatrices CTRL, META, SUPER, HYPER et ALT, exactement comme pour les caractères du clavier.

Les entrées caractères et les entrées non-caractère sont collectivement appelées événements d'entrée. , pour plus d'informations. Si vous ne programmez pas en Lisp, mais désirez simplement redéfinir la signification de quelques événements caractères ou non-caractères, voyez Chapter 32.

Les terminaux ASCII ne peuvent pas en réalité envoyer à l'ordinateur autre chose que des caractères ASCII. Ces terminaux utilisent une séquence de caractères pour représenter chaque touche de fonction. Mais ceci est invisible à l'utilisateur d'Emacs, car les routines d'entrée au clavier reconnaissent ces séquences spéciales et les convertissent en événements de touche de fonction avant que d'autres parties d'Emacs puissent les voir.