В чем разница между ВОСЕМЬМ _УРОВНЕМ _АЛФАВИТНЫМ и ВОСЕМЬМ _УРОВНЕМ в файлах символов xkb?

Я не знаю, как systemd (, особенно /usr/lib/systemd/systemd-logind), участвует в процессе выхода из ОС.

Ниже приведены мои частичные ответы:

  1. The loginпроцесс wait()в процессе оболочки входа в систему , и когда оболочка входа в систему выйдет, loginполучит SIGCHLDи проснется, чтобы возобновить свое выполнение, что также должно завершиться.

  2. Кажется, что программа запроса выхода , такая как lxsession-logout, отправляет SIGTERMпроцессу lxsession(Я сказал «кажется», потому что не совсем понимаю исходный код ). Я не знаю, как lxsessionотзывается на SIGTERMи почему его потомки тоже умирают, так как не могу найти его диспозицию . Я не знаю, почему родитель lightdm,27302lxsessionтоже умирает, и думаю, родитель lightdm,27302может wait()в lxsessionи умереть, как только проснется .

  3. Я не знаю, что происходит, когда я выхожу из SSH. Я предполагаю, что это похоже на вход в CLI (, случай 1 ), sshd,22979может ожидать bash,22980и умирать. но я действительно не знаю, почему существует так много sshdпроцессов.

0
12.03.2021, 12:55
1 ответ

После некоторых тестов и рассмотрения определения этих уровней разница заключается в том, что тип ALPHABETICфиксируется на втором уровне с помощью CAPS LOCK , в то время как не ALPHABETICвторой уровень достигается только нажимая SHIFT .

См. следующий раздел /usr/share/X11/xkb/types/level5. Только в ALPHABETICможно найти map[Lock] = Level2;, map[Lock+LevelFive] = Level6;и так далее...

    type "EIGHT_LEVEL" {
    modifiers = Shift+LevelThree+LevelFive;
    map[None] = Level1;
    map[Shift] = Level2;
    map[LevelThree] = Level3;
    map[Shift+LevelThree] = Level4;
    map[LevelFive] = Level5;
    map[Shift+LevelFive] = Level6;
    map[LevelThree+LevelFive] = Level7;
    map[Shift+LevelThree+LevelFive] = Level8;
    level_name[Level1] = "Base";
    level_name[Level2] = "Shift";
    level_name[Level3] = "Alt Base";
    level_name[Level4] = "Shift Alt";
    level_name[Level5] = "X";
    level_name[Level6] = "X Shift";
    level_name[Level7] = "X Alt Base";
    level_name[Level8] = "X Shift Alt";
    };

    type "EIGHT_LEVEL_ALPHABETIC" {
    modifiers = Shift+Lock+LevelThree+LevelFive;
    map[None] = Level1;
    map[Shift] = Level2;
    map[Lock]  = Level2;
    map[LevelThree] = Level3;
    map[Shift+LevelThree] = Level4;
    map[Lock+LevelThree] =  Level4;
    map[Lock+Shift+LevelThree] = Level3;

    map[LevelFive] = Level5;
    map[Shift+LevelFive] = Level6;
    map[Lock+LevelFive]  = Level6;
    map[LevelThree+LevelFive] = Level7;
    map[Shift+LevelThree+LevelFive] = Level8;
    map[Lock+LevelThree+LevelFive] =  Level8;
    map[Lock+Shift+LevelThree+LevelFive] = Level7;

    level_name[Level1] = "Base";
    level_name[Level2] = "Shift";
    level_name[Level3] = "Alt Base";
    level_name[Level4] = "Shift Alt";
    level_name[Level5] = "X";
    level_name[Level6] = "X Shift";
    level_name[Level7] = "X Alt Base";
    level_name[Level8] = "X Shift Alt";
    };
1
22.03.2021, 18:39

Теги

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