Remapeando a tecla liga / desliga para excluir

14

Eu tenho um macbook pro executando o Ubuntu 13.10 com FluxBox. Infelizmente, o botão liga / desliga está fisicamente acima do backspace, onde eu esperaria que a chave de exclusão estivesse. No OS X, o programa PowerKey pode ser usado para remapear a tecla liga / desliga a ser excluída. Como posso fazer algo semelhante no X Windows?

Desativei a tecla liga /etc/systemd/logind.conf/ desliga editando e configurando. HandlePowerKey = ignore Depois disso, posso pressionar o botão liga / desliga sem desligar o laptop.

A execução xev -event keyboardrevela que o KeyPress da tecla liga / desliga normalmente está sendo consumido por outro processo:

MappingNotify event, serial 36, synthetic NO, window 0x0,
    request MappingKeyboard, first_keycode 8, count 248

KeymapNotify event, serial 36, synthetic NO, window 0x0,
    keys:  1   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

KeymapNotify event, serial 37, synthetic NO, window 0x0,
    keys:  1   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

No entanto, executando apenas o xterm diretamente do console, consegui obter o código da chave e remapear a chave com êxito.

xinit /usr/bin/xterm -- :1
xev -event keyboard | tee /tmp/junk.txt
tail -n ???? /tmp/junk.txt
MappingNotify event, serial 28, synthetic NO, window 0x0,
    request MappingKeyboard, first_keycode 8, count 248

KeyPress event, serial 28, synthetic NO, window 0x600001,
    root 0xa1, subw 0x0, time 720369, (146,89), root:(148,91),
    state 0x0, keycode 124 (keysym 0x1008ff2a, XF86PowerOff), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 28, synthetic NO, window 0x600001,
    root 0xa1, subw 0x0, time 720369, (146,89), root:(148,91),
    state 0x0, keycode 124 (keysym 0x1008ff2a, XF86PowerOff), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

MappingNotify event, serial 29, synthetic NO, window 0x0,
    request MappingKeyboard, first_keycode 8, count 248

Nesse ponto, também era possível mapear a chave usando o xmodmap. Mapeei-o para a barra invertida, que é mais fácil de ver do que excluir:

 xmodmap -e "keycode 124 = backslash bar"

Eu poderia obter um equivalente quase funcional para executar adicionando isso a, ~/.fluxbox/keysmas isso é feio e lento o suficiente para ser inutilizável.

  # Remap the power off to a delete key...
  XF86PowerOff :Exec xdotool key Delete

Como posso usar xmodmap ou setxkbmap para usar o botão liga / desliga ao mesmo tempo que um gerenciador de janelas normal?

nathan
fonte

Respostas:

3

Eu não entendo exatamente a frase final, pergunta, mas posso me relacionar com o título da pergunta: "Remapeando a chave de poder para excluir".

Tente substituir qualquer "XF86PowerOff" ou apenas o correspondente ao seu teclado por "Excluir" em / usr / share / X11 / xkb / symbols / inet.

Você precisa repetir isso após uma atualização do sistema que atualiza esse arquivo.

LyXTeX
fonte
veja askubuntu.com/questions/325272/… para detalhes. esta resposta deve ser aceita.
phil294
1

Não é uma resposta exata, mas você já tentou pressionar fn+ delete? Isso deve funcionar como uma exclusão real , em comparação com a ação real de 'backspace' e está muito próximo da tecla liga / desliga.

Outra dica:

fn+ enteratua como um botão Inserir ; portanto, você pode pressionar shift+ fn+ entere Colar como um clique do meio.

Daryl Tucker
fonte
0

É difícil dizer com certeza. Talvez você já tenha tentado isso, mas pode levar a uma solução fácil.

O xmodmap está funcionando para outras chaves ou há algo que o fluxbox está fazendo que está quebrando completamente o xmodmap?

O que acontece se você iniciar x, modmap a tecla liga / desliga e depois iniciar o fluxbox? O mapeamento permanece?

Se executar xmodmap antes obras Fluxbox e mantém suas configurações, você pode escrever um script shell para chamar tanto na ordem correta, ou se você estiver usando gdm deve ler-se ~/.xmodmapou ~/.xmodmaprcautomaticamente para você antes fluxbox entra em cena.

Mike Fairhurst
fonte
Sim, o xmodmap funciona. No momento, tenho o comando alt e right certo remapeado para excluir e inserir, respectivamente, usando xmodmap -e "remover mod1 = Alt_L" -e "remover mod4 = Super_L" -e "adicionar mod1 = Super_L" -e "adicionar mod4 = Alt_L "-e "remover mod1 = Alt_R" -e "remover mod4 = Super_R" -e "keysym Alt_R = Apagar" -e "keysym Super_R = Inserir"
Nathan
Você pode incluir a saída do xmodmap -pke no fluxbox?
Mike Fairhurst
@nathan, então esse é o problema de quando o xmodmap é executado, após o fluxbox ou antes. Teve o mesmo problema com ui impressionante
Darek