Прив'язки до клавіш у терміналі

Як у використовуються прив'язки клавіш

Вступ
Для перетворення комбінацій клавіш на керівні символи, які надсилаються до командної оболонки або до інтерактивних програм (типово, програм, які використовують альтернативний буфер системи, зокрема vim, less, screen), які запущено у командній оболонці, використовує файли *.keytab.
Користувачі можуть налаштовувати параметри прив'язки клавіш у за допомогою редактора прив'язок клавіш. Можна налаштувати комбінацію клавіш для надсилання певної керівної послідовності символів до термінала.
Відкрити редактор прив'язок клавіатури можна за допомогою пункту меню Параметри Редагувати поточний профіль. Далі, слід перейти на вкладку Клавіатура. Там буде показано схеми прив'язки клавіш, які типово постачаються разом із .

Комбінації клавіш і режими
Комбінації клавіш записуються у такому форматі:

Клавіша (+|-) Режими

Приклади:

Up+Shift+AppScreen
Down+Shift-AppScreen
Space+Ctrl

Назви клавіш визначаються у файлів заголовків qnamespace.h. Достатньо лише вилучити префікс Qt::Key_. Список назв клавіш також наведено у документації до Qt::Key бібліотеки .
Додавання + перед назвою режиму означає, що цей режим встановлено; для клавіші-модифікатора це означає, що клавішу натиснуто, а для усіх інших режимів це означає, що режиму увімкнено (тобто активовано). Наприклад, +Ctrl означає, що комбінація клавіш працюватиме, лише якщо натиснуто клавішу .
Додавання - перед назвою режиму означає, що цей режим скинуто; загалом, це протилежність до додавання + перед назвою режиму. Отже, для клавіші-модифікатора це означає, що клавішу не натиснуто, а для усіх інших режимів це означає, що відповідний режим є неактивним. Наприклад, -Ctrl означає, що комбінація клавіш працюватиме, лише якщо клавішу не натиснуто.
Якщо у записі комбінації клавіш не вказано режим, її стан ігнорується.
Нижче наведено список підтримуваних режимів прив'язки клавіш:
Alt, Ctrl, Shift 	 У комбінації клавіш можна використовувати один або декілька цих режимів. Якщо встановлено будь-який з цих режимів, у комбінації клавіш використовуватиметься відповідна клавіша-модифікатор. Якщо ж режим скинуто, клавіша у комбінації не використовуватиметься.
AnyModifier 	 Якщо цей режим встановлено, комбінація клавіш використовуватиме будь-яку клавішу-модифікатор (будь-яку з попередніх трьох клавіш-модифікаторів); і навпаки, якщо режим скинуто.
Ansi 	 Якщо встановлено цей режим, надсилатиме керівні послідовності ANSI.
Якщо цей режим скинуто, надсилатиме керівні послідовності VT52.
AppScreen 	 Якщо встановлено цей режим, комбінація клавіш працюватиме лише у інтерактивних програмах, які використовують альтернативний буфер.
Якщо скинуто цей режим, комбінація клавіш працюватиме у терміналі, лише якщо у ньому використано звичайний буфер.
У використовується два буфери даних:
Звичайний буфер (типовий): надає вам змогу гортати журнал для перегляду попередніх рядків виведення; це типовий буфер, яким ви зазвичай користуєтеся для виконання команд тощо.
Альтернативний буфер: термінал перемикається на цей буфер, коли ви запускаєте інтерактивну програму (наприклад, less, vim, screen, tmux тощо)
KeyPad 	 Якщо встановлено цей режим, комбінація клавіш використовує клавішу із цифрової панелі (бічної панелі клавіатури). Цей режим корисний для розрізнення клавіш на основному блоці клавіатури і клавіш на цифровій панелі. Наприклад, якщо Num Lock увімкнено, ви можете налаштувати дві окремі комбінації клавіш: одну з використанням клавіші із написом 1 на основному блоці клавіатури (зазвичай, цю клавішу розташовано під клавішею F1) та іншу з використанням клавіші із написом 1 на цифровому блоці. Те саме стосується випадку, коли Num Lock вимкнено, і клавіш End, Home, клавіш із стрілками на цифровому блоці.
AppCursorKeys 	 Цей режим реалізує режим клавіш курсора (DECCKM) VT100. Він керує керівними послідовностями, які надсилають клавіші керування курсором (↑, ↓, →, ←), залежно від того, встановлено чи скинуто цей режим.
Типово, працює як XTerm у обробці клавіш Home і End як клавіш керування курсором із урахуванням DECCKM
AppKeyPad 	 Якщо встановлено цей режим, комбінація клавіш працюватиме, лише якщо цифрова панель перебуває у режимі застосування (DECKPAM).
Якщо скинуто цей режим, комбінація клавіш працюватиме, лише якщо цифрова панель перебуває у цифровому режимі (DECKPNM).
NewLine 	 Якщо встановлено цей режим, клавіша Return (Enter) на основній клавіатурі надсилатиме і символ повернення каретки, «\r», і символ нового рядка, «\n».
Якщо цей режим скинуто, клавіша Return надсилатиме лише символ повернення каретки «\r»
Те саме стосується клавіші на цифровій панелі
Цей режим імітує LNM — режим заповнення рядка/нового рядка
Зауважте, що комбінації клавіш і режимів (встановлення і скидання) не повинні повторюватися. Наприклад, розгляньмо такі два правила:
A+Shift : A
a : a
не прийме правило із малою літерою a. Щоб правило працювало, слід додати до нього -Shift.

Поле виведення
У полі виведення ви можете додати керівні послідовності або символи, які має надсилати до термінала, коли натиснуто відповідну комбінацію клавіш.
Ви також можете скористатися будь-яким із вказаних нижче ключових слів, кожне з яких має особливе значення у :
scrollUpLine : гортати вгору на один рядок у буфері журналу командної оболонки
scrollUpPage : гортати вгору на одну сторінку у буфері журналу командної оболонки
scrollDownLine : гортати вниз на один рядок у буфері журналу командної оболонки
scrollDownPage : гортати вниз на одну сторінку у буфері журналу командної оболонки
scrollUpToTop : гортати вгору до початку буфера журналу командної оболонки
scrollDownToBottom : гортати вниз до кінця буфера журналу командної оболонки
Ви також можете користуватися рядками у синтаксисі рядків C. Зокрема, можна скористатися такими керівними послідовностями:
\E : Escape
\\ : Зворотна риска
\" : Подвійні лапки
\t : Tab
\r : повернення каретки
\n : новий рядок
\b : витирання символу ліворуч
\xHH : де HH — дві шістнадцяткові цифри
Цим можна скористатися для надсилання керівних символів у ASCII, зокрема \x00 — NUL-символу

Інші системні ресурси
Прив'язки клавіш у терміналі можуть стосуватися інших системних ресурсів:
Зверніться до бази даних terminfo або termcap, щоб дізнатися більше про очікувані керівні послідовності і символи, які можна надсилати за допомогою комбінацій клавіш.
Ймовірно, у вашій системі можуть бути інші бази даних клавіш, які також можна синхронізувати (наприклад, /etc/inputrc та readline для оболонки BASH), оскільки вони впливають на дії (взаємодії), пов'язані із комбінацією клавіш.

Інформація для подальшого ознайомлення
Щоб дізнатися більше про керівні послідовності та символи, ознайомтеся із такими ресурсами документації:
Підручник користувача VT100
Підручник користувача VT102
Повна і необхідна документація щодо керівних послідовностей XTerm