Изменение клавиши «Meta» для библиотеки readline

Изменение клавиши «Meta» для библиотеки readline

Я заинтересован в перепривязке metaключа дляридлайнбиблиотеку (редактирование командной строки, скажем, в bash) с клавиши alt на какую-либо другую произвольную клавишу (например, клавишу Caps Lock).

Для контекста: я уже использую оконный менеджер XMonad и привязал клавишу Alt к ряду пользовательских функций, которые имеют приоритет над сочетаниями клавиш терминала.

Я пробовал использовать xmodmap, чтобы переназначить клавишу на Escape, но это не позволяет удерживать клавишу и нажимать несколько клавиш движения подряд.

Можно ли заставить readline обрабатывать другой Modмодификатор как мета-ключ?

Спасибо!

решение1

Readline обнаруживает метакомбинацию клавиш, проверяя, установлен ли определенный бит в символе, который он получает от терминала, или, из-за того, как это работает для метакомбинации, что символ попадает в определенный диапазон значений в верхней части значений, хранящихся в 8-битном байте. Смотритеchardefs.hдля задействованных макросов утилит.

Вы можете настроить его чувство мета-ности, изменив библиотеку для обнаружения мета-символов каким-либо другим способом, переопределив эти макросы, а затем заново связав вашу оболочку с этой измененной readline. Менее инвазивным подходом было бы настроить ваш терминал так, чтобы он понимал другую клавишу как установку мета-бита, или использовать какой-то менеджер ввода на системном уровне, который мог бы сделать то же самое.

решение2

Библиотека readline не знает абсолютно ничего о модификаторе, используемом в вашем терминале для работы в качестве его понятия мета-ключа. Так что нет: то, о чем вы просите, невозможно.

Связанный контент