как поменять местами цвета консоли, чтобы на белом экране были черные буквы?

Это вообще не связано ни с каким загрузчиком.

Когда драйвер использует общую инфраструктуру загрузки микропрограммы ядра для загрузки файла микропрограммы, ядро ​​может либо загрузить файл непосредственно из стандартного /lib/firmwareдерева каталогов, либо может дополнительно запустить процесс пространства пользователя -для обработки загрузка прошивки.

Этот процесс пространства пользователя -раньше был частью подсистемы hotplug, затем частью udev, но я думаю, что в настоящее время он устарел, а версия ядра -является основным средством загрузки встроенного ПО. для любых водителей.

Если вся операция загрузки прошивки занимает больше времени, чем указано в /sys/class/firmware/timeout, операция будет считаться неудачной. В результате драйвер, запросивший прошивку, скорее всего, тоже выйдет из строя.

Дополнительные сведения можно найти в каталоге Documentation/firmware _class пакета исходного кода ядра Linux.

0
13.05.2020, 08:05
1 ответ

Обратное видео — это весело.

Модель terminfo упрощена и неверна. Это не соответствует тому, как на самом деле работают эмуляторы терминалов и настоящие терминалы. С терминовой информацией здесь далеко не уедешь.

Модель реальных терминалов на первый взгляд довольно проста:

  • Существует текущий набор цветов и атрибутов, один из которых является инверсным атрибутом видео. Инверсное видео заставляет пиксели в символьном глифе инвертироваться :: на пикселе — это цвет фона, а на пикселе — цвет переднего плана.
  • Существует настройка инверсного видео для всего экрана, которая инвертирует значение атрибута инверсного видео во всех ячейках. Установите его, и все инвертированные символьные ячейки будут отображаться не инвертированными -и наоборот.

Для монохромного видеотерминала это просто аппаратная логика исключающего ИЛИ.

Обратный атрибут видео — это, конечно, SGR 7 и SGR 27, и почти никто -не делал ничего, кроме ECMA -48 в течение десятилетий. Настройкой инвертированного видео для всего экрана управляют управляющие последовательности, которые исходят от DEC VT и называются DECSCNM (DEC Screen Mode ). Это частный режим поставщика -, для которого ECMA -48 предоставляет механизм. Последовательности - это просто ECMA -48 SM и RM частного режима DEC #5.

Если вы действительно хотите инвертировать весь экран, а не только следующую строку (с )вывода, вам подойдет DECSCNM. Многие эмуляторы терминала распознают и реагируют на DECSCNM, включая Unicode rxvt, эмуляторы терминала на основе библиотеки VTE, Konsole, kitty, KiTTY, PuTTY, XTerm, Linux, встроенный -в эмуляторе терминала, и мой console-terminal-emulatorв наборе инструментов nosh..

Вы можете распечатать управляющие последовательности DECSCNM с помощью printf. Для него нет возможности terminfo. Это выходит за рамки ограниченной модели terminfo.Для тех, кто не хочет запоминать управляющие последовательности, мой портативный компьютер settermпредоставляет удобный и удобный способ сделать это :

% setterm -7 --invertscreen on
% setterm -7 --invertscreen off
.

Здесь все становится неприятным.

В действительности существует два набора цветов и атрибутов. Есть набор, используемый для рисования печатных символов, и есть набор, используемый для стирания символов и рисования пустых строк и столбцов, которые появляются при прокрутке. Параметр с именем режим стирания цвета(DECECM )определяет, насколько эти два набора не пересекаются. На реальных последних моделях DEC VT по умолчанию они были в основном одинаковыми, цвета стирания / прокрутки соответствовали цветам печати. Однако слишком многие эмуляторы терминала инициализируют свои настройки DECECM в соответствии со старым соглашением, согласно которому цвет стирания/прокрутки отличается от цвета печати и всегда равен SGR 39/SGR 49.

Исходное состояние можно выбрать с помощью флажка в PuTTY, где оно называется стиранием цвета фона. Модель terminfo тоже называет это так, но в обратном порядке. На терминалах, которые изначально имеют его, это настраиваемый режим , а не фиксированный аспект терминала. Он переключается хостом, испускающим управляющие последовательности. Однако terminfo не предоставляет возможности для его установки, а только флаг с фиксированным значением -, указывающий, включен он или выключен, что может не соответствовать текущему состоянию терминала. Опять же, для тех, кто не хочет запоминать управляющие последовательности:

% setterm -7 --bce on
% setterm -7 --bce off

Но DECECM , строго говоря, управляет только цветом (фона ). Строго говоря, он не связывает атрибуты . Ячейкам со стертыми/прокручиваемыми символами не нужно присваивать атрибут обратного видео, который назначается для печатных символов (, или любые другие атрибуты, такие как подчеркивание ). Некоторые терминалы (, такие как мой и ядро ​​FreeBSD, построенное -в эмуляторе терминала ), работают, а многие нет.

Более того,это применимо только тогда, когда стирание/прокрутка происходит в первую очередь. Не стирание/прокрутка, но и не печать до полной длины строки также оставит часть другого цвета/атрибута.

Вот почему на многих таких эмуляторах терминала остаток строки виден не в обратном видео. (Если кто-то использует мой эмулятор терминала или FreeBSD KVT, вся строка отображается как перевернутое видео при ее прокрутке или стирании с помощью EL. См. результат printf '\e[7m\e[117hwibble\e[K\n'.)

Если этого было недостаточно, есть куча странного поведения:

  • PuTTY и его производные (, такие как MobaXTerm со сбивающим с толку названием ), связывают цвет стирания с цветом фона, когда включен DECECM, но не распространяют обратное видео аналогичным образом. Наслаждайтесь (в последней строке экрана )эффектом, когда часть строки является обратным видео, а часть нет, но цвета сохраняются:
    tput setaf 4 ; tput setab 3 ; tput rev ; echo wibble
    Терминал Windows, похоже, делает это тоже.
  • Эмулятор терминала Interix может включать обратное видео с помощью SGR 7, но не распознает SGR 27 для его отключения.
  • Некоторые эмуляторы терминалов имеют сумасшедшие Я -знаю -лучше -, чем -что -вы -явно -запрашивали идеи об обратном видео, такие как Unicode rxvt, который переключается на совершенно другую цветовую пару , если цвета фона и переднего плана установлены одинаковыми, а затем включается обратное видео. Наслаждайтесь отсутствием синего с:
    tput setaf 4 ; tput setab 4 ; tput rev ; echo wibble

Можно было бы отказаться от обратного видео и стирания/прокрутки и просто использовать обратное видео на весь экран. Но веселье не прекращается:

  • PuTTY интерпретирует быстрое включение и выключение DECSNM как попытку подать сигнал.
  • Несколько эмуляторов терминала меняют местами светлое и темное. Запросите темный фон с низким значением DECSCNM, и вы получите светлый фон, и наоборот.
  • Терминал Windows изменяет несколько элементов палитры в ответ на DECSCNM, в частности индексированный цвет. #232. XTerm также изменяет палитру.

Итак, да, это полноэкранное приложение, которое печатает полные -ширины реверсивные видеополосы, либо должно выполнять некоторую работу с последовательностями DECECM и EL (, которые сложно использовать с отложенным переносом, чего я не делал. t даже не упомянул )… или просто печатает много пробелов, явно меняет местами цвета переднего плана и фона, а сторона -полностью переворачивает видео.

Дополнительная литература

4
28.04.2021, 23:14

Теги

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