Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 02/11/2020, à 13:32

xunil2003

Python détourner le clique d'une souris pour executer une commande

Bonjour,

Je souhaite créer un python un programme pour souris.
Le but et  de connecter une deuxième souris USB et de  modifier les cliques pour quelle exécute une commande en ligne .
Ainsi lorque l'utilisateur vas effectuer un clique sur la deuxième souris, selon le bouton de la souris, une commande prédéfinit sera exécuté.
j'ai récupérer dans une liste les  périfs des souris connecter au système afin de pouvoir indiquer la deuxième souris qui executera les commande avec un combobox.
La question est comment puis-je faire pour modifier le clique d'une souris ?




Les deux souris sont visible

laurent@Laurent-I7-9900K:~$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 006: ID 046d:0892 Logitech, Inc. OrbiCam
Bus 001 Device 004: ID 0409:0050 NEC Corp. 7-port hub
Bus 001 Device 003: ID 046d:c318 Logitech, Inc. Illuminated Keyboard
Bus 001 Device 002: ID 05e3:0745 Genesys Logic, Inc. Logilink CR0012
[b]Bus 001 Device 007: ID 046d:c016 Logitech, Inc. Optical Wheel Mouse
Bus 001 Device 005: ID 046d:c069 Logitech, Inc. M-U0007 [Corded Mouse M500][/b]
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
laurent@Laurent-I7-9900K:~$
laurent@Laurent-I7-9900K:~$ dmesg | grep -i mouse
[    1.142418] mousedev: PS/2 mouse device common for all mice
[    2.455327] usb 1-10: Product: USB Laser Mouse
[    2.586843] input: Logitech USB Laser Mouse as /devices/pci0000:00/0000:00:14.0/usb1/1-10/1-10:1.0/0003:046D:C069.0003/input/input6
[    2.586908] hid-generic 0003:046D:C069.0003: input,hidraw2: USB HID v1.10 Mouse [Logitech USB Laser Mouse] on usb-0000:00:14.0-10/input0
[10045.114589] usb 1-11: Product: Optical USB Mouse
[10045.117474] input: Logitech Optical USB Mouse as /devices/pci0000:00/0000:00:14.0/usb1/1-11/1-11:1.0/0003:046D:C016.0004/input/input22
[10045.174226] hid-generic 0003:046D:C016.0004: input,hidraw3: USB HID v1.10 Mouse [Logitech Optical USB Mouse] on usb-0000:00:14.0-11/input0
laurent@Laurent-I7-9900K:~$ 

Code python 2.7 pour récupérer dans une liste périf souris

def callbackFunc(event):
     print(comboExample.get())

def peripheriques_souris():
    sortie=os.popen("lsusb", "r").read().split("\n")
    print "sortie", sortie

    liste_perif_mouse = []
    for id, perif in enumerate(sortie):
        x = perif.find('Mouse')
        y = perif.count('Mouse')
        print x, y
        if y==0:
                print 'ne contient pas le mot Mouse'
        if y==1:
                print 'contient pas le mot Mouse'
                liste_perif_mouse.append(perif)
        
    print "liste_perif_mouse : ", liste_perif_mouse

    labelTop = tk.Label(Mafenetre_2,text = "          Veuillez sélectionner une souris          ")
    labelTop.grid(column=0, row=0)

    comboExample = Combobox(Mafenetre_2, values=liste_perif_mouse, postcommand=changeMonth, width=70)


    comboExample.grid(column=0, row=1)
    comboExample.current(1)

    comboExample.bind("<<ComboboxSelected>>", callbackFunc)

    bt2 = Button(Mafenetre_3, text="Quitter", command=Mafenetre.destroy).pack()

Comment modifier le clique de la de la deuxième ?

Merci.

Dernière modification par xunil2003 (Le 02/11/2020, à 16:38)


- AMD R9 5950x 64 Go Ram / Intel Pentium I7 960 - 12 Go Ram - 6 T0 - Kubuntu 12.04 x64 / Kubuntu 14.04 x64 / Kubuntu 16.04 x64 / Kubuntu 18.04 x64 /  Kubuntu 20.04 x64 / Mint
- DreamPlug Multi Boot / Marvel 1.22 Ghz / Architecture ARM / 512 Mo Ram / Carte-sd 16 Go class 10 / 5 Watts / Debian Squeeze 2.6.39.4
- Raspberry PI 1 / Raspberry PI 2 / Raspberry PI 3 / Raspberry PI 4 : 4Gb
JE SUIS CHARLIE

Hors ligne

#2 Le 03/11/2020, à 09:50

Compte supprimé

Re : Python détourner le clique d'une souris pour executer une commande

