Зновлення 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у своїй відповіді, щоб я це помітив) у коментарі, тоді я видалю цей коментар і напишу його як відповідь (ви також повинні видалити свою відповідь на коментар).
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.