Термінали розуміють лише символи, а не клавіші. Отже, всі функціональні клавіші кодуються як послідовності символів, використовуючи контрольні символи. Окрім кількох поширених, які мають асоційований керуючий характер ( Tabє Ctrl+I
, Enterє Ctrl+M
, Escє Ctrl+[
), функціональні клавіші надсилають послідовності втечі, починаючи з Ctrl+[ [
або Ctrl+[ O
. Ви можете скористатися tput
командою, щоб побачити, які програми очікування послідовності очікування очікують для кожної функціональної клавіші вашого терміналу. Ці послідовності зберігаються в terminfo
базі даних. Наприклад, фрагмент оболонки нижче показує послідовності відходу, відповідні кожній функціональній клавіші.
$ 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~
Інший спосіб побачити послідовність виходу функціональної клавіші - натиснути Ctrl+ Vу термінальній програмі, яка не відновлює клавішу Ctrl+ V(наприклад, оболонку). Ctrl+ Vвставляє наступний символ (який буде символом втечі) буквально, і ви зможете побачити решту послідовності, яка складається із звичайних символів.
Оскільки послідовності можуть бути незручними для введення, слід вивчити зміну ключових прив’язок у вашій програмі або використовувати інший емулятор терміналу. Також зауважте, що у вас може бути обмеження часу: деякі програми розпізнають послідовності втечі лише тоді, коли вони надходять досить швидко, щоб вони могли дати значення лише Escклавіші.