Bonjour,
On peut gerer les évènements souris depuis tkinter afin de lancer une fonction. 
Cependant tkinter ne dira pas quel est le périphérique à l'origine de l'événement souris...
La question devient : comment connaître le périphèrique (souris 1, souris 2, pad) qui est à l'origine de l'événement souris?

#3 Le 03/11/2020, à 10:23

ar barzh paour

Re : Python détourner le clique d'une souris pour executer une commande

en bash xinput donne des infos


PC          : B760M DS3H DDR4,  12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 22.04, 22.04, 23.04
Portable1 : Intel(R) Core(TM)2 Duo CPU     T6570  @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 23.04 ( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne

#4 Le 03/11/2020, à 12:08

xunil2003

Re : Python détourner le clique d'une souris pour executer une commande

bonjour,

Merci pour vos réponses.

Effectivement on peut gerer les évènements souris depuis tkinter

def clic_bouton_gauche(event):
    print "L'utilisateur à appuyé sur le bouton gauche"

def clic_bouton_milieu(event):
    print "L'utilisateur à appuyé sur le bouton du milieu" 

def clic_bouton_droit(event):
    print "L'utilisateur à appuyé sur le bouton droit"
    
def molette_tourne():
    print "L'utilisateur a tourner la molette de la souris, vers le haut ou vers le bas"
    
def double_clic_molette():
    print "L'utilisateur a fait un double clic avec la molette xx"    
   
def double_clic_bouton_gauche(event):
    print "L'utilisateur a fait un double clic avec le bouton gauche"
    
def double_clic_bouton_milieu(event):
    print "L'utilisateur a fait un double clic avec le bouton du milieu"    
    
def double_clic_bouton_droit(event):
    print "L'utilisateur a fait un double clic avec le bouton droit"
    
def press_bouton_gauche(event):
    print "L'utilisateur a fait un appui sur le bouton gauche de la souris"    
   
master.bind('<Button-1>',clic_bouton_gauche) 
master.bind('<Button-2>',clic_bouton_milieu) 
master.bind('<Button-3>',clic_bouton_droit) 
master.bind('<MouseWheel>',molette_tourne) 
master.bind('<Double-Button-1>',double_clic_bouton_gauche) 
master.bind('<Double-Button-2>',double_clic_bouton_milieu)
master.bind('<Double-Button-3>',double_clic_bouton_droit)
master.bind('<ButtonPress-1>',press_bouton_gauche)

Mais on ne peut pas sélectionner une souris spécifique qui doit gerer les évènements.
donc quelle autre solution j'ai ?

xinput je ne connais et celon la doc de ubuntu
https://doc.ubuntu-fr.org/xinput
xinput est un outil intégré à Ubuntu qui permet de gérer et de configurer les périphériques d'entrée comme les souris et les claviers.
xinput me retour

laurent@Laurent-I7-9900K:~$ xinput list | grep pointer
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech USB Laser Mouse                  id=9    [slave  pointer  (2)]
⎜   ↳ Logitech Optical USB Mouse                id=10   [slave  pointer  (2)]
⎜   ↳ Logitech Logitech Illuminated Keyboard Consumer Control   id=12   [slave  pointer  (2)]
⎜   ↳ lircd-uinput                              id=15   [slave  pointer  (2)]
laurent@Laurent-I7-9900K:~$ 

Mais xinput ne dit pas comment executer une commande en ligne de commande depuis un bouton ?

Merci d'avance pour votre aides et conseils ?

Dernière modification par xunil2003 (Le 03/11/2020, à 12:09)


- AMD R9 5950x 64 Go Ram / Intel Pentium I7 960 - 12 Go Ram - 6 T0 - Kubuntu 12.04 x64 / Kubuntu 14.04 x64 / Kubuntu 16.04 x64 / Kubuntu 18.04 x64 /  Kubuntu 20.04 x64 / Mint
- DreamPlug Multi Boot / Marvel 1.22 Ghz / Architecture ARM / 512 Mo Ram / Carte-sd 16 Go class 10 / 5 Watts / Debian Squeeze 2.6.39.4
- Raspberry PI 1 / Raspberry PI 2 / Raspberry PI 3 / Raspberry PI 4 : 4Gb
JE SUIS CHARLIE

Hors ligne

#5 Le 04/11/2020, à 07:39

Compte supprimé

Re : Python détourner le clique d'une souris pour executer une commande

Bonjour,
Je ne vois pas d'élément exploitable dans xinput.
Il semble que le fichier système /dev/input/mice contienne toutes les infos sur le périphérique à l'origine d'un evenement souris.
https://qastack.fr/unix/25601/how-do-mo … k-in-linux
Mais perso, j'ignore comment lire/utiliser son contenu....

#6 Le 06/11/2020, à 00:15

mandeb

Re : Python détourner le clique d'une souris pour executer une commande

Hors ligne