1

Попытка поменять местами клавиши Ctrl и Super на коробке с Ubuntu.

Удалось поменять местами Super и Ctrl, используя xmodmap. Теперь мне просто нужно изменить stty intr на Super_L + C

Я не могу за всю жизнь найти обозначение для супер ключа. (Например, ^ это управляющий ключ)

Кто-нибудь знает, что обозначение супер для STTY? я хотел бы иметь возможность печатать

stty intr Super_L + C

Например.

Или какой-то другой, еще лучший способ сделать Super+C прерыванием

1 ответ1

1

Для этого нет обозначений.

В общем, stty (и компоненты ОС, использующие эти настройки) не видят ключи как таковые - приложение терминала преобразует эти ключи в последовательность байтов, а слой tty видит только эти переведенные байты, а stty позволяет вам выбрать определенный байт что заставит tty-слой вызвать сигнал прерывания.

Другими словами, параметр intr представляет собой однобайтовое значение, соответствующее некоторому символу, который вы действительно можете ввести. (В ранних системах Unix intr был установлен на знак # .)

Поэтому, когда вы устанавливаете intr в ^C , это просто сокращение для байта 0x03 (сравните: буква C в ASCII равна 0x43). В основном Shift и Ctrl просто устанавливают и очищают некоторые биты «базового» байта. Однако для Super такого эквивалента нет.

В результате большинство терминалов просто игнорируют Super и отправляют базовое письмо без изменений; некоторые могут посылать "escape" последовательности ANSI (аналогично тем, которые вы получаете с помощью клавиш со стрелками или функциональных клавиш), но вы все равно не можете использовать те с stty, потому что для этого все еще требуется один байт. Вы не можете связать ключ прерывания с многобайтовой последовательностью; это было бы просто забрать первый байт.

Поэтому единственное, что вы можете сделать, это каким-то образом взломать само приложение терминала, чтобы оно отправляло байт 0x03, когда оно получает нажатие клавиши Super+C. Некоторые эмуляторы терминала поддерживают это с помощью общих "горячих клавиш", другим могут потребоваться исправления исходного кода.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .