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
send -- "[2~"
est faux car
[
dans Tcl a une signification particulière (substitution de commande), il doit donc être échappé avec une barre oblique inverse; \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 shellLINES
etCOLUMNS
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~,
send -- "[2~"
ou send -- {[2~}
send -- "[24~"
ou send -- {[24~}