LINUX.ORG.RU

История изменений

Исправление Zubok, (текущая версия) :

Можно вот так примерно. Но есть проблемка одна:

xkb_keymap {
    xkb_keycodes        { include "evdev+aliases(qwerty)" };
    xkb_geometry        { include "pc(pc105)" };
    xkb_compatibility   { include "complete" };
    xkb_types           { include "complete" };
    xkb_symbols {
        replace key <AE01> { 
                type = "EIGHT_LEVEL",
                actions[Group1] = [ NoAction(), NoAction(), NoAction(), NoAction(), LockGroup(group=1) ],
                actions[Group2] = [ NoAction(), NoAction(), NoAction(), NoAction(), LockGroup(group=1) ],
                actions[Group3] = [ NoAction(), NoAction(), NoAction(), NoAction(), LockGroup(group=1) ]
        };
        replace key <AE02> { 
                type = "EIGHT_LEVEL",
                actions[Group1] = [ NoAction(), NoAction(), NoAction(), NoAction(), LockGroup(group=2) ],
                actions[Group2] = [ NoAction(), NoAction(), NoAction(), NoAction(), LockGroup(group=2) ],
                actions[Group3] = [ NoAction(), NoAction(), NoAction(), NoAction(), LockGroup(group=2) ]
        };

        replace key <AE03> { 
                type = "EIGHT_LEVEL",
                actions[Group1] = [ NoAction(), NoAction(), NoAction(), NoAction(), LockGroup(group=3) ],
                actions[Group2] = [ NoAction(), NoAction(), NoAction(), NoAction(), LockGroup(group=3) ],
                actions[Group3] = [ NoAction(), NoAction(), NoAction(), NoAction(), LockGroup(group=3) ]
        };
        include "pc+us+ru:2+de:3+inet(evdev)+level5(caps_switch)+level3(ralt_switch)"
        };
};

Что тут сделано. CapsLock вешаем на level5. На Level3 не стал вешать, так как в базовой немецкой раскладке на третьем уровне на кнопках <1>, <2>, <3> есть символы какие-то, хоть и специфичные. На level3 повесил правый Alt.

Закидываем на сервер xkbcomp caps_1_2_3.xkb $DISPLAY, можно потом еще холостой setxkbmap без параметров. В общем-то, работает. Но теперь проблема. Я проверил у себя на каких-то приложениях Qt5, Emacs, GTK3 (Inkscape), GTK2 (Gimp), Blender. но вот Firefox перед переключением раскладки печатает 1, 2 или 3. У меня какое-то впечатление, что FF как-то по-своему обрабатывает кнопки.

Исходная версия Zubok, :

Можно вот так примерно. Но есть проблемка одна:

xkb_keymap {
    xkb_keycodes        { include "evdev+aliases(qwerty)" };
    xkb_geometry        { include "pc(pc105)" };
    xkb_compatibility   { include "complete" };
    xkb_types           { include "complete" };
    xkb_symbols {
        replace key <AE01> { 
                type = "EIGHT_LEVEL",
                actions[Group1] = [ NoAction(), NoAction(), NoAction(), NoAction(), LockGroup(group=1) ],
                actions[Group2] = [ NoAction(), NoAction(), NoAction(), NoAction(), LockGroup(group=1) ],
                actions[Group3] = [ NoAction(), NoAction(), NoAction(), NoAction(), LockGroup(group=1) ]
        };
        replace key <AE02> { 
                type = "EIGHT_LEVEL",
                actions[Group1] = [ NoAction(), NoAction(), NoAction(), NoAction(), LockGroup(group=2) ],
                actions[Group2] = [ NoAction(), NoAction(), NoAction(), NoAction(), LockGroup(group=2) ],
                actions[Group3] = [ NoAction(), NoAction(), NoAction(), NoAction(), LockGroup(group=2) ]
        };

        replace key <AE03> { 
                type = "EIGHT_LEVEL",
                actions[Group1] = [ NoAction(), NoAction(), NoAction(), NoAction(), LockGroup(group=3) ],
                actions[Group2] = [ NoAction(), NoAction(), NoAction(), NoAction(), LockGroup(group=3) ],
                actions[Group3] = [ NoAction(), NoAction(), NoAction(), NoAction(), LockGroup(group=3) ]
        };
        include "pc+us+ru:2+de:3+inet(evdev)+level5(caps_switch)+level3(ralt_switch)"
        };
};

Что тут сделано. CapsLock вешаем на level5. На Level3 не стал вешать, так как в базовой немецкой раскладке на третьем уровне на кнопках <1>, <2>, <3> есть символы какие-то, хоть и специфичные. На level3 повесил правый Alt.

Закидываем на сервер xkbcomp caps_1_2_3.xkb $DISPLAY, можно потом еще холостой setxkbmap без параметров. В общем-то, работает. Но теперь проблема. Я проверил у себя на каких-то приложениях Qt5, Emacs, GTK3 (Inkscape), GTK2 (Gimp), Blender. но вот Firefox перед переключением 2раскладки печатает 1, 2 или 3. У меня какое-то впечатление, что FF как-то по-своему обрабатывает кнопки.