Как читать привязки клавиш readline

Насколько мне известно, извлечение файла конфигурации .configиз ядра возможно только в том случае, если вы скомпилировали его с параметром конфигурации CONFIG_IKCONFIG(, доступным в меню конфигурации как записьGeneral setup > Kernel.config support). Вот документация по этому параметру конфигурации:

CONFIG_IKCONFIG:                                                                                                                                                                      

This option enables the complete Linux kernel ".config" file
contents to be saved in the kernel. It provides documentation
of which kernel options are used in a running kernel or in an
on-disk kernel.  This information can be extracted from the kernel
image file with the script scripts/extract-ikconfig and used as
input to rebuild the current kernel or to build another kernel.
It can also be extracted from a running kernel by reading
/proc/config.gz if enabled (below).

Последнее предложение относится к дополнительной опции конфигурации CONFIG_IKCONFIG_PROC, которая дает вам доступ к конфигурации работающего ядра через файл в файловой системе procпсевдо -.

Если ваше ядро ​​не было скомпилировано с CONFIG_IKCONFIG, я не думаю, что вы сможете легко восстановить его конфигурацию. В противном случае это так же просто, как

gunzip /proc/config.gz >.config

, если было выбрано CONFIG_IKCONFIG_PROCи вы в настоящее время используете ядро ​​​​/boot/vmlinuz-linux, или

scripts/extract-ikconfig /boot/vmlinuz-linux

Сценарий extract-ikconfigдоступен вместе с исходными кодами ядра в папке scripts.

2
09.08.2019, 18:18
1 ответ

Хотя readline принимает несколько входных форматов для указания последовательностей клавиш, как описано в readline (3 )и bash (1 ), выходной формат проще (на основе моих наблюдений):

  • \eEscape (последовательно нажимается перед следующим символом)
  • \C-при нажатии Control (одновременно со следующим символом)
  • \\— обратная косая черта
  • \"— двойная кавычка
  • \nnn(где nnn — 3 цифры )— один байт в восьмеричной системе
  • все остальное — это сам персонаж

Вместо последовательного нажатия \eaможно также удерживать то, что readline (3 )вызывает клавишу Meta, и набрать a. И аналогично для других букв. Поскольку большинство современных клавиатур не имеют мета-клавиши, это можно считать в основном историческим названием. На клавиатуре ПК вместо нее используется клавиша Alt.

Более длинные управляющие последовательности, такие как \eOQили \e[15~, не предназначены для ввода вручную, а создаются с помощью специальных клавиш на клавиатуре. Упомянутые примеры - это F2 и F5 на моей машине в данный момент.

Последовательность \e[200~, показанная в вопросе, не создается напрямую какой-либо функциональной клавишей. Эмуляторы терминала могут вставлять его, когда пользователь вставляет текст, а не набирает его. (Эта функция управляется переменной readlineenable-bracketed-paste)

Поскольку (особенно в 1970-х и 1980-х )разные типы клавиатур порождали (d )разные escape-последовательности, readline связывает многие команды с несколькими последовательностями. Не ожидайте, что все эти последовательности воспроизводятся вашей клавиатурой.

Чтобы увидеть, что выдает ваша клавиатура и эмулятор терминала, вы можете использовать showkeys -a. Обратите внимание, что некоторые клавиши перехватываются оконным менеджером или эмулятором терминала. Так что они никогда не попадут в showkeysили readline.

1
27.01.2020, 22:08

Теги

Похожие вопросы