Comment lier la clé de préfixe tmux à C- '?

4

J'aimerais définir la clé de mon préfixe tmux sur Ctrl-apostrophe, mais lorsque j'utilise set-option prefix "C-'" ou set-option prefix C-"'", tmux se plaint que "clé inconnue: C- '". De même pour `et:. Y a-t-il un moyen de lier ces clés?

Jeffrey Yasskin
la source

Réponses:

8

La plupart des émulateurs de terminal génèrent uniquement une sortie spéciale pour un ensemble de touches restreint lorsqu'ils sont utilisés conjointement avec la touche de modification. La clé d'apostrophe est l'une des clés qui fait ne pas générer une séquence de sortie spéciale (si elle ne fait rien ou produit simplement une apostrophe régulière).

Voir Wikipedia “ Caractères de contrôle ASCII " et " Comment les caractères de contrôle correspondent aux claviers ”.

Vous pouvez vérifier si votre émulateur de terminal génère une sortie pour Control- ', en le tapant dans cat -v, ou à l'invite du shell (dans la plupart des shells) après avoir tapé un Control-V.

Si cela génère une sortie spéciale (pas seulement ' ), vous pourrez peut-être le lier en tmux si le code de contrôle / séquence est connu pour tmux . La liste des noms de touches qui tmux reconnaît se trouve dans la page de manuel sous la section «Liaisons de touches». tmux reconnaîtra uniquement les touches spéciales si l’entrée terminfo de votre TERM en dehors de tmux les définit (voir man terminfo pour les noms de «capacité» et infocmp pour ceux que votre TERM définit); si nécessaire, vous pouvez étendre l’entrée terminfo de votre système juste pour tmux avec son terminal-overrides variable de configuration (ou recompiler votre propre entrée personnalisée avec tic ).

S'il ne génère pas de sortie spéciale, vous devrez le reconfigurer pour le faire (si cela est possible). vous pourriez avoir générer le même code que ^], ou la séquence pour "F20" (si elle est définie dans l'entrée de votre TERM lorsque vous êtes en dehors tmux ).

Chris Johnsen
la source
J'ai finalement réussi à passer de gnome-terminal à xterm, alors je sais maintenant Comment remapper Ctrl + '(la ressource de traduction). Cependant, en définissant la ressource XTerm * modifyOtherKeys: 1, je pouvais obtenir que Ctrl- 'génère "^ [[27; 5; 39 ~" au lieu d'une apostrophe. Maintenant, je me demande s’il existe un moyen de faire reconnaître par tmux que, même s’il ne se présente pas sous infocmp -L xterm-256color...
Jeffrey Yasskin
1
Vous pouvez utiliser terminal-overrides pour modifier des bits de l'entrée terminfo qui tmux les usages. Par exemple: set -g terminal-overrides "*:kf20=\e[27;5;39~" et set -g prefix F20
Chris Johnsen
1
Intéressant. J'ai fini par prendre votre suggestion initiale. La chaîne de traduction magique est la suivante: *VT100*translations: #override \n !Ctrl<Key>apostrophe: string("\033[34;1~"). infocmp rapporté " key_f20=\E[19;2~ ", alors j’ai dû deviner et vérifier la clé que tmux reconnaîtrait.
Jeffrey Yasskin