Как установить Level3_Shift на Caps Lock, а Compose на Caps Lock+Ctrl в XFCE?

Как установить Level3_Shift на Caps Lock, а Compose на Caps Lock+Ctrl в XFCE?

Недавно я перешел с SUSE, который использует KDE в качестве среды рабочего стола по умолчанию. В KDE можно архивировать такую ​​настройку с помощью параметров GUI, но не в XFCE.

Я попробовал настроить ~/.Xmodmapфайл следующим образом:

clear Lock
clear Control
clear Mod2 
clear Mod5 
keycode  77 = Caps_Lock Num_Lock Caps_Lock Num_Lock
keycode  66 = ISO_Level3_Shift ISO_Level3_Shift ISO_Level3_Shift ISO_Level3_Shift
keycode  37 = Control_L NoSymbol Control_L NoSymbol Multi_key Multi_key 
add Control = Control_L Control_R
add Lock = Caps_Lock
add Mod2 = Num_Lock
add Mod5 = ISO_Level3_Shift

Что происходит:

  • Caps Lockфункциональность переходит кNum Lock
  • Num Lockфункциональность переходит в Shift+Num Lock

Чего я ожидал, но не произошло:

  • Caps Lockкнопка должна быть ISO_Level3_Shift(она есть, согласно xev, но она имеет функциональность обычной Shiftпочему-то)
  • Нажатие Caps Lock+ Влево Ctrlдолжно выполнять функцию клавиши «Написать» (не работает).

Что я делаю не так? Xubuntu 18.04, новая установка

решение1

Назначьте клавишу Shift третьего уровня <CAPS>(Caps Lock) и используйте третий уровень левой клавиши Control в качестве клавиши создания сообщения ( Multi_key):

setxkbmap -option compose:lctrl-altgr \
    -option lv3:caps_switch \
    -layout "us(intl)"

Для клавиши NumLock вы можете создать файл символов в качестве оболочки для любой используемой вами раскладки (я собираюсь использовать us(intl)). Создайте файл символов с именем custom:

xkb_symbols "basic" {

    // The layout that you want to use.
    include "us(intl)"

    key <NMLK> { [
        Caps_Lock, Num_Lock, Caps_Lock, Num_Lock
    ] };

};

Сохраните customфайл в дереве каталогов, которое отражает структуру /usr/share/X11/xkb. Таким образом, если ваш каталог хранится в /home/<user>/my-xkb/, customфайл должен быть в /home/<user>/my-xkb/symbols/custom.

(Видетьздесь(для получения общих инструкций по созданию и использованию пользовательских файлов Xkb.)

Вместо того, чтобы просто использовать , setxkbmapвам придется использовать -printопцию для передачи выходных данных в xkbcomp. xkbcompесть -Iопция, которую вы будете использовать, чтобы указать путь к вашему пользовательскому дереву каталогов Xkb.

setxkbmap -option compose:lctrl-altgr \
    -option lv3:caps_switch \
    -layout "custom" \
    -print |
        xkbcomp -I"/home/<user>/my-xkb" \
            - "$DISPLAY"

Связанный контент