Eu achei bastante útil esses links há muito tempo ...
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
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.