remapear alt certo para se comportar como ctrl direito

8

Estou tentando remapear meu right altcomportamento right ctrlpara que eu possa usar o polegar direito para pressionar o ctrlbotão. Este é o Ubuntu 12.04.

Eu criei o arquivo .Xmodmap na minha pasta pessoal com o seguinte conteúdo:

clear control
clear mod1
!keycode 64 = Alt_L Meta_L
keycode 108 = Alt_R Meta_R
add control = Control_L Control_R Alt_R
add mod1 = Alt_L Meta_L

Como você pode imaginar, minha tecla alt esquerda tem o código 64 e minha left altchave 108.

Isso realmente funciona no sentido em que minha tecla alt direita se comporta como se eu pressionasse a ctrltecla.

No entanto, minha altchave esquerda agora não faz mais nada, o que significa que não tenho mais uma altchave. Isso é estranho, pois xmodmapfornece a seguinte saída:

xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69),  Alt_R (0x6c)
mod1        Alt_L (0x40),  Alt_L (0xcc),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

O estranho é que, quando removo o mapeamento Alt_R control, as altteclas funcionam.

(ou seja, altere a segunda para a última linha para :)

add control = Control_L Control_R

Agora, mesmo o meu alt direito se comporta como uma altchave que me confunde. Depois de remover o mapeamento Alt_R da linha de controle, a saída de xmodmapdá:

xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_L (0xcc),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

Espero que vocês possam ajudar.

ps. Eu usei este site como fonte.

Hoogendijk
fonte

Respostas:

6

Você pode simplesmente usar o Layout do teclado >> Opções >> Posição da tecla Ctrl >> Alt direito como Ctrl direito , mas isso não funciona. Isso já foi registrado no Debian como Bug # 663218

1) Comece do zero excluindo ~ / .Xmodmap.

2) Observe que você não precisa limpar Control e Mod1. Isso facilita a alteração apenas do que você deseja. Seu ~ / .Xmodmap deve ser:

!Swap right control and right alt
remove Control = Control_R
remove Mod1 = Alt_R
keycode 105 = Alt_R
keycode 108 = Control_R
add Control = Control_R
add Mod1 = Alt_R
perseguições
fonte
2

Se você é uma das pessoas infelizes como eu que não conseguiu que o xmodmap alternasse Alt com a tecla Ctrl certa, talvez isso ajude.

Se você pressionar Alt e e à direita e obtiver é, então esta solução é para você (precisa ser aprimorada).

Execute isso no terminal (verifique seus códigos de chave com xev):

xmodmap -e "keycode 108 = Alt_R Meta_R Alt_R Meta_R"

Em seguida, coloque esse código no seu .Xmodmap:

remove Control = Control_R
remove Mod1 = Alt_R
keycode 105 = Alt_R
keycode 108 = Control_R
add Control = Control_R
add Mod1 = Alt_R

Esse código define sua chave Alt_Gr como Alt_R e, em seguida, alterna Alt_r com Ctrl_R.

Se você deseja que isso permaneça após o logout, coloque os seguintes comandos em qualquer um dos seus arquivos de shell de inicialização, por exemplo ~ / .profile:

if [ -f $HOME/.Xmodmap ]; then
  xmodmap -e "keycode 108 = Alt_R Meta_R Alt_R Meta_R"
  /usr/bin/xmodmap $HOME/.Xmodmap
fi

fontes: question1 question2

Mugur 'Bud' Chirica
fonte
1

No Ubuntu 19.04, Para tornar o mapeamento em todo o sistema, você deve alterar dois arquivos:

  • / usr / share / X11 / xkb / symbols / altwin
  • / usr / share / X11 / xkb / símbolos / pc

Adicione a seguinte seção à anterior:

// Ctrl is mapped to the Alt.
partial modifier_keys
xkb_symbols "right_alt" {
    key <LALT> { [ Alt_L, Meta_L ] };
    key <RALT> { type[Group1] = "TWO_LEVEL",
                 symbols[Group1] = [ Control_R, Control_R ] };
    modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
    modifier_map Control { <LCTL>, <RALT> };
};

E substitua include "altwin(meta_alt)"o include "altwin(right_alt)"no último.

ilyuha21st
fonte
Isso responde à pergunta e funciona. Mas a resposta aceita alterna as teclas alt e ctrl certas. Isso não foi o que foi solicitado originalmente, mas acho que é uma solução que muitos estão procurando (ter dois controles à direita não é tão útil). Você se importaria de adicionar como mapear o controle certo para o alt certo?
Tedward