Как отключить Alt-Arrow переключение виртуальных консолей?

37

Следующее происходит на разных Линузах:

Когда я нахожусь в виртуальной консоли, удерживайте Altи нажмите или , виртуальный цикл ttys. Это действительно раздражает, так как я использую fish-shell, который также использует эту комбинацию клавиш. Я мог бы переназначить короткие куски рыбы, но я не хочу. Вместо этого я хочу отключить функцию linux или переназначить ее.

Как я могу отключить или изменить tty-cycling-key-combo?

Макс Рид
источник
2
Ответ, который может вам помочь: superuser.com/questions/290115/…
Диди Кохен

Ответы:

14

Вы можете использовать loadkeysкоманду для переназначения ключей на консоли Linux. Следующие строки определяют привязки клавиш для переключения консолей (на клавиатуре ПК):

alt keycode 105 = Decr_Console
alt keycode 106 = Incr_Console

Загрузите свой собственный файл таблицы ключей, который переопределяет эти привязки с помощью escape-последовательности, которую распознает fish. Чтобы заставить ключ отправлять escape-последовательность, вам нужно привязать его к имени ключа формы и определить последовательность символов для .FNUMBERFNUMBER

alt keycode 105 = F105
alt keycode 106 = F106
string F105 = "\033\033[D"
string F105 = "\033\033[C"

Разные дистрибутивы (и иногда разные пакеты для поддержки консоли) хранят таблицу ключей загрузки системы в разных местах в /etc. Ищите файл с именем *.kmapили *.kmap.gzили *.mapили *.map.gzпод /etcили обратитесь по эксплуатации вашего дистрибутива. В некоторых дистрибутивах /etcвместо этого хранится имя карты ключей, а фактическая карта ключей хранится в другом месте; найдите параметр, связанный с таблицей ключей, в /etc/sysconfigдругом каталоге конфигурации.

Вы можете либо написать свою собственную таблицу ключей и использовать ее include "/path/to/foo.map"для ссылки на системную таблицу ключей, либо организовать загрузку своей собственной таблицы ключей, содержащей только те параметры, которые вы хотите изменить в процессе загрузки.

Жиль "ТАК - прекрати быть злым"
источник
Ты уверен насчет .kmapрасширения? Я не смог найти никаких файлов на Fedora 20, но с другой стороны, я нашел /lib/kbd/keymaps/legacy/i386/qwerty/us.map.gz.
Кристиан Чиупиту
@CristianCiupitu Мой плохой, я должен был упомянуть другие способы, которыми это может быть сделано. Я думаю, что в Fedora где-то есть настройка, /etc/sysconfigкоторая определяет имя файла раскладки клавиатуры для загрузки при запуске.
Жиль "ТАК - перестань быть злым"
Должен ли я получить мои настройки с dumpkeys , сохранить их, изменить и изменить /etc/sysconfig? Это сделает это постоянным?
Макс Райд
@Gilles, возможно, справочные страницы для systemd-vconsole-setup.service и [vconsole.conf] ( freedesktop.org/software/systemd/man/vconsole.conf.html ) могут пролить свет на это.
Кристиан Чиупиту
@MaxRied Я рекомендую хранить два отдельных, это будет легче поддерживать. Изменить ссылку в/etc/sysconfig на файл, содержащий includeдирективу к стандартной таблице ключей.
Жиль "ТАК - перестань быть злым"
44

Вот одноразовое исправление:

sudo sh -c 'dumpkeys |grep -v cr_Console |loadkeys'
Tobu
источник
Я бы предложил добавить это в качестве команды в «автозагрузке приложений».
Сэми Бенчериф
20

Я изменил ответ Тобу, чтобы изменить только абсолютно необходимое:

sudo sh -c 'dumpkeys -k|grep -v Incr_Console|grep -v Decr_Console|grep -v Last_Console|loadkeys'

NB: Как уже говорилось, это одноразовое исправление, которое, вероятно, исчезнет после перезагрузки.

Гунар Гесснер
источник
1
Два исправления: 1. Сбрасывать только привязки клавиш, чтобы избежать синтаксической ошибки в loadkeys; 2. Также избавьтесь от Last_Console (Alt + Tab): sudo sh -c 'dumpkeys | grep -v Incr_Console | grep -v Decr_Console | loadkeys' Большое спасибо за это!
Рувим Томас
В дополнение к моему предыдущему комментарию я обнаружил, что индикатор Caps Lock по-прежнему включался и выключался (хотя Caps Lock все еще был привязан к Control в моей системе). Чтобы это исправить, фильтрация строки, содержащей Caps_Lock, не работает, так как это единственное сопоставление для соответствующего ключевого кода, поэтому не перезаписывается при перезагрузке отфильтрованного списка сопоставлений. В конце самое простое решение состояло в том, чтобы сбросить «хорошо известную» раскладку клавиш, а затем явно загрузить ее.
Рувим Томас
14

У меня иногда возникала проблема с Ubuntu 18.04:

sudo kbd_mode -s

Сделал работу. (хотя бы временно)

Вы можете найти длинный отчет об ошибке здесь на панели запуска .

змеевик
источник
Как это работает? Я не решаюсь экспериментировать, потому что на странице руководства написано: «Предупреждение: изменение режима клавиатуры, кроме ASCII и Unicode, вероятно, сделает вашу клавиатуру непригодной для использования».
nshiff
1
Привет, я добавил ссылку.
Катушка
Благодарность! Это сработало. Я попытался нажать «Да, это влияет на меня» на bugs.launchpad.net/ubuntu/+source/console-setup/+bug/520546, но я продолжаю получать сообщение об ошибке тайм-аута. Есть идеи, как это исправить?
6005
Полагаю, это должно быть временно, или вы должны заполнить отчет об ошибках для самой системы сообщений об ошибках! : p
COil