Remapear um botão do mouse para atuar como tecla de controle

5

Eu tenho o mouse darkfeild da Logitech (o que funciona no vidro) e fiquei imaginando como posso remapear um dos meus botões não utilizados no momento (meu botão de zoom) para funcionar como um botão de teclado selecionado (controle ou ceia)? .... Eu também estou usando 13.04 .... FYI.

Obrigado

    
por powell4076 13.09.2012 / 06:35

2 respostas

2

Eu achei bastante útil esses links há muito tempo ...

link

link

    
por Alessio Tomelleri 13.09.2012 / 07:31
0

Alguns ambientes de área de trabalho (DE), combinados com vários gerenciadores de janela (WM), podem obter um pouco de funcionalidade com a entrada do mouse; no entanto, talvez não cubra essa configuração obscura que poderíamos alterar. No meu caso, eu uso mouses Logitech M510 em todas as minhas máquinas, mas em vez de usar os botões "avançar" e "voltar" (os botões do polegar) para navegar na Internet, prefiro usá-los para o botão do meio do mouse . Quando passo uma hora ou mais modelando no Blender, meu dedo do meio fica dolorido de outra forma. Para fazer essa alteração, preciso configurar o próprio dispositivo X usando o comando "xinput".

Primeiro, preciso encontrar o dispositivo com o qual queremos trabalhar, neste caso meu mouse Logitech M510. Isso pode ser feito listando primeiro todos os dispositivos X usando o comando xinput da seguinte forma:

$ xinput
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Microsoft Natural® Ergonomic Keyboard 4000        id=11   [slave  pointer  (2)]
⎜   ↳ Logitech Unifying Device. Wireless PID:1025       id=12   [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=15   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
     ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
     ↳ Power Button                              id=6    [slave  keyboard (3)]
     ↳ Video Bus                                 id=7    [slave  keyboard (3)]
     ↳ Power Button                              id=8    [slave  keyboard (3)]
     ↳ Sleep Button                              id=9    [slave  keyboard (3)]
     ↳ Microsoft Natural® Ergonomic Keyboard 4000        id=10   [slave  keyboard (3)]
     ↳ BisonCam, NB Pro                          id=13   [slave  keyboard (3)]
     ↳ AT Translated Set 2 keyboard              id=14   [slave  keyboard (3)]

Observe que meu mouse está sob o ponteiro do núcleo virtual e o ponto em que ele está conectado ao computador (via USB) como o id do dispositivo X = 12. Não que precisemos, mas porque é bom saber, se precisássemos de mais detalhes sobre o dispositivo, faríamos o seguinte (onde 12 é o ID do dispositivo X):

$ xinput list 12
Logitech Unifying Device. Wireless PID:1025     id=12   [slave  pointer  (2)]
        Reporting 7 classes:
                Class originated from: 12. Type: XIButtonClass
                Buttons supported: 24
                Button labels: "Button Left" "Button Middle" "Button Right" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right" "Button Side" "Button Extra" "Button Forward" "Button Back" "Button Task" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown"
                Button state:
                Class originated from: 12. Type: XIValuatorClass
                Detail for Valuator 0:
                  Label: Rel X
                  Range: -1.000000 - -1.000000
                  Resolution: 1 units/m
                  Mode: relative
                Class originated from: 12. Type: XIValuatorClass
                Detail for Valuator 1:
                  Label: Rel Y
                  Range: -1.000000 - -1.000000
                  Resolution: 1 units/m
                  Mode: relative
                Class originated from: 12. Type: XIValuatorClass
                Detail for Valuator 2:
                  Label: Rel Horiz Wheel
                  Range: -1.000000 - -1.000000
                  Resolution: 1 units/m
                  Mode: relative
                Class originated from: 12. Type: XIValuatorClass
                Detail for Valuator 3:
                  Label: Rel Vert Wheel
                  Range: -1.000000 - -1.000000
                  Resolution: 1 units/m
                  Mode: relative
                Class originated from: 12. Type: XIScrollClass
                Scroll info for Valuator 2
                  type: 2 (horizontal)
                  increment: 1.000000
                  flags: 0x0
                Class originated from: 12. Type: XIScrollClass
                Scroll info for Valuator 3
                  type: 1 (vertical)
                  increment: -1.000000
                  flags: 0x2 ( preferred )

Reconfigurar as funções do botão agora é uma simples questão de alterar o mapa de botões. Vamos obter o mapa de botões existente da seguinte forma:

$ xinput get-button-map 12 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24    

Este é o mapa de botões atual. Pense nisso como uma matriz de botões e cada um dos valores é a "função" do botão nesse índice. Infelizmente eu não consigo lembrar como cheguei a esta conclusão, mas no meu mouse eu quero mudar as funções dos botões, 8, 9 e 10 para se comportarem como o botão 2. Eu faço isso mudando os números de função para aqueles botões e defini-lo de volta como o mapa de botões para o dispositivo X da seguinte forma:

$ xinput set-button-map 12 1 2 3 4 5 6 7 2 2 2 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Para tornar isso uma solução permanente, adiciono o comando acima ao meu .profile a ser executado quando eu fizer o login. No entanto, o ID do dispositivo pode mudar de inicialização para inicialização, dependendo de quais dispositivos estão conectados ao computador. Para evitar isso, grep e awk podem ser usados para encontrar o ID do dispositivo e alimentá-lo para o comando xinput da seguinte forma:

MOUSE_ID='xinput list | grep -i Logitech | awk -F= '{ print }' | awk '{print }'' 'xinput set-button-map $MOUSE_ID 1 2 3 4 5 6 7 2 2 2 11 12 13 14 15 16 17 18 19 20 21 22 23'

As linhas acima são adicionadas ao arquivo .profile e o dispositivo será dinamicamente localizado a partir da lista de xinput e remapeará as funções do botão como desejamos que sejam. Note, no entanto, que a Logitech no exemplo acima é vago (já que eu só tenho um dispositivo Logitech), portanto, da saída do comando xinput, você pode precisar preencher algo mais específico para o grep corresponder.

    
por GuestGM 26.12.2014 / 06:27