сценарий xinput для устройства с 2 записями

У меня есть мышь шарового манипулятора Elecom, что я хочу подкачать левые и правые кнопки мыши. Используя xinput | grep "ELECOM ELECOM TrackBall Mouse"Я получаю следующий вывод:

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

Я создал сценарий для свопинга левых и правых кнопок мыши, который работает при начальной загрузке:

#!/bin/sh

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

Проблема со сценарием состоит в том, что каждый раз Вы перезапускаете компьютер, изменения идентификационного номера шарового манипулятора, поэтому иногда работы сценария, и иногда он не делает. Я не могу адресовать сценарий названию устройства, потому что существует две записи устройства. Мне нужен способ ввести к названию устройства И ведомого обозначения указателя, но понятия не иметь, как сделать это.

Заранее спасибо за любую справку!

0
задан 1 June 2018 в 06:21

1 ответ

Можно использовать sed извлечь идентификатор непосредственно в сценарии:

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

sed поиски команды xinputвывод для согласующего отрезка длинной линии, замены это с идентификационным номером и pарендные платы только (-n) эта строка, т.е. просто число. Этот идентификатор сохраняется как переменная $id который затем просто используется в xinput команда. Можно было даже не учесть переменную и просто записать

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

но это не очень ясно – в сценарии, я предпочитаю переменную с пояснительным текстом.


Вы могли также grep два раза извлечь корректный идентификатор:

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

Первое grep исключает каждую строку, не содержащую “указатель”, второй печатает просто идентификатор в строке, содержащей “мышь ELECOM ELECOM TrackBall” с помощью черной магии PCRE.

1
ответ дан 29 October 2019 в 05:18

Другие вопросы по тегам:

Похожие вопросы: