Se você quiser "enviar" uma tecla de função, use a sintaxe apropriada
^F1::SendInput {F5}
Isso faria com que Putty agisse como se você tivesse pressionado F5 e então enviará uma seqüência apropriada de caracteres (uma sequência de escape) para o servidor.
PC Server
+---------------------+ Network +-------------------------+
| [AHK] ----> [Putty] | ============> | [TTY] ------> [Program] |
| F5 | Esc [ 15 ~ | Esc… | ^ |
+---------------------+ | | | F5 |
| v | |
| $TERM------[Curses] |
| | |
| /usr/share/terminfo |
+-------------------------+
No servidor, a seqüência Escape é processada primeiro pelo manipulador TTY (procurando por sinais de Interrupção etc) e, em seguida, é entregue ao programa do servidor, que a transfere para a biblioteca curses
, que traduz as seqüências de escape novamente em nomes de Funções . O programa então decide o que fazer como resultado de receber isso.
A sequência de escape real depende da "emulação de terminal". Por padrão, Putty emula um xterm. A biblioteca Curses usa o valor da variável de ambiente TERM para procurar no terminfo qual função é representada por uma seqüência de escape.
Sequências de escape para teclas de função podem ser encontradas em / etc / termcap, aqui estão algumas
SCO PuTTY PuTTY
Key Termcap VT100 VT220 ANSI XTERM VT400
--- ------- ------- ------- ------ ------ -------
F1 k1 Esc[OP Esc[OP Esc[M Esc[OP Esc[11~
F2 k2 Esc[OQ Esc[OQ Esc[N Esc[OQ Esc[12~
F3 k3 Esc[OR Esc[OR Esc[O Esc[OR Esc[13~
F4 k4 Esc[OS Esc[OS Esc[P Esc[OS Esc[14~
F5 k5 - - Esc[Q Esc[15~ Esc[15~
F6 k6 - Esc[17~ Esc[R Esc[17~ Esc[17~
F7 k7 - Esc[18~ Esc[S Esc[18~ Esc[18~
...
F10 k0 - Esc[21~ Esc[V Esc[21~ Esc[21~
F11 k1 - Esc[23~ Esc[X Esc[23~ Esc[23~
...
F14 kD - Esc[26~ Esc[Z Esc[26~ Esc[26~
F15 kE - Esc[27~ Esc[a Esc[27~ Esc[27~
...
F36 FP -
...
F63 Fr -
Notas
- A série VT100 tinha apenas quatro teclas de função rotuladas PF1 a PF4
- O VT220 tinha 20 teclas de função rotuladas até F20
- O VT220 usou uma tecla de função na posição 5 para uma função "break". (portanto, lacuna acima)
- Nem todos os emuladores ou arquivos termcap / terminfo existentes concordam com o acima.
- Existem lacunas estranhas na progressão.
- xterm não é uma definição, é uma família indisciplinada de desajustados, não há dois iguais.
- Idem "ANSI"
- Muitos emuladores usam algo como Shift + F1 para F13, Alt + F1 para F25, etc.
- No PuTTY, shift + F1 é o mesmo que F11 (não F13)
- Sim, é uma bagunça. É por isso que deixamos o PuTTY e o Terminfo escondê-lo de nós.