Programar boto escriptori que canvia els botons del ratolí
Soc esquerra de mà, i tinc configurat el ratolí per esquerrans. De vegades em trobo que estic treballant amb algú altre i quan agafa el ratolí es lia amb els botons, per que estan intercanviats.
M’agradaria poder programar una aplicació senzilla, que clicant un boto que estigues a la barra d’escriptori, passes a ratolí esquerra o a dreta amb un sol clic. Es podria extendre el programa, que amb una convinació de tecles també t’ho fagi.
La idea és aquesta, però no se per on començar. Com programaríeu alguna aplicació per la barra d’escriptori gnome?
Suposo que hi ha un arxiu de text dins de linux que té la configuració del ratolí, només seria canviar el parametre aquest.






Hola, Pellroja.
Anem per parts. Per canviar el comportament del ratolí, el més senzill és utilitzar el "xmodmap". Amb aquest, podràs canviar tots els botons que tingui el ratolí. Sobretot, ens interessaran l’1 i el 3, que són els que canvien per a dretans i esquerrans. Per deixar el ratolí per a dretans, executa el següent:
[code:pxj6qdnu]xmodmap -e "pointer = 1 2 3 4 5"[/code:pxj6qdnu]
Per a deixar el ratolí per a esquerrans, utilitza el codi següent:
[code:pxj6qdnu]xmodmap -e "pointer = 3 2 1 4 5"[/code:pxj6qdnu]
Quan executis aquestes comandes, et dirà que només estàs canviant els primers 5 botons del ratolí, dels 32 que té disponibles, però ja és correcte. Amb això, i l'ajuda d'alguna variable d'entorn o d'algun fitxer d'ajuda, et pots crear una shell que vagi fent el switch d'un a l'altre. Només cal que tinguis en compte que em sembla que si poses l'ordinador a hibernar, quan es torni a engegar ho farà amb la teva configuració per defecte, i no la que tenies abans d'hibernar (suposo que és un mal menor, oi?
).
Respecte de com posar-ho en la barra del Gnome, si hi fas clic amb el botó dret i fas clic a "Afegeix", una de les opcions (a mi em surt la primera) és la de "Llançador d'aplicació personalitzat". Pots crear un nou llançador amb la shell que hagis creat, i posar-li com a icona un ratolí.
Espero això que et serveixi.
Salut!
Ha estat d'ajuda aquesta resposta?
LikeDislike[quote="oriolsbd":2up7uguk]Hola, Pellroja.
Anem per parts. Per canviar el comportament del ratolí, el més senzill és utilitzar el "xmodmap". Amb aquest, podràs canviar tots els botons que tingui el ratolí. Sobretot, ens interessaran l’1 i el 3, que són els que canvien per a dretans i esquerrans. Per deixar el ratolí per a dretans, executa el següent:
[code:2up7uguk]xmodmap -e "pointer = 1 2 3 4 5"[/code:2up7uguk]
Per a deixar el ratolí per a esquerrans, utilitza el codi següent:
[code:2up7uguk]xmodmap -e "pointer = 3 2 1 4 5"[/code:2up7uguk]
Quan executis aquestes comandes, et dirà que només estàs canviant els primers 5 botons del ratolí, dels 32 que té disponibles, però ja és correcte. Amb això, i l'ajuda d'alguna variable d'entorn o d'algun fitxer d'ajuda, et pots crear una shell que vagi fent el switch d'un a l'altre. Només cal que tinguis en compte que em sembla que si poses l'ordinador a hibernar, quan es torni a engegar ho farà amb la teva configuració per defecte, i no la que tenies abans d'hibernar (suposo que és un mal menor, oi?
).
Respecte de com posar-ho en la barra del Gnome, si hi fas clic amb el botó dret i fas clic a "Afegeix", una de les opcions (a mi em surt la primera) és la de "Llançador d'aplicació personalitzat". Pots crear un nou llançador amb la shell que hagis creat, i posar-li com a icona un ratolí.
Espero això que et serveixi.
Salut![/quote:2up7uguk]
Sorprès de lo ràpid que ho has solucionat
, jo ja m'estava imaginant programar en C, i no era tant complicat. M'agrada molt la teva idea, quan pugui la programo i la penjo aquí.
Gràcies per l'info
Ha estat d'ajuda aquesta resposta?
LikeDislikem’he posat a fer l’script amb bash, però m’ha sorgit un problema de variables. Si jo creo l’arxiu esquerrans.sh amb aquest codi.
[code:13g5kptm]
#!/bin/bash
export hand=right
export[/code:13g5kptm]
em crea la variable hand=right i em fa el llistat correcte de les variables.
però un cop faig l'export des de la consola, desapareix la variable del llistat, es com si un cop executa el llistat tornes a redeclarar les variables.
Ha estat d'ajuda aquesta resposta?
LikeDislikeHola,
El problema és que una variable només te la reconeix el procés que la modifica i els seus subprocessos. El terminal amb el que posteriorment la visualitzes és un procés pare (o independent del primer). Segurament t’anirà millor fer-ho amb un fitxer, deixant-lo a /tmp per tal que s’esborri quan s’apaga l’ordinador i així, cada cop, comencis de nou com a esquerrà. Per exemple, et podria valer alguna cosa de l’estil:
[code:3i88sps3]
#!/bin/bash
touch /tmp/esquerra.switch
if [ "`cat /tmp/esquerra.switch`" = "n" ]
then
echo "s" > /tmp/esquerra.switch
xmodmap -e "pointer = 3 2 1 4 5" 2> /dev/null
else
echo "n" > /tmp/esquerra.switch
xmodmap -e "pointer = 1 2 3 4 5" 2> /dev/null
fi
[/code:3i88sps3]
Segurament cal acabar de depurar-ho una mica, però la base pot ser aquesta.
Salut!
Ha estat d'ajuda aquesta resposta?
LikeDislikeEl codi està clavat
funciona perfecte, ja tinc botó. Si trobo errors, el milloraré i l’aniré penjant per aquí. Gràcies per l’ajuda 
Ha estat d'ajuda aquesta resposta?
LikeDislike