xinput script para dispositivo com 2 entradas

0

Eu tenho um mouse trackball Elecom que eu quero trocar os botões esquerdo e direito do mouse. Usando xinput | grep "ELECOM ELECOM TrackBall Mouse" , recebo a seguinte saída:

⎜   ↳ ELECOM ELECOM TrackBall Mouse             id=10   [slave  pointer  (2)]
    ↳ ELECOM ELECOM TrackBall Mouse             id=12   [slave  keyboard (3)]

Eu criei um script para trocar os botões esquerdo e direito do mouse que são executados na inicialização:

#!/bin/sh

# ELECOM TrackBall Mouse
# swap middle and right buttons xinput --set-button-map 10 3 2 1

O problema com o script é que toda vez que você reinicia o computador, o número de identificação do trackball muda, então às vezes o script funciona e outras vezes não. Não consigo digitar o script no nome do dispositivo, porque há duas entradas de dispositivo. Eu preciso de uma maneira de chave para o nome do dispositivo E a designação de ponteiro escravo, mas não tenho idéia de como fazer isso.

Agradecemos antecipadamente por qualquer ajuda!

    
por AJ Reissig 01.06.2018 / 15:21

1 resposta

1

Você pode usar sed para extrair o id diretamente no script:

#!/bin/bash
# get current id from xinput
id=$(xinput | sed -nE 's/.*ELECOM ELECOM TrackBall Mouse.*id=([0-9]+).*pointer.*//p')
# swap middle and right buttons
xinput --set-button-map $id 3 2 1

O comando sed pesquisa a saída de xinput para a linha correspondente, substitui-a pelo número de identificação e p apenas por rints ( -n ) dessa linha, ou seja, apenas o número. Esse id é salvo como variável $id , que é simplesmente usado no comando xinput . Pode-se até mesmo deixar de fora a variável e apenas escrever

xinput --set-button-map $(xinput | sed …) 3 2 1

mas isso não está muito claro - em um script, prefiro a variável com um comentário explicativo.

Você também pode grep duas vezes para extrair o ID correto:

xinput | grep pointer | grep -oP "ELECOM ELECOM TrackBall Mouse *id=\K[0-9]+"

O primeiro grep exclui todas as linhas que não contêm "ponteiro", o segundo imprime apenas o ID na linha que contém "ELECOM ELECOM TrackBall Mouse" usando Magia negra PCRE .

    
por dessert 01.06.2018 / 18:21