2010-12-02 3 views
8

Est-il possible d'envoyer la clé "C- (" à Emacs via un terminal VT100/xterm (Mac OS X Terminal) Y a-t-il une séquence d'échappement qui pourrait être envoyée pour atteindre l'équivalent?Envoyer "C- (" à Emacs dans le terminal VT100/xterm (Terminal de Mac OS X)?

Je soupçonne que le problème fondamental est que le concept de combiner le contrôle avec le caractère "(" (et d'autres caractères qui sont produits en utilisant shift)

Remarque: L'utilisation de Cocoa Emacs n'est pas une option et la raison pour laquelle "C- (" est nécessaire est que paredit.el l'utilise parmi d'autres combinaisons de touches, et il serait préférable de ne pas le remapper (car il est logique de l'avoir sur "C- (").

Répondre

14

Un terminal VT100 n'a pas pu faire cela, car il n'y a pas de caractère de contrôle ^( correspondant à (. Cependant, xterm a ce qu'on appelle le mode "modifyOtherKeys", qui permet d'envoyer des codes clés uniques pour des combinaisons de ce type.

Pour l'activer, définissez la ressource modifyOtherKeys, par ex. en ~/.Xdefaults:

XTerm*vt100.modifyOtherKeys: 1 

Avec cela, Ctrl + (envoie le code d'activation suivant:

^[[27;6;40~ 

C'est assez long, donc un autre format pour keycodes comme cela a été introduit, qui peut être activée en définissant la formatOtherKeys ressource:

XTerm*vt100.formatOtherKeys: 1 

Avec cela, Ctrl + (envoie:

^[[40;6u 

Dans ces deux codes-clés, le 40 est le code ASCII décimal pour (, et le 6 représente le Ctrl. Pour plus de détails, voir et http://invisible-island.net/xterm/ctlseqs/ctlseqs.html pour plus de détails. Aucune idée si Terminal.app prend en charge tout cela.

+0

Merci, c'est presque parfait. Une partie du puzzle était de trouver le code d'échappement qui générerait "C- (", que vous avez fourni - j'ai réussi à vérifier qu'il fonctionne également dans le terminal MacOS X. Maintenant, j'ai remarqué que le terminal de MacOS X ne fournit malheureusement pas de mappage arbitraire touches (dans ce cas, Ctrl + parenthèse) pour échapper des séquences - seule la fonction, la flèche et quelques autres touches peuvent être mappées –

+1

iTerm2 vous permettra de remapper des touches arbitraires pour échapper à des séquences –

+0

Plus de 4 ans et encore sauver les peuples derrière, bon gars @ ak2 :) – zeusdeux

Questions connexes