Como definir Level3_Shift para Caps Lock E Compose para Caps Lock + Ctrl no XFCE?

Como definir Level3_Shift para Caps Lock E Compose para Caps Lock + Ctrl no XFCE?

Mudei recentemente do SUSE, que usa o KDE como ambiente de área de trabalho padrão. No KDE, é possível arquivar tal configuração com opções de GUI, mas não no XFCE.

Eu tentei configurar o ~/.Xmodmaparquivo da seguinte maneira:

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

O que acontece:

  • Caps Lockfuncionalidade vai paraNum Lock
  • Num Lockfuncionalidade vai para Shift+Num Lock

O que eu esperava que acontecesse, mas não aconteceu:

  • Caps Lockbotão deveria ser ISO_Level3_Shift(é, de acordo com xev, mas tem a funcionalidade usual Shiftde alguma forma)
  • Pressionar Caps Lock+ Esquerda Ctrldeve funcionar como tecla Compor (não funciona).

O que estou fazendo de errado? Xubuntu 18.04, nova instalação

Responder1

Mapeie a mudança do terceiro nível para <CAPS>(caps lock) e use o terceiro nível do controle esquerdo como tecla de composição ( Multi_key):

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

Para a tecla numlock, você pode criar um arquivo de símbolos como wrapper para qualquer layout que estiver usando (vou usar us(intl)). Faça um arquivo de símbolos chamado custom:

xkb_symbols "basic" {

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

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

};

Salve o customarquivo em uma árvore de diretórios que espelhe a estrutura do /usr/share/X11/xkb. Portanto, se o seu diretório estiver armazenado em /home/<user>/my-xkb/, o customarquivo deverá estar em /home/<user>/my-xkb/symbols/custom.

(Veraquipara obter instruções gerais sobre como criar e usar arquivos Xkb personalizados.)

Em vez de apenas usar, setxkbmapvocê terá que usar a -printopção para canalizar a saída para xkbcomp. xkbcomptem a -Iopção que você usará para fornecer o caminho para sua árvore de diretórios Xkb personalizada.

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

informação relacionada