Mapeamento de botões do Logitech M545

4

Comprei um Logitech M545 ontem e ele não está se comportando como deveria. Com o meu velho M705 eu poderia usar os botões do polegar para voltar / avançar no Firefox, Thunar, etc, mas com o M545 eles nem sequer enviam os códigos normais para pressionar os botões. Aqui está o que eu recebo:

Botão Voltar:

KeyPress event, serial 28, synthetic NO, window 0x7000001,
    root 0x2d3, subw 0x0, time 7968516, (47,78), root:(3157,978),
    state 0x10, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 28, synthetic NO, window 0x7000001,
    root 0x2d3, subw 0x0, time 7968516, (47,78), root:(3157,978),
    state 0x50, keycode 40 (keysym 0x64, d), same_screen YES,
    XLookupString gives 1 bytes: (64) "d"
    XmbLookupString gives 1 bytes: (64) "d"
    XFilterEvent returns: False

KeyRelease event, serial 28, synthetic NO, window 0x7000001,
    root 0x2d3, subw 0x0, time 7968524, (47,78), root:(3157,978),
    state 0x50, keycode 40 (keysym 0x64, d), same_screen YES,
    XLookupString gives 1 bytes: (64) "d"
    XFilterEvent returns: False

KeyRelease event, serial 28, synthetic NO, window 0x7000001,
    root 0x2d3, subw 0x0, time 7968530, (47,78), root:(3157,978),
    state 0x50, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

Botão para frente:

KeyPress event, serial 28, synthetic NO, window 0x7000001,
    root 0x2d3, subw 0x0, time 7969328, (47,78), root:(3157,978),
    state 0x10, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 28, synthetic NO, window 0x7000001,
    root 0x2d3, subw 0x0, time 7969436, (47,78), root:(3157,978),
    state 0x50, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

Eu já experimentei tanto o Debian quanto o Ubuntu, vários kernels diferentes.

Como posso remapear esses botões para obter o comportamento a que estou acostumado e como faço para diferenciá-los e pressionar o teclado? Além disso, como os dois botões enviam Super_L, como posso diferenciá-los?

Se o remapeamento significa que eu perco Super_L do teclado, então que assim seja, embora não seja o ideal.

Alguma idéia?

    
por Petter Adsen 19.05.2015 / 10:42

3 respostas

2

Geralmente, você precisa executar um utilitário da Logitech para reprogramar os botões nesse caso. Funciona bem através do VirtualBox.

(da experiência com meu G300 e o fato de que a descrição do M545 diz que ele é programável)

Outra possibilidade é o daemon evrouter . Pode mudar os eventos de dispositivos de entrada na hora. Pode ser usado para corrigir o problema ou ampliar ainda mais a funcionalidade dos botões.

    
por Velkan 19.05.2015 / 10:53
2

Eu acabei de fazer um repositório no GitHub , que fornece o driver para o M560 / M545 / M546.

Basta baixá-lo e fazer o checkout da fonte para a versão do kernel correta e executar make && sudo make install . Então você pode usar xbindkeys-config para mapeá-lo.

    
por CzBiX 31.08.2015 / 12:35
1

Eu (meio que) consegui resolver isso.

Crie "/etc/udev/hwdb.d/90-logitech-m-545.hwdb" com o seguinte:

# Logitech M545
keyboard:usb:v046DpC52B*
 KEYBOARD_KEY_70007=back
 KEYBOARD_KEY_700E3=forward

Então:

udevadm hwdb --update

Desconecte o receptor e conecte-o novamente, e os botões de polegar agora se comportam normalmente pelo menos no firefox.

Esta é apenas uma solução alternativa, pois ainda envia eventos de teclado, mas faz o que eu quero principalmente que ela faça.

EDIT: corrigir o código

    
por Petter Adsen 23.05.2015 / 13:25