Соляризация консоли фреймбуфера Linux - PullRequest
0 голосов
/ 10 февраля 2019

Я пытаюсь соляризовать консоль Linux.Я отследил соответствующий код до drivers/tty/vt/vt.c и изменил определения цвета на соляризованный:

 unsigned char default_red[] = {
-       0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa,
-       0x55, 0xff, 0x55, 0xff, 0x55, 0xff, 0x55, 0xff
+       0x07, 0xdc, 0x85, 0xb5, 0x26, 0xd3, 0x2a, 0xee,
+       0x00, 0xcb, 0x58, 0x65, 0x83, 0x6c, 0x93, 0xfd
 };

 unsigned char default_grn[] = {
-       0x00, 0x00, 0xaa, 0x55, 0x00, 0x00, 0xaa, 0xaa,
-       0x55, 0x55, 0xff, 0xff, 0x55, 0x55, 0xff, 0xff
+       0x36, 0x32, 0x99, 0x89, 0x8b, 0x36, 0xa1, 0xe8,
+       0x2b, 0x4b, 0x6e, 0x7b, 0x94, 0x71, 0xa1, 0xf6
 };

 unsigned char default_blu[] = {
-       0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa,
-       0x55, 0x55, 0x55, 0x55, 0xff, 0xff, 0xff, 0xff
+       0x42, 0x2f, 0x00, 0x00, 0xd2, 0x82, 0x98, 0xd5,
+       0x36, 0x16, 0x75, 0x83, 0x96, 0xc4, 0xa1, 0xe3
 };

Можно также загрузить ядро ​​с параметрами vm.default{red,grn,blu}, установленными на эти значения.

В любом случае, консоль теперь выглядит как st с соляризованными цветами , но без патча no-bold-colors - все немного серовато.

В vt.c:1363 есть это:

const unsigned char color_table[] = { 0, 4, 2, 6, 1, 5, 3, 7,
                                       8,12,10,14, 9,13,11,15 };

Поскольку патч no-bold-colors отключает жирные цвета, не добавляя к ним 8, а вторая строкаcolor_table совпадает с первым +8, я попробовал это:

const unsigned char color_table[] = { 0, 4, 2, 6, 1, 5, 3, 7,
                                       0, 4, 2, 6, 1, 5, 3, 7 };

Это выглядит намного лучше, но все же не так, как должно.Я экспортировал color_table в качестве параметра модуля для быстрого тестирования других конфигураций.Но я действительно не хочу проверять 16!комбинации ...

Что на самом деле делает color_table?Я не понимаю код, где он используется (например, строки 1760, 4292 в vt.c).Разве это не просто неуклюжая таблица сопоставления?

Есть ли у вас какие-либо советы о том, как решить эту проблему?

Спасибо!

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

...