Если вы хотите "отправить" функциональную клавишу, используйте соответствующий синтаксис
^F1::SendInput {F5}
Это приведет к тому, что Putty будет действовать так, как если бы вы нажали F5, а затем отправит соответствующую последовательность символов (последовательность Escape) на сервер.
               PC                                         Server
   +---------------------+   Network     +-------------------------+
   | [AHK] ----> [Putty] | ============> | [TTY] ------> [Program] |
   |        F5           |  Esc [ 15 ~   |        Esc…    |   ^    |
   +---------------------+               |                |   | F5 |
                                         |                v   |    |
                                         |    $TERM------[Curses]  |
                                         |                 |       |
                                         |    /usr/share/terminfo  |
                                         +-------------------------+
На сервере последовательность Escape сначала обрабатывается обработчиком TTY (ищет сигналы прерываний и т.д.), А затем передается вашей серверной программе, которая обычно передает ее в библиотеку curses которая переводит последовательности Escape обратно в имена функций. Затем программа решает, что делать в результате ее получения.
Фактическая последовательность Escape зависит от "эмуляции терминала". По умолчанию Putty эмулирует xterm. Библиотека Curses использует значение переменной окружения TERM для поиска в terminfo, какая функция представлена escape-последовательностью.
Escape-последовательности для функциональных клавиш можно найти в /etc /termcap, вот несколько
                                    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       -
Заметки
- В серии VT100 было только четыре функциональных клавиши с маркировкой от PF1 до PF4
- VT220 имел 20 функциональных клавиш с маркировкой до F20
- VT220 использовал функциональную клавишу в положении 5 для функции "прерывания". (следовательно, разрыв выше)
- Не все эмуляторы или существующие файлы termcap/terminfo согласны с вышеизложенным.
- Есть странные пробелы в прогрессии.
- xterm - это не определение, это неуправляемая семья неудачников, нет двух одинаковых.
- То же самое "ANSI"
- Многие эмуляторы используют что-то вроде Shift+F1 для F13, Alt+F1 для F25 и т.д.
- В PuTTY shift+F1 - это то же самое, что F11 (не F13)
- Да, это беспорядок. Вот почему мы позволяем PuTTY и Terminfo скрыть это от нас.