Os terminais compreendem apenas caracteres, não chaves. Portanto, todas as teclas de função são codificadas como sequências de caracteres, usando caracteres de controle. Além de alguns comuns que possuem um caractere de controle associado ( Tabé Ctrl+I
, Enteré Ctrl+M
, Escé Ctrl+[
), as teclas de função enviam sequências de escape, começando com Ctrl+[ [
ou Ctrl+[ O
. Você pode usar o tput
comando para ver o que os aplicativos de sequência de escape esperam para cada tecla de função no seu terminal. Essas seqüências são armazenadas no terminfo
banco de dados. Por exemplo, o snippet de shell abaixo mostra as seqüências de escape correspondentes a cada tecla de função.
$ for x in {1..12}; do echo -n "F$x "; tput kf$x | cat -A; echo; done
F1 ^[OP
F2 ^[OQ
F3 ^[OR
F4 ^[OS
F5 ^[[15~
F6 ^[[17~
F7 ^[[18~
F8 ^[[19~
F9 ^[[20~
F10 ^[[21~
F11 ^[[23~
F12 ^[[24~
Outra maneira de ver a sequência de escape de uma tecla de função é pressionar Ctrl+ Vem um aplicativo de terminal que não religue a tecla Ctrl+ V(como o shell). Ctrl+ Vinsere o próximo caractere (que será o caractere de escape) literalmente, e você poderá ver o restante da sequência, que consiste em caracteres comuns.
Como as seqüências podem ser difíceis de digitar, investigue a alteração das combinações de teclas em seu aplicativo ou usando outro emulador de terminal. Além disso, observe que você pode ter um limite de tempo: alguns aplicativos reconhecem apenas seqüências de escape se elas forem rápidas o suficiente, para que possam dar um significado apenas à Escchave.