Use xinput list
para encontrar o dispositivo em que você deseja desativar o botão:
$ xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Logitech USB-PS/2 Optical Mouse id=8 [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)]
↳ Power Button id=7 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=9 [slave keyboard (3)]
Vou tentar isso no meu mouse. O próximo passo é obter o mapa de botões atual:
$ xinput get-button-map 'Logitech USB-PS/2 Optical Mouse'
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Acontece que meu mouse é mapeado de uma forma muito simples: o botão físico 1 é o botão lógico 1, etc. Esse é o padrão; você pode ver algo diferente se você selecionou o modo canhoto por exemplo.
De qualquer forma, o botão do meio é o botão do mouse 2. Para desativá-lo, defina o que mostrar 2 a 0 (desativado). (Espero que, quando você estiver rolando, o botão gerador gere 4 ou 5 cliques, dependendo se você estiver rolando para cima ou para baixo. Essa é a maneira normal de uma roda de rolagem funcionar).
$ xinput set-button-map 'Logitech USB-PS/2 Optical Mouse' 1 0 3 4 5 6 7 8 9 10 11 12 13 14 15 16
O clique do meio será agora totalmente ignorado nesse único dispositivo. Para alterá-lo de volta, basta executar esse comando novamente, mas com o 2 de volta em seu lugar. (Naturalmente, você também pode alterar seus mapeamentos de botões da maneira que quiser; por exemplo, se você alternar entre 4 e 5, mudará a direção da rolagem).
Se isso acontecer, você só precisa organizar a última linha como parte de seus scripts de login.