Quero remapear meu AltGR + Right_Windows, mas não consigo descobrir como. Não importa o que eu tente, pressionar a tecla direita do Windows emite o nome do teclado quando alt direito é pressionado ou não.
Este é o conteúdo do arquivo xmodmap que estou testando agora. No meu teclado, 38 é o código de tecla para "a", 48 é o código de tecla para apóstrofo / aspas duplas e 134 é o código de tecla para a tecla direita do Windows.
keycode 38 = 1 2 3 4 5 6 7 8
keycode 48 = 1 2 3 4 5 6 7 8
keycode 134 = 1 2 3 4 5 6 7 8
Quando pressiono Right_Alt + apóstrofo, ele gera 5, mas Right_Alt + ae Right_Alt + Right_Windows fornecem 1 (tanto quando a tecla alt direita é pressionada como quando não é), o que não era o que eu queria.
Meu layout de teclado atual é us(alt-intl)
e o alt certo está aparentemente configurado para funcionar como AltGr / Iso_Level3_Shift. A saída de xmodmap -pm
é a seguinte:
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), 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)
xev
e pressionar as várias combinações de teclas para ver se o hardware e o nível do Xwindows estão recebendo pressionamentos de tecla distinguíveis para começar.us(cz_sk_de)
layout do teclado e o xmodmap.Respostas:
Usando xmodmap para configurar mapeamentos de teclas individuais
É hora de anotar os resultados de minha própria pesquisa.
Eu pensei que devia ter perdido alguma coisa no xmodmap e que ela simplesmente não está muito bem documentada e as pessoas estão confusas. Mas o design do X.Org sobre o XKB e o xmodmap é simplesmente estúpido.
Falha épica: xmodmap
Você pode usar o xmodmap para redefinir os mapeamentos existentes, desde que esses mapeamentos realmente existam no layout original do teclado. No caso descrito na pergunta, você não pode estender o comportamento de nenhuma chave para usar o AltGr. Você só pode alterar os principais atalhos do AltGr para códigos que já estão usando o AltGr.
Consulte também: http://blog.azundris.com/archives/193-X-treme-pain-XKB-vs-XModMap.html
Solução alternativa: Mode_switch
Esta solução alternativa é descrita na resposta por @ Ned64. Você pode remapear
AltGr
deISO_Level3_Shift
paraMode_switch
.Usei com sucesso a seguinte linha de comando para remapear
AltGr
.A desvantagem é que isso interromperá o layout atual do teclado, mas você pode recriar todos os mapeamentos um por um usando
xmodmap
como @ Ned64 já mencionado.Solução alternativa: layout de teclado modificado
Estou usando
us(cz_sk_de)
como meu layout de teclado e tentei modificá-lo adicionando a configuração das teclas que desejava estender.(Na seção
xkb_symbols "cz_sk_de"
de/usr/share/X11/xkb/symbols/us
)Basta redefinir o layout do teclado para usar a versão modificada.
Agora você pode (1) tipo Checa e Inglês aspas e elipses usando combinações de
,
,.
,Shift
eAltGr
teclas e / ou (2) remapear essas chaves usandoxmodmap
agora que eles são definidos.A principal desvantagem é que
setxkbmap
parece não oferecer suporte a locais arbitrários para layouts de teclado e, portanto, você precisa gravar na configuração do sistema em vez do diretório inicial.Conclusão
Este parece ser um exemplo de design incorreto e com excesso de engenharia do X.Org, onde até mesmo algo trivial como mapear um código-chave e uma combinação de modificadores em um símbolo acaba sendo um problema. As ferramentas não parecem fornecer uma maneira razoável de alterar apenas os mapeamentos de teclas individuais na configuração do usuário, sem efeitos colaterais.
fonte
Etapa 1: tornar o AltGr utilizável
Descobri que as teclas modificadas com AltGr só funcionam no meu sistema se eu também remapear a tecla AltGr para
Mode_switch
:Se você tiver um teclado diferente, poderá ser necessário substituí-lo pelo
108
código, verifique digitandoentão use esse número. (A chave é normalmente chamada
Alt_R
em sistemas que eu conheço.)Como alternativa, isso também pode funcionar se Alt_R ainda não estiver atribuído a outra coisa:
Seu modificador AltGr agora servirá a posição 3 (com Shift: 4) na sua lista de modificadores.
Etapa 2: Atribuir chaves conforme necessário
Você pode atribuir variantes do AltGr para qualquer tecla do teclado que desejar. Se você possui outras chaves que não correspondem ao código desejado agora, é necessário redesigná-las exatamente como as outras chaves (as que você testou).
Etapa 3: Converter isso em um script
Agora, basta tomar seus
xmodmap
comandos e gravar todas as modificações (exceto apenas) no teclado padrão em um arquivo - mais rápido do que carregar um mapa de teclas completo. Inicie esse script uma vez após cada login e sempre que o mapa de teclas for redefinido por algum processo.Eu experimentei muito isso ao longo dos anos, sob Solaris, IRIX e Linux, e que eu saiba é a única solução para fazer o AltGr funcionar - e funcionou bem para mim por mais de 20 anos.
fonte
xmodmap -pm
exmodmap -pke | grep -w SOMECHANGEDKEY
nesta situação, para uma chave que não funcione mais.xmodmap
de acordo com sua saída)xmodmap -pke | grep Alt_R
não retorna nenhum resultado no meu sistema. Meu sistema é o Lenovo ThinkPad X230 com o Gentoo estável. Eu também tenteigrep -i
sem sucesso.us(cz_sk_de)
pararam de funcionar para mim. Portanto, esta resposta não funciona para mim e não funciona para muitas outras.Aparentemente, o xmodmap não lê o AltGR padrão como deveria, pode estar limitado a layouts de teclado específicos, talvez sejam todos os layouts que não sejam dos EUA, de qualquer forma, o verdadeiro problema é que você pode substituir o layout do teclado, algumas pessoas podem não quero realmente fazer isso, pois eles precisam usar caracteres especiais no layout a que estão acostumados (como layouts de teclado escandinavo que possuem caracteres como ðþæöáúíóåů e assim por diante), que seria uma tarefa difícil de configurar para outros layouts de teclado.
Você pode correr
Para religar o AltGR a algo que o xmodmap possa trabalhar e, de fato, a terceira atribuição de um teclado será exibida quando você pressionar o AltGR agora, no entanto, ele interromperá completamente o layout do teclado original, pois nenhuma tecla do AltGR funcionará mais com a tecla AltGR.
Eu encontrei duas soluções alternativas que não quebram o layout do teclado existente e não envolvem a troca de layouts ; uma é ligar o Mode_switch a outra tecla.
A chave ideal para isso é Super_R, que fica ao lado de AltGR, o código é 134. No entanto, nem todos os teclados os possuem e, no meu caso, em um laptop, eu também não o tenho, então decidi vinculá-lo ao último chave restante que eu praticamente nunca uso, Controle Certo.
Eu tenho um layout de teclado físico americano, mas falta uma configuração de layout europeu e a tecla less / maior / bar (também conhecida como ISO_Backslash, embora isso não seja reconhecido pelo próprio xmodmap) geralmente ao lado de Z nesses teclados. Liguei isso ao Menu (135), mas poderia servir como uma alternativa ao R_Ctrl e Super_R
Esta é uma solução suja, suponho.
A segunda solução demorou um pouco mais para descobrir. Usando sxhkd (alternativa xbindkeys)
Se você adicionar isso a ~ / .config / sxhkd / sxhkdrc :
Seu AltGR funcionará normalmente, mas quando pressionado, o Mode_switch é alternado (como caps lock, mas para Mode_switch) e qualquer tecla xmodmap que o utilize será bloqueada no modo AltGR até você pressionar AltGR novamente para descompactá-lo. Deveria ser simples criar um script para descompactá-lo automaticamente quando a chave for liberada, mas minhas tentativas para fazê-lo foram bastante complicadas, para dizer o mínimo.
fonte