Обозначение Super Key для STTY
Попытка поменять местами клавиши Ctrl и Super на коробке с Ubuntu.
Удалось поменять местами Super и Ctrl, используя xmodmap. Теперь мне просто нужно изменить stty intr на Super_L + C
Я не могу за всю жизнь найти обозначение для супер ключа. (Например, ^ это управляющий ключ)
Кто-нибудь знает, что обозначение супер для STTY? я хотел бы иметь возможность печатать
stty intr Super_L + C
Например.
Или другой, еще лучший способ сделать Super+C прерыванием
1 ответ
Для этого нет обозначений.
В общем, stty (и компоненты ОС, использующие эти настройки) не видят ключи как таковые - приложение терминала преобразует эти ключи в последовательность байтов, а слой tty видит только эти переведенные байты, а stty позволяет вам выбрать определенный байт что заставит tty-слой вызвать сигнал прерывания.
Другими словами, параметр intr представляет собой однобайтовое значение, соответствующее некоторому символу, который вы действительно можете ввести. (В ранних системах Unix intr был установлен на #
знак.)
Поэтому, когда вы устанавливаете intr ^C
Это просто сокращенная запись байта 0x03 (сравните: буква C
0x43 в ASCII). В основном Shift и Ctrl просто устанавливают и очищают некоторые биты "базового" байта. Однако для Super такого эквивалента нет.
В результате большинство терминалов просто игнорируют Super и отправляют базовое письмо без изменений; некоторые могут посылать "escape" последовательности ANSI (аналогично тем, которые вы получаете с помощью клавиш со стрелками или функциональных клавиш), но вы все равно не можете использовать те, что с stty, потому что для этого по-прежнему требуется один байт. Вы не можете привязать ключ прерывания к многобайтовой последовательности; это было бы просто забрать первый байт.
Поэтому единственное, что вы можете сделать, это каким-то образом взломать само приложение терминала, чтобы оно отправляло байт 0x03, когда оно получает нажатие клавиши Super+C. Некоторые эмуляторы терминала поддерживают это с помощью общих "горячих клавиш", другие могут нуждаться в реальных исправлениях исходного кода.