Parancs futtatása eszköz érzékelésekor

Segítséget kaptál? Szívesen töltöd itt az idődet? Visszajársz hozzánk? Támogasd a munkákat: Ko-fi és Paypal!

Fórum: 

Sziasztok!

Van egy régi Wacom rajztáblám, és azon felbuzdulva, hogy a GIMP szintet lépett, feltelepítve azt, gondoltam előveszem a rajztáblát, bedugom, lássuk mi lesz :) Persze nem csalódtam a Linux Mint 22.1 azonnal felismerte, és már használhattam is.
 

A GIMP is szépen müködött vele, csakhogy ez touchpad is, nemcsak rajzeszköz.
a

~$ xsetwacom --list devices

parancs, a következőket adja

Wacom Intuos PT S 2 Pad pad         id: 18    type: PAD
Wacom Intuos PT S 2 Pen stylus      id: 19    type: STYLUS
Wacom Intuos PT S 2 Finger touch    id: 20    type: TOUCH

Tehát ezekkel az eszközökkel rendelkezik, és minden megy egyszerre, ami zavaró rajzolás közben, mert folyton elugrál a tollhegy, ahogy ráteszem a kezem, vagy a repülő menü jön fel. Így gondoltam, mert emlékeztem, hogy a a rendszerbeállításokban láttam digitalizáló táblát, megpróbálom ott kikapcsolni a touch funkciót.


Ám itt nincs erre lehetőség.

Ezért utána néztem, hogy ezt hogyan tehetném meg, és rátaláltam az xsetwacom --set lehetőségére, amivel szépen ki/be tudom kapcsolni a touch lehetőséget.

$ xsetwacom --set 20 Touch off

(A 20 az id-ja a touch érzékelőnek.) Ez rendben van, szépen működik, meg minden, ám, ha kihúzom, majd visszadugom az eszközt, ismét ki kell kapcsolnom a touch pad fukcióját.

Mit tehetnék, milyen lehetőségeim vannak arra, hogy egy utasítás akkor fusson le, amikor a linux érzékeli az eszközt, azaz, amikor csatlakoztattam?

udev

Értékelés: 

0
Még nincs értékelve

#1 Köszi!

Konkrétabbat nem tudnál mutatni esetleg? blush

Rákerestem, ám vagy nem jól, vagy megint eltévedtem az erdőben és nem találom a kiutat.

crying

udev

Értékelés: 

5
Átlag: 5 (1 szavazat)

#2 nagy vonalakban, mert nincs hasonló eszközöm, hogy kipróbáljam

van (vagy nincs) egy mappa: /etc/udev/rules.d/

Ebbe szkriptfájlokat lehet tenni, amiket hardver eseményenként végig néz és feldolgoz a rendszer. A fájlok megnevezése két számjeggyel kezdődik, és kiterjesztésük .rules.

A legkisebb számjegyű lesz előbb felhasználva, aztán a következő, és így tovább.

csinálj ide egy fájlt, legyen a neve 00-wacom.rules

Ebbe a fájlba kell beleírni a szabályt, amit szeretnél. Na most, ennek a szintaxisa C nyelv szerinti, nem kell megijedni, hanem kiokoskodni, hogyan működik. ha begépeled a man udev -t terminálba, akkor láthatod kb. milyen kulcsszavakat lehet használni. Általában egy sorban megírt parancsok szoktak sikeresek lenni, pl valami ilyesmi (alábbi szakasz egy sor):

KERNEL=="ide olyan azonosító kell, ami kernel szinten azonosít egy eszközt vagy családot, lehet csak egy részlet az elejéből és *", DRIVER!=" Ide a driver neve kell, ezt az inxi is megmutatja, pl. pendrájv esetén:usb-storage", RUN+="/bin/sh -c 'Ide írd a parancsot amit futtatni kell, pl. xsetwacom --set 20 Touch off '"

Lehet precízebben is konkrétabban is, de ehhez olyan ismeretek kellenek, amik nem biztos, hogy rendelkezésre állnak

valahogy így:

KERNEL=="kernelmodul neve", OWNER="root", GROUP="root"
SUBSYSTEM=="usb_device", ACTION=="add", RUN+="/usr/lib/mappaneve/szkriptfájl.sh"
SUBSYSTEM=="usb_device", ACTION=="remove", RUN+="/usr/lib/mappaneve/másikszkriptfájl.sh"

fenti USB eszköz behelyezésekor, meg eltávolításkor is lefuttat egy szkriptet.

ha vannak fájlok a /etc/udev/rules.d/ mappában, akkor puskázhatsz, bár nem valószínű hogy lennének.

 

udev

Értékelés: 

0
Még nincs értékelve

#4 Kedves István!

Hálásan köszönöm! 
Ez egy pont olyan leírásnak és magyarázatnak tűnik, amiből egy magam fajta gyenge felfogású is tökéletesen meg tudja érteni, hogy mit kell csinálni. Megnéztem, és van  /etc/udev/rules.d/ könyvtár a gépemen, van is benne gy fájl, bár az üres :) De sebaj.

"Sajnos" most indul pár perc múlva a javascript kurzusom, ami csak késő délután ér véget. Ám ahogy egyet szusszantam, ki is próbálom, és beszámolok a fejleményekről!

Még egyszer hálásan köszönöm!

udev

Értékelés: 

0
Még nincs értékelve

#4

Kisérletezgetem.

Próbálom ígyis, próbálom úgy is.
Sikerült írnom egy bash fájlt, ami szépen lefut, ha kézzel lefuttatom, és teszi a dolgát.

#!/bin/bash<
#
# Script to toggle Touch state of Wacom Intuos Pro
#
#
########################################################

#TOUCH=$(xsetwacom list dev | grep -o ".*touch")
#STATE="off"
#xsetwacom set "$TOUCH" Touch "$STATE"

TOUCH=$(xsetwacom list dev | grep -o ".*touch")
STATE=$(xsetwacom get "$TOUCH" Touch)

if [[ $STATE = "on" ]];then
    STATE="off"
    xsetwacom set "$TOUCH" Touch "$STATE"
fi

echo "Wacom tablet: Touch $STATE"

exit

Szóval a fenti bash szépen teszi a dolgát.

Viszont a .rules fájlal már nem boldogulok.
HA kézzel lefuttatom a .rules fájlt, akkor a következő hibaüzenetet kapom a terminálban:

etc/udev/rules.d/80-wacom.rules: 1: RUN+=/usr/lib/wacom/wacom-setup.sh: not found

Holott létezik ezen a helyen a wacom-setup.sh. Ha kézzel lefuttatom szépen müködik.

80-wacom.rules így néz ki:

ACTION=="add", SUBSYSTEM=="usb_device", DRIVER=="wacom", RUN+="/usr/lib/wacom/wacom-setup.sh"

Próbálkoztam mindenhogy, ám a RUN-ig nem jutott el a kód. Ebben a formában legalább eljut a RUN-ig. Csak,hogy nem találja a futtatni kívánt fájlt. Tettem már a bash fájlt a /usr/local/bin/ helyre is. Ott is a fenti a hibaüzenetet kaptam.