26 votes

Comment envoyer C-/ (c'est-à-dire control-slash) au terminal ?

J'essaie d'exécuter Emacs dans un terminal. J'ai activé l'option "utiliser l'option comme méta" dans les préférences du terminal et cela fonctionne correctement à 95%.

La séquence de touches ctrl-/ (ou en notation Emacs C-/) est "annuler". Cette séquence de touches fait juste sonner le terminal. Comment puis-je corriger cela ?

26voto

Nip Points 362

Contrôle - / ne fait pas partie de l'ensemble des codes de contrôle standard . Elle n'est pas directement représentable comme une frappe dans de nombreuses émulations de terminaux. Une telle frappe n'est correctement détectée que dans certains "modes scancode" ou "mode GUI" spécifiques à la plate-forme (où l'API vous indique exactement quelles touches et quels modificateurs sont utilisés). Votre émulateur de terminal émet un signal sonore car il s'agit effectivement d'une frappe invalide.

Les codes de contrôle standard ne couvrent que les versions "Contrôle" de

  • @ A - Z [\]^_ (ASCII 0 - 31), et
  • ? (ASCII 127)

Dans la plupart des émulateurs de terminaux fonctionnant avec la plupart des dispositions de touches américaines, vous devrez peut-être appuyer sur Shift pour générer certains des "codes de contrôle" :

  • C-@ est ControlShift2 (depuis @ est Shift2 )
  • C-^ est ControlShift6 (depuis ^ est Shift6 )
  • C-_ est ControlShift- (depuis _ est Shift- )
  • Cependant, C- ? n'est pas toujours ControlShift/ (depuis ? est Shift/ ) ; C- ? est généralement généré par l'un ou l'autre des éléments suivants Backspace (sur les claviers Apple, la touche appelée simplement "supprimer" sans le symbole supplémentaire) ou Delete (celui avec les claviers Apple).

Dans Emacs basé sur un tty, vous pouvez généralement utiliser C-_ pour undo au lieu de C-/.

14voto

Kenji Noguchi Points 213

Ctrl-/ envoie 0x1f qui est l'équivalent de Ctrl-_ depuis l'époque de VT102. Il existe de nombreux émulateurs VT100 mais ce sont en fait des émulateurs VT102. iTerm2 fonctionne parce qu'il suit ce comportement.

Seuls les émulateurs qui se conforment strictement à la spécification VT100 ne peuvent pas envoyer Ctrl-/. Je crois que l'application Terminal en fait partie.

VT100 masque les 2 bits les plus significatifs de l'ASCII 7 bits lorsque la touche de contrôle est pressée. / est 0x2f, o est 0x6f. Lorsque les 2 bits sont masqués, ils sont tous deux 0x0f. Le VT100 peut envoyer Ctrl-o mais pas Ctrl-/.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X