sotvm
@sotvm
Умный поймёт, а дураку и так всё равно.

Как записать выхлоп команды xinput test $id в переменную?

мне нужно по событию (ПКМ) получить координаты мышиного курсора,
и если они удовлетворяют заданным координатам ,находится в верхнем левом углу монитора,
то выполнить некое действие/команду.
не пойму как
##получаю id мышки ,чтобы знать с кого спрашивать :))
id=$(xinput |grep -Po 'MOUSE.+id=\d{1,2}' | grep -Po '\d{1,2}') ;
echo $id ;

##фильтрую выхлоп  xinput ,т.е вывожу только события по клику ПКМ.
xinput test $id | grep  -P 'button.+3'

##теперь мне нужно это  куда то записать  (в переменную/файл) ,НЕ понимаю как это сделать???
##после проверить эту переменную/файл ,если не пустой ,т.е.  был клик

##то получаю координаты  мыши ,если они попали в заданные рамки ,то выполняю 
if 
[[ $(xdotool getmouselocation | grep -Po 'x:[0-9]{1}\s+y:[0-9]{1}\s') != "" ]] ;
then echo "Ура-а-а-а ЗарАботАлА" ; 
fi
##удаляю/затираю переменную/файл
##и начинаю всё сначала


xinput test $id | grep -P 'button.+3' > /tmp/btn
такой варианты не проходит (файл остаётся пустым)

P.S.

прописал в когфиг xbindkeys (назначил ПКМ на выполнение скрипта)
"my-script"
b:3

НО это не то, что нужно, т.к. исходный функционал кнопки уже не будет работать.
ПКМ - это как правило контекстное меню .
мне же нужно чтобы оно отрабатывало , а уже после запустило и мой скрипт ,
в котором если проходит дополнительная проверка координат курсора ,то запускается нужная команда.
Короче говоря ,я хочу "нагородить" Горячие углы .
всё это есть в compiz ,но я хочу понять как это можно реализовать
"Ура-а-а-а ЗарАботАлА" °‿°

#!/bin/bash
##получаю id мышки ,чтобы знать с кого спрашивать :)
id=$(xinput |grep -Po 'MOUSE.+id=\d{1,2}' | grep -Po '\d{1,2}') ;

##бесконечный цикл с задержкой 0.7 сек.
while true; do sleep 0.7; 

##проверка нажата ли кнопка мыши ПКМ
if [[ $(xinput --query-state $id | grep -o '\[3]=down') != "" ]] ;
then
##получаю координаты  мыши ,если они попали в заданные рамки   0<x<∞  0<y<9
if [[ $(xdotool getmouselocation | grep -Po 'x:[0-9]{1,}\s+y:[0-9]{1}') != "" ]] ;
##то выполняю свой скрипт/команду
then my-script  ;
fi
fi
done;
  • Вопрос задан
  • 171 просмотр
Пригласить эксперта
Ответы на вопрос 1
POS_troi
@POS_troi
СадоМазо Админ, флудер, троль.
Не понял в чём конкретно выражается "не пойму как", но как понял ваш план работает но проблема именно в описанном
##теперь мне нужно это куда то записать (в переменную/файл) ,НЕ понимаю как это сделать???

Тогда так
В переменную
pressed_button=$(xinput test $id | grep  -P 'button.+3')
echo $pressed_button

В файл
xinput test $id | grep  -P 'button.+3' > /tmp/pressed_button


Если устраивает просто "наличие" чего либо там или там

P.S. на почитать https://www.opennet.ru/docs/RUS/bash_scripting_gui...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы