Como remapear o menu de contexto para outra chave no linux?

19

Acabei de comprar um thinkpad Lenovo e estou muito orgulhoso de tudo nele. Parece tão sólido quanto o kernel do Linux: P.

O problema é que a Lenovo decidiu remover a tecla do menu de contexto, que é a chave que faz o clique direito. Eles o substituíram por uma tecla de tela de impressão. Meu teclado tem sua parte numérica com alguns botões acima dele. Há uma tecla de lupa que eu gostaria de remapear para abrir o menu de contexto ou ser a tecla do botão direito. É possível fazer isso?

Tentei procurar outras perguntas relacionadas, mas só encontrei perguntas e respostas sobre como adicionar opções ao menu de contexto do Nautilus. Quero mapear uma tecla física do meu teclado para abrir este menu. Assim como antes. Parece também que a Dell está soltando essa tecla no teclado inspiron. Não sei o que está acontecendo, pois uso mais o teclado do que o mouse.

Desde já, obrigado.

Jhonnytunes
fonte
3
Por favor, instale xbindkeys com sudo apt-get install xbindkeys. Em seguida, em um terminal, xbindkeys -kdigite a chave que deseja alterar. Você pode adicionar a saída à sua pergunta?
Seth
"NoCommand" m: 0x50 + c: 46 Mod2 + Mod4 + l
Jhonnytunes 31/12/12
Quem iria querer uma tecla Print Screen na qual esperaria uma tecla Menu? Eu me pergunto seriamente como você está bêbado para aparecer na Lenovo. De qualquer forma, observe que você não precisa de um .Xmodmapgerado xmodmap -pkepara começar, basta colocar sua ligação em um arquivo vazio. Além disso, veja o que @Baha_hi descobriu abaixo.
J.Katzwinkel

Respostas:

13

É um pouco complicado, mas você pode fazê-lo. Siga esses passos:

Detectar código-chave

  1. Execute xevpara detectar o código da chave:

    xev | grep keycode
    
            state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
            state 0x0, keycode 107 (keysym 0xff67, Menu), same_screen YES,
            state 0x0, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
    
  2. Pressione a tecla que deseja reconfigurar. A saída no terminal mostrará o keycode(tenha cuidado, pode ter vários).

Mapeamento de teste

  1. Defina um novo mapeamento temporariamente, para mim é keycode 107:

    xmodmap -e "keycode  107 = Return NoSymbol Return"
    

Se a chave se comportar conforme o esperado, você pode salvar a configuração.

Salve sua configuração

  1. Salve sua tabela de mapas de $HOMEteclas atual na sua , para substituir o padrão:

    xmodmap -pke > ~/.Xmodmap
    
  2. Crie ou edite ~/.xinitrcpara carregar sua configuração:

    $EDITOR ~/.xinitrc
    
  3. Adicione as seguintes linhas

    if [ -f $HOME/.Xmodmap ]; then
            /usr/bin/xmodmap $HOME/.Xmodmap
    fi
    

Apreciar

A maioria das informações acima vem do artigo do ArchWiki .

Ed Villegas
fonte
Há um problema. Quando pressiono o botão 'l' está marcado. Eu verifiquei no xev e ele me deu o código-chave 46 atribuído à letra L l. Talvez ele não tenha um código de chave e pegue um.
Jhonnytunes
@Jhonnytunes. Verifique se o layout do teclado está correto. Você pode mudar seu modelo digitando `sudo dpkg-reconfigure keyboard-configuration`.
Ed Villegas
Ainda é o mesmo comportamento. Eu tentei diferentes modelos de thinkpad e nada.
Jhonnytunes
BTW, o meu thinkpad é um E530c e não aparece na lista de teclados.
Jhonnytunes
Se esse for o layout do seu teclado, talvez a tecla ao lado de «Excluir» seja realmente «menu de contexto» (a função que você está procurando). Caso contrário, reconfigure outra tecla ou pergunte diretamente à mesa da Lenovo qual layout você deve escolher.
Ed Villegas
12

Eu descobri aqui que usando: shift+ F10abre o menu de contexto.

Sei que não é a melhor solução, mas achei que poderia ajudar no uso temporário!

PS: Eu também tenho o e530c e testei isso no Debian 7 (Wheezy).

Bahax
fonte
3

Finalmente encontrei o caminho para fazer isso após horas de testes e falha: D

Antes de tudo, instale o xautomation:

sudo apt-get install xautomation

Em seguida, vá para a guia Atalho da seção Teclado nas Configurações do sistema Ubuntu. Primeiro, acesse a entrada Capturas de tela e remapeie as ações para outra chave ou desative-as, se desejar. Substituí a tecla PrtSc (Print) pelo botão preto do Thinkpad (Launch1).

Agora vá para a seção Atalhos personalizados e adicione um atalho. nomeie como quiser, por exemplo, Menu. No campo Comando, insira isto:

xte 'keydown Shift_L' 'key F10' 'keyup Shift_L'

O trabalho está feito! Está funcionando como um milagre;)

Danial Behzadi
fonte
2

Isso fez o truque para mim. Para mim, o código-chave do botão "PrtSc" no meu thinkpad é 107. Eu descobri isso pela ferramenta "xev" no ubuntu.

xmodmap -e "keycode  107 = Menu"

Esta é uma mudança temporária.

Você pode tornar isso permanente adicionando este comando ao / etc / profile e ele será executado sempre que você inicializar e será uma alteração permanente.

Ponteiro nulo
fonte
1

Recentemente, adquiri um Lenovo E550 e tive o mesmo problema, resolvi-o usando xte(de xautomation) junto com xmodmap.

Por que as outras respostas não funcionam completamente?

  1. A resposta do @Ed Villegas (nem do @Null Pointer ) não funcionará porque algumas das teclas localizadas acima da parte numérica não são únicas ( por exemplo, a tecla de bloqueio está relacionada à combinação Super+ L). Quando xevé usado para tentar encontrar o código da chave da chave de bloqueio, ele retorna Superos Lcódigos da chave e da chave, basta interpretar a xevsaída linha por linha.

  2. Para @Bahax e @John Finegan : Shift+ F10é uma tecla de menu de contexto, não funciona em todos os aplicativos e não fornece as mesmas funções que Menu. Se você selecionar um arquivo no gerenciador de arquivos e pressionar Menuo menu de contexto para o próprio arquivo aparecer, isso não acontece com a combinação Shift+ F10, mas forneceria um menu de contexto para a janela.

  3. O @Danial Behzadi adota uma abordagem semelhante às pessoas no segundo item, mas, ao vincular a combinação de teclado a uma tecla por meio de um simulador de pressionamento de tecla, ele vinculará a tecla ao Shift+ F10e fornecerá o mesmo resultado.

A resposta que funciona

É importante levar em consideração que a tecla que não está presente no teclado do ThinkPad é a Menu(ou seja, é o nome), é mostrada na figura a seguir:

Botão de menu

Embora a chave não esteja presente, ele deve existir no seu computador, você pode encontrá-la imprimindo a tabela de códigos com a xmodmap -pke | grep Menuqual deve fornecer algo como:

saída xmodmap

Com isso em mente, instale xautomation(para usar xteem simulações de pressionamento de tecla), como na resposta do @Danial Behzadi :

sudo apt-get install xautomation

E crie um atalho personalizado. No gatilho, pressione a tecla que deseja que seja o atalho e Actioncole xte 'key Menu'. Aplique e teste.

Hans
fonte