Um pressionamento de tecla produz mais códigos de tecla

1

Instalei o linux (testado debian 9 e linux mint 18) em um laptop mais antigo (acer aspire timeline X 5820) e há um problema com o teclado.

Existem controles de volume e brilho da tela em suas setas (funcionando quando a tecla fn é pressionada). Três deles estão funcionando bem, enquanto o último (brilho baixo) não está. Quando a tecla (a seta junto com fn) é pressionada, inicializa o brilho e altera para o monitor externo .

A saída xev é (para uma pressão da seta quando a tecla fn é mantida):

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

FocusOut event, serial 40, synthetic NO, window 0x7200001,
    mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 41, synthetic NO, window 0x7200001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 41, synthetic NO, window 0x0,
    keys:  2   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   8   0   0   

KeyRelease event, serial 41, synthetic NO, window 0x7200001,
    root 0xb0, subw 0x0, time 5319155, (1023,637), root:(1023,666),
    state 0x10, keycode 235 (keysym 0x1008ff59, XF86Display), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

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

FocusOut event, serial 41, synthetic NO, window 0x7200001,
    mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 42, synthetic NO, window 0x7200001,
    mode NotifyUngrab, detail NotifyAncestor

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

KeyRelease event, serial 42, synthetic NO, window 0x7200001,
    root 0xb0, subw 0x0, time 5319238, (1023,637), root:(1023,666),
    state 0x10, keycode 232 (keysym 0x1008ff03, XF86MonBrightnessDown), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

A saída showkey é:

keycode 227 press
keycode 227 release
keycode 224 press
keycode 224 release

O teclado também tem chave dedicada (F5 com fn) para a alteração da exibição a ser usada - isso produz sem saída nem em xev nem em showkey .

Tanto a redução do brilho quanto a exibição mudam, mas apenas ao mesmo tempo. "Funciona" da mesma forma nos dois linuxes. Foi bom no Windows, por isso não é problema de hardware.

É possível (e como) transferir o código keycode 235 (keysym 0x1008ff59, XF86Display) para a tecla direita?

    
por fales 12.12.2017 / 10:55

1 resposta

0

Os laptops são sempre complicados, porque cada fabricante faz algo diferente e não há documentação do fabricante, apenas drivers do Windows.

A partir de sua descrição, parece que no modo atual o Controlador Incorporado (EC) está em uso, ele apenas produz a sequência errada para Fn + brilho abaixo e nenhuma sequência ou algum outro tipo de evento para Fn + F5.

Como não há documentação sobre como reprogramar o EC para fazer isso de forma diferente, a melhor solução que posso imaginar é mapear o XF86Display para outra coisa (via xmodmap etc.) que é ignorada e não altera a exibição. Dessa forma, a tecla de brilho para baixo funcionará corretamente, mesmo que produza um símbolo adicional.

Se você puder encontrar algum outro evento produzido para Fn + F5 (por exemplo, com acpi_listen ), poderá adicionar algumas coisas personalizadas para reagir a esse evento. Se você não encontrar nenhum evento, terá que mapear esse keysym para outra combinação de teclas (sem Fn), ou viver com o fato de que esta chave está faltando.

    
por 12.12.2017 / 12:05

Tags