Envoyer INSERT et F12 dans le script attendus

Je sais que pour envoyer un retour dans un script attendu, je fais quelque chose comme ceci:

send -- "\r" 

Quelle est la commande d’envoi pour les touches INSERT et F12 ? J’ai regardé en ligne et ne peux pas le trouver n’importe où.

Je dois dire que la réponse initialement acceptée n’est pas correcte car

  1. La séquence de caractères réelle n’est pas la même pour différents types de terminaux;
  2. send -- "[2~" est faux car
    1. [ dans Tcl a une signification particulière (substitution de commande), il doit donc être échappé avec une barre oblique inverse;
    2. Le caractère ESC ( \E comme dans la sortie de infocmp ) est manquant;

La bonne manière:

 set kf12 [exec tput kf12] set kins [exec tput kich1] ... ... send $kf12 

Si vous devez spécifier manuellement le type TERM, utilisez tput -T :

-T type

indique le type de terminal. Normalement, cette option est inutile, car la valeur par défaut provient de la variable d’environnement TERM . Si -T est spécifié, les variables shell LINES et COLUMNS seront également ignorées.

Pour les chaînes magiques kf12 et kich1 , recherchez dans la page du manuel terminfo .

Identifiez les caractères que votre terminal envoie lorsque vous appuyez sur INSERT suivi de F12 en exécutant od -c :

 $ od -c ^[[2z^[[193z <-- Press keys here, then ENTER and Ctrl-D 0000000 033 [ 2 z 033 [ 1 9 3 z \n 0000013 

Cela signifie que vous devriez send -- "\E\[2z\E\[193z" . Notez que ceci est spécifique au terminal. La séquence ci-dessus est envoyée par mon TERM=xterm-256color .

Utiliser infocmp xterm comme source:

 $ infocmp xterm |grep -oP "f12=\S+|kich1=\S+" f12=\E[24~, kich1=\E[2~, 
  • INSÉRER: send -- "[2~" ou send -- {[2~}
  • F12: send -- "[24~" ou send -- {[24~}