Bon, j'ai retrouvé le code, effectivement il est vraiment dégueu. J'ai pas de tablette graphique pour le tester, en d'autres termes je ne peux avancer dessus que lorsque des personnes ayant des tablettes graphiques non reconnues passent sur le forum. Le bouton "sauvegarder" sert à créer un script bash qui permet de récupérer la configuration de la tablette.Normalement ce qui est affiché est implémenté et possiblement fonctionnel 🙂 (je vois déjà une grosse bêtise sur le stylet)
Je laisse le code ici pour pas galérer autant pour le retrouver
# -*- coding: utf-8 -*-
global nomPad
global nomStylet
nomPad="Wacom Intuos S 2 Pad pad"
nomStylet="Wacom Intuos S 2 Pen stylus"
global listeBoutonsPad
global listeBoutonsStylet
from tkinter import *
import subprocess
import os
import pickle
fen = Tk()
#entrée: liste de lettres correspondant aux boutons pour en trouver leurs ID
#sortie: liste des id associées
def listeID(liste):
l=[]
for lettre in list(liste):
l+=[ord(lettre)-97+1] # 97=ord("a")
l.sort()
return (l)
def appliquer(): # récupère l'état des boutons et applique la configuration à la tablette
global listeBoutonsPad
global listeBoutonsStylet
#rotation du pad
os.system("xsetwacom set '"+nomPad+"' Rotate "+valeurRot.get())
#Threshold
os.system("xsetwacom set '"+nomPad+"' Threshold "+boxThreshold.get())
#Boutons du pad
for i in range(0,len(entryboutonsPad)):
os.system("xsetwacom set '"+nomPad+"' Button "+ str(listeBoutonsPad[i])+" "+entryboutonsPad[i].get())
for i in range(0,len(entryboutonsStylet)):
os.system("xsetwacom set '"+nomPad+"' Button "+ str(listeBoutonsStylet[i])+" "+entryboutonsStylet[i].get())
def sauvegarder():
monport=open("wacomGUI.sh","w")
global listeBoutonsPad
global listeBoutonsStylet
monport.write("#!/bin/bash\n")
#rotation du pad
monport.write("xsetwacom set '"+nomPad+"' Rotate "+valeurRot.get())
monport.write("\n")
#Threshold
monport.write("xsetwacom set '"+nomPad+"' Threshold "+boxThreshold.get())
monport.write("\n")
#Boutons du pad
for i in range(0,len(entryboutonsPad)):
monport.write("xsetwacom set '"+nomPad+"' Button "+ str(listeBoutonsPad[i])+" "+entryboutonsPad[i].get())
monport.write("\n")
for i in range(0,len(entryboutonsStylet)):
monport.write("xsetwacom set '"+nomPad+"' Button "+ str(listeBoutonsStylet[i])+" "+entryboutonsStylet[i].get())
monport.write("\n")
monport.close()
def creer():
#gestion des widgets
BoutonCreer.grid_forget()
labelinfo.config(text="Cliquez sur l'entrée devant entreePad, et appuyez sur chaque bouton du pad.\n Ne faites pas de même avec le stylet (la mine qui touche le pad est considéré comme un bouton aussi")
labelBoutonsPad.grid(row=2, column=1)
labelBoutonsStylet.grid(row=3, column=1)
entreePad.grid(row=2,column=2)
entreeStylet.grid(row=3,column=2)
BoutonOK.grid(row=4,column=2)
#correpondance boutons <-> lettres alphabet
alphabet=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
for i in range(1,20):
os.system("xsetwacom set '"+nomPad+"' Button "+str(i)+" 'key "+alphabet[i-1]+"'")
for i in range(2,6):
os.system("xsetwacom set '"+nomStylet+"' Button "+str(i)+" 'key "+alphabet[i-1]+"'")
def ok():
global listeBoutonsPad
global listeBoutonsStylet
listeBoutonsPad=listeID(list(entreePad.get()))
listeBoutonsStylet=listeID(list(entreeStylet.get()))
labelBoutonsPad.grid_forget()
labelBoutonsStylet.grid_forget()
entreePad.grid_forget()
entreeStylet.grid_forget()
BoutonOK.grid_forget()
Etape3(listeBoutonsPad, listeBoutonsStylet)
def Etape3(listeBoutonsPad, listeBoutonsStylet):
labelinfo.config(text="Sauvegarder permet d'enregistrer la configuration dans un fichier (pour l'instant pas appliquée au branchement de la tablette) et appliquer permet d'appliquer la configuration")
frameThreshold.grid(row=3,column=1)
BoutonAppliquer.grid(row=3,column=2)
frameRot.grid(row=2, column=1)
global entryboutonsPad
entryboutonsPad=[]
k=0
for i in listeBoutonsPad:
entryboutonsPad.append(Entry(frameBoutonsPad, textvariable="", width=30))
labelBoutonsPadEtape3=Label(frameBoutonsPad, text="Bouton du pad "+str(i))
labelBoutonsPadEtape3.grid(row=i, column=1)
entryboutonsPad[k].grid(row=i, column=2)
k=k+1
frameBoutonsPad.grid(row=4,column=1)
global entryboutonsStylet
entryboutonsStylet=[]
k=0
for i in listeBoutonsStylet:
entryboutonsStylet.append(Entry(frameBoutonsStylet, textvariable="", width=30))
labelBoutonsStyletEtape3=Label(frameBoutonsStylet, text="Bouton du stylet "+str(i))
labelBoutonsStyletEtape3.grid(row=i, column=1)
entryboutonsStylet[k].grid(row=i, column=2)
k=k+1
frameBoutonsStylet.grid(row=5,column=1)
BoutonSauvegarder.grid(row=3,column=3)
############################# Initialisation des widgets ##############################
#Etape 1: accueil
labelinfo=Label(fen, text="Cliquez sur Créer pour commencer la configuration de la tablette")
BoutonCreer=Button(fen,text="Créer",font=("courier",18,"bold"),command=creer)
#Etape 2: après appui sur créer
labelBoutonsPad=Label(fen, text="Pad:")
labelBoutonsStylet=Label(fen, text="Stylet:")
valeurPad = StringVar()
entreePad = Entry(fen, textvariable=valeurPad, width=30)
valeurStylet = StringVar()
entreeStylet = Entry(fen, textvariable=valeurStylet, width=30)
BoutonOK=Button(fen,text="OK",font=("courier",18,"bold"),command=ok)
#Etape 3: après avoir rempli les champs de "créer"
frameThreshold=Frame(fen, borderwidth=2, relief=GROOVE)
labelThreshold=Label(frameThreshold, text="Threshold:")
boxThreshold=Spinbox(frameThreshold, from_=0, to=2047)
labelThreshold.grid(row=1,column=1)
boxThreshold.grid(row=1,column=2)
frameRot=Frame(fen, borderwidth=2, relief=GROOVE)
valeurRot = StringVar()
valeurRot.set("none")
boutonrot1 = Radiobutton(frameRot, text="Pas de rotation", variable=valeurRot, value="none")
boutonrot2 = Radiobutton(frameRot, text="Rotation à 180 degrés", variable=valeurRot, value="half")
boutonrot3 = Radiobutton(frameRot, text="Rotation à 90 degrés", variable=valeurRot, value="cw")
boutonrot4 = Radiobutton(frameRot, text="Rotation à -90 degrés", variable=valeurRot, value="ccw")
labelRot=Label(frameRot, text="rotation du pad:")
boutonrot1.grid(row=1,column=2)
boutonrot2.grid(row=2,column=2)
boutonrot3.grid(row=3,column=2)
boutonrot4.grid(row=4,column=2)
labelRot.grid(row=2, column=1)
BoutonAppliquer=Button(fen,text="Appliquer",font=("courier",18,"bold"),command=appliquer)
BoutonSauvegarder=Button(fen,text="Sauvegarder",font=("courier",18,"bold"),command=sauvegarder)
frameBoutonsPad=Frame(fen, borderwidth=2, relief=GROOVE)
frameBoutonsStylet=Frame(fen, borderwidth=2, relief=GROOVE)
########################### placement des widgets (etape 1) #####################################
labelinfo.grid(row=1,column=1)
BoutonCreer.grid(row=2,column=2)
fen.mainloop()
#subprocess.check_output(["xsetwacom", "list", "devices"])==b'':
Je pense que le code est à réécrire entièrement