Não é possível inserir letras maiúsculas usando a tecla Shift

3

Em alguns aplicativos, inserir letras maiúsculas funciona como apertar a tecla ESC.

Reprodução:

  • Abra o documento do LibreOffice
  • Selecione "Salvar como" (caixa de diálogo Unity)
  • Clique em "Criar pasta"
  • Insira uma letra maiúscula usando a tecla shift (por exemplo, Shift + A)

Neste ponto, a criação da nova pasta será cancelada. (como tecla ESC foi atingida)

Esse comportamento também está presente em muitos programas e jogos diferentes.

Analisando a situação com xev (Hitting Shift + d)

# xev
KeyPress event, serial 37, synthetic NO, window 0x4c00001,
    root 0x259, subw 0x0, time 994702, (15,-13), root:(987,197),
    state 0x10, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

FocusOut event, serial 37, synthetic NO, window 0x4c00001,
    mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 37, synthetic NO, window 0x4c00001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 37, synthetic NO, window 0x0,
    keys:  89  0   0   0   0   1   4   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   

KeyPress event, serial 37, synthetic NO, window 0x4c00001,
    root 0x259, subw 0x0, time 994927, (15,-13), root:(987,197),
    state 0x11, keycode 40 (keysym 0x44, D), same_screen YES,
    XLookupString gives 1 bytes: (44) "D"
    XmbLookupString gives 1 bytes: (44) "D"
    XFilterEvent returns: False

KeyRelease event, serial 37, synthetic NO, window 0x4c00001,
    root 0x259, subw 0x0, time 995062, (15,-13), root:(987,197),
    state 0x11, keycode 40 (keysym 0x44, D), same_screen YES,
    XLookupString gives 1 bytes: (44) "D"
    XFilterEvent returns: False

KeyRelease event, serial 37, synthetic NO, window 0x4c00001,
    root 0x259, subw 0x0, time 995395, (15,-13), root:(987,197),
    state 0x11, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

Acho que os eventos FocusOut e FocusIn parecem suspeitos.

Linux: Ubuntu 14.04 LTS 32bit, Unidade

Como posso consertar meu sistema? Qualquer idéia ou testes adicionais são bem-vindos!

Editar: a solução

Eu costumava configurar a mudança de idioma para LeftShift + RightShift. Isso funcionou durante anos, mas tornou-se o problema em algum momento. De qualquer forma, a configuração da chave para qualquer outra combinação de teclas resolveu o problema.

    
por Boris Brodski 02.08.2015 / 11:45

2 respostas

3
FocusOut event, serial 37, synthetic NO, window 0x4c00001,
    mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 37, synthetic NO, window 0x4c00001,
    mode NotifyUngrab, detail NotifyAncestor

O que aconteceu quando você pressionou A com Shift retido é um agarrar passivo : há um cliente X que tem controle exclusivo sobre essa combinação de teclas e quando a combinação de teclas é pressionada, o evento é roteado apenas para esse cliente, não para xev ou para qualquer outra pessoa. xev informa o cliente pegando a combinação de teclas quando isso acontece e soltando-a quando acaba.

Em termos leigos, existe um programa que é definido Shift + A como uma tecla de atalho global. É provavelmente um erro de digitação onde você quis ligar Shift + Alt + chave ou Win + Shift + A alguma coisa.

Em Manipulando a tecla X e as capturas de ponteiro na linha de comando eu perguntei como encontrar quem é o grabber. A melhor maneira que encontrei apenas reporta a captura ativa, portanto, a chave deve estar desativada quando a informação é consultada.

  1. Instale o xdotool se ainda não o tiver.
  2. Executar sleep 1; xdotool key XF86LogGrabInfo .
  3. Dentro de um segundo, pressione e segure a tecla Shift + A . Aguarde até que xdotool seja executado.
  4. Procure no log do servidor X informações sobre a captura. O local típico do log do servidor X é /var/log/Xorg.0.log (o 0 reflete o número de exibição, ou seja, o número em $DISPLAY : se $DISPLAY é :1 ou :1.0 , em seguida, observe /var/log/Xorg.1.log , etc .).

Aqui está um exemplo de saída mostrando que a tecla que eu pressionei foi uma chave de ligação definida pelo sawfish:

[2292688.331] Active grab 0x41602244 (core) on device 'Virtual core keyboard' (3):
[2292688.331]       client pid 6745 sawfish 
[2292688.331]       at 2292687547 (from passive grab) (device thawed, state 3)
[2292688.331]         core event mask 0x3
[2292688.331]       passive grab type 2, detail 0x4e, activating key 78
[2292688.331]       owner-events false, kb 0 ptr 0, confine 0, cursor 0x0
[2292688.331] (II) End list of active device grabs
    
por 02.08.2015 / 21:47
0

No Ubuntu 16.04 LTS 64 bit, tive o mesmo comportamento em "Arquivos":

  • Você pode renomear arquivos e pastas no modo "Visualizar itens como uma grade de ícones"
  • No modo "Visualizar itens como uma lista":
    • Pressionando deslocamento para a direita enquanto renomear é similar a pressionar ESC
    • Pressionando deslocamento à esquerda funciona
    • Pressionando deslocamento à esquerda + qualquer letra é similar a pressionar ESC , deslocamento à esquerda + carta

Como resultado, não é possível inserir letras maiúsculas em "Visualizar itens como uma lista" enquanto renomeia um arquivo ou uma pasta.

A solução:

  • Ir para System settings / Keyboard
  • Mude para a guia Shortcuts
  • Selecione Universal access no lado esquerdo
  • Remover ligações de zoom
por 08.09.2016 / 00:01