Hejto.pl
Dodaj post

Wpisz coś do wyszukania (minimum 2 znaki)

Wpis użytkownika 3zet w Hydepark

Osobistość

w Hydepark

7piorunów

Być może ktoś z będzie mi w stanie pomóc bo męczy mnie to od dłuższego czasu.

Mam sobie bardzo prosty skrypt który działa na zasadzie spamowania lewym przyciskiem myszy przez xdotool kiedy przycisk 12 na myszce jest trzymany, a kiedy przycisk 12 zostanie zwolniony skrypt się wyłącza. Działa perfekcyjnie kiedy odpalę go w terminalu.

Problem jest taki że nie mam pojęcia jak wywołać ten skrypt kiedy wcisnę przycisk 12 na myszce.
xbindkeys jednocześnie działa i nie działa - Widzę że skrypt odpalił i w logu xbindkeys lewy przycisk myszy spamuje jak popieprzony ale kliknięcia nie są zarejestrowane przez system, zero reakcji. Ktoś ma pomysł na to jak to zrobić? Dodam że podobny program, sxhkd działa tak samo.

Komentarze (16)

GURU3piorunów

@3zet A tak poza skryptem, to to jest fajne:
https://github.com/libratbag/piper

GitHub - libratbag/piper: GTK application to configure gaming devicesGTK application to configure gaming devices. Contribute to libratbag/piper development by creating an account on GitHub.GitHub
GURU3piorunów

@3zet Dobrze wiedzieć.

Osobistość0piorunów

@ataxbras posiadam, używam, ale nie można z tym zrobić nic użytecznego poza zmianą rgb :confused:

GURU3piorunów

@3zet Najpewniej wiąże się to z tym, że odpalasz clicker, ale go nie ubijasz. I masz kilka instancji, które się wzajemnie blokują poniżej progu wyzwolenia kliku.

GURU3piorunów

@3zet I tak jak wspomniałem, pewnie chodzi właśnie o xbindkeys z jakiegoś powodu. U mnie działa wywołanie samego xdotool z xbindkeys. Z pętlą nie sprawdzałem (może jutro). Ale wydaje się, że spokojnie stale wywołuje przy trzymaniu klawisza.

Osobistość0piorunów

@ataxbras Tamto co wysłałem też działa bez xbindkeys :slightly_smiling_face:
chodzi o to aby nie było niepotrzebnej pętli w tle która obciąża CPU jak w twoim przypadku. Skrypt po odpuszczeniu przycisku ma się po prostu zabić.

Pytanie z początku brzmi dlaczego system nie rejestruje kliknięć tym skryptem jeśli wyzwolony jest właśnie przez xbindkeys bo odpalony z terminala po prostu działa (jak trzymam przycisk 12 w trakcie odpalanie bo oczywiście prawie natychmiast się wyłączy jakbym tego nie zrobił)

GURU3piorunów

@3zet Wywaliłem break, dodałem sleep i działa (podpiąłem pod keyboard, literka f).

while true; do
if [ ! -z "$(/usr/bin/xinput --query-state xx | grep -o 'key\\[41\\]=down')" ]; then
/usr/bin/xdotool click --delay 18 1
else
sleep 0.01
fi
done

Działa bez xbindkeys.
Obawiam się, że problem może być w tym, że Twój skrypt robi test tylko jeśli warunek jest spełniony a jak nie to wypad. Tym samym powtarza test, który wyzwala xbindkeys. Ale w momencie uruchomienia, test może już być fałszywy.
Choć z tego co piszesz, to sytuacja jest inna. Być może dlatego, że masz po drodze xbindkeys.

Osobistość0piorunów

@ataxbras Jeszcze raz bo widzę nie ta pora. chcę aby ten skrypt napierdalał lpm co 18ms póki trzymam przycisk 12 na myszy co robi poprawnie. Jak go puszczę to skrypt ma się zabić co robi poprawnie.
Problem jest taki że jak zbinduję ten skrypt do przycisku 12 softem typu xbindkeys to mimo, że skrypt poprawnie odpala jak wcisnę przycisk 12 i się zabija jak go puszczę i log xbindkeys pokazuje że lpm wciska się co 18ms jak powinien to system nie rejestruje tych kliknięć.

GURU3piorunów

@3zet Byłoby, gdyby nie było pętli... Pętla wywołuje xdotool w kółko przy naciśnięciu.

Osobistość0piorunów

@ataxbras I tak ma być, opóźnienie jest zamiast sleepa.

GURU3piorunów

@3zet Nie mam swojego clickera (właśnie sprawdzałem, ale to było dawno i pewnie jest w jakiś backupach), ale z tego co pamiętam to w pętli powinien być jakiś, nawet mały, sleep. I to w pętli, a nie w poleceniu xdotool. Bo to co teraz robisz to wyzwalasz xdotool jak szalony w bardzo krótkiej pętli ze stałym opóźnieniem.

Osobistość0piorunów

@ataxbras

#!/bin/bash

while true; do
if [ ! -z "$(/usr/bin/xinput --query-state 17 | grep -o 'button\\[12\\]=down')" ]; then
/usr/bin/xdotool click --delay 18 1
else
break
fi
done

dosłownie takie gówienko.

GURU3piorunów

@3zet Nie widzę skryptu, więc nie mogę się do końca autorytatywnie wypowiedzieć. Ale miałem sytuację, gdzie pętla tworzyła procesy potomne. I też się chrzaniło, bo coś się demonizowało.
I też dotyczyło to clickera, bo zachciało mi się idle game (nie kojarzę już której). Po wyprostowaniu - działał.

Osobistość0piorunów

@ataxbras właśnie o to chodzi że nie, xbindkeys wywołuje skrypt tylko kiedy przycisk 12 jest wciśnięty i przerywa pętlę (kończy skrypt i ubija proces) kiedy przycisk jest odpuszczony. mimo to kliknięcia nie są rejestrowane przez system.

Osobistość2piorunów

@3zet to mi się spodobało najbardziej ( ͡° ͜ʖ ͡°) --> jednocześnie działa i nie działa - LINUX ( ͡° ͜ʖ ͡°)

Osobistość0piorunów

@gawafe1241 Najgorsze jest to że na windowsie użyłbym softu logitecha do zrobienia makra i bajlando.