Переназначение Caps Lock и Shift + Caps Lock в xkb


13

Я пытаюсь настроить xkb таким образом, чтобы Caps Lock отображался на клавишу Compose, а Shift + Caps Lock функционировал как традиционный Caps Lock. Я поместил следующее в новый файл с именем /usr/share/X11/xkb/symbols/gdwatson:

partial modifier keys
xkb_symbols "compose" {
    key <CAPS> {
        type[Group1] = "TWO_LEVEL",
        symbols[Group1] = [ Multi_key, Caps_Lock ]
    };
};

Затем я побежал setxkbmap -symbols 'pc+us+gdwatson(compose)', что успешно завершено. Caps Lock работает как Compose, но Shift + Caps Lock работает как Compose вместо Caps Lock. xkbcomp :0.0раскрывает следующее:

key <CAPS> {
    type= "TWO_LEVEL",
    symbols[Group1]= [       Multi_key,       Multi_key ]
};

Отображение символов второго уровня по какой-то причине дублирует первый, а не отдельное значение, которое я пытался дать. У кого-нибудь есть достаточно сильный xkb-fu, чтобы сказать мне, что я сделал неправильно или как это исправить?


1
Я могу помочь вам сделать это в Xmodmap, но не в xkb. Если вы хотите этого, ответьте положительно (не забудьте написать @mirabilosв своем ответе, чтобы я его заметил) в комментарии, тогда я удалю этот комментарий и напишу его как ответ (затем вы также должны удалить свой комментарий).
Мирабилось

1
На вашей первой строке, должно partial modifier keysбыть на самом деле partial modifier_keys? Без этого изменения setxkbmap -symbols 'pc+us+gdwatson(compose)'фактически завершается с ошибкой, но с изменением я получаю желаемый результат xkbcomp :0.0. Однако я получаю нежелательный побочный эффект, что одновременное нажатие на Capslock переводит меня в режим Capslock и режим составления клавиш.
Billyjmc

Ответы:


11

Это похоже на то, что вы ищете.

partial modifier_keys
xkb_symbols "compose" {
    key <CAPS> {
        type[Group1] = "TWO_LEVEL",
        symbols[Group1] = [ Multi_key, Caps_Lock ],
        actions[Group1] = [ NoAction(), LockMods(modifiers=Lock) ]
    };
};

Следующие ресурсы неоценимы при работе с XKB (я связался с зеркалами WayBack Machine на этих страницах для будущего):


Кроме того, если вы делаете первую строку default partial modifier_keys, то вам не нужно явно указывать setxkbmap -symbols 'pc+us+gdwatson(compose)', вы можете просто сделатьsetxkbmap -symbols 'pc+us+gdwatson'
billyjmc
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.