Вы не можете.
Терминалы отправляют символы, а не ключи. (См. Как работает ввод с клавиатуры и вывод текста? для более подробной информации. )Но не все клавиши имеют соответствующий символ. Когда вы нажимаете клавишу или аккорд, у которого нет соответствующего символа, терминал отправляет последовательность символов, представляющую его, или, в некоторых случаях, непечатаемый -управляющий символ). Эти последовательности всегда начинаются с определенного символа, который называется escape-символом .Этот символ также является тем, что посылает Ctrl + [ .
Таким образом, если бы вы могли связать^[
(Ctrl + [ ), это сломало бы все клавиши, которые отправляют управляющие последовательности. Например, Up отправляет либо три символа (^[
, [
, A
), либо три символа (^[
, O
, A
), в зависимости от терминала. Если бы вы могли переназначить ^[
, то клавиша Вверх выполнила бы действие ^[
, а затем вставила бы [
и A
.
Alt +charотправляет escape-символ, за которым следует char . Таким образом, если вы переназначаете M-[
, вы действительно перепривязываете две -последовательности символов (^[
, [
), что может привести к поломке некоторых курсорных и функциональных клавиш.
Nano технически допускает повторную привязку^[
(начиная с версии 2.5.3 ), но это не имеет никакого эффекта, потому что когда он читает ^[
, он классифицирует это как начало управляющей последовательности (Я упрощаю бит )и никогда не ищет привязку для ^[
. Nano явно запрещает повторное связывание M-[
.
Есть способы обойти это на некоторых терминалах , но лишь немногие редакторы пользуются ими. Nano — относительно простой редактор, ориентированный в первую очередь на пользователей, которые не используют терминалы, где такие способы существуют, и не поддерживает эту функцию.
Лучше поздно, чем никогда :Немного погуглив, я наткнулся на эту ветку , где какой-то умный парень опубликовал не столь очевидное решение:
dbus-send --print-reply --session --dest=org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Set string:org.mpris.MediaPlayer2.Player string:Volume variant:double:1.0