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 08/10/2022, à 15:39

candide_du_2b

Touches rebond et touches lentes

Bonjour.
Linux et Ubuntu, possèdent des options pour valider ou invalider certaines variables système.
Je suis en train d'écrire un script Python dans lequel je voudrais que l'utilisateur ne puisse pas frapper plusieurs fois et rapidement, sur son clavier, surtout s'il s'agit de plusieurs fois, la même touche...
Par exemple il existe la variable système xset r qui permet de gérer la répétition des touches.
Ainsi si dans le script Python on fait os.system('xset r off') on désactive la répétition des touches
Bien évidemment en quittant le script, on fait os.system('xset r on') pour revenir à l'utilisation normale du système.
Ce que je souhaite c'est trouver le nom et les paramètre des variables système gérants les touches "rebond" et "touches lentes" de façon à ce que je puisse les modifier quand le script Python s'exécute, et tout remettre au valeurs normales en quittant.
Merci d'avance pour vos réponses.

Hors ligne

#2 Le 08/10/2022, à 18:17

Compte supprimé

Re : Touches rebond et touches lentes

Bonjour,
Si tu utilises une interface graphique, c'est au niveau de celle ci que l'on gère les évenements claviers.
Exemple avec tkinter; le code ci dessous n'acceptera l'appui d'une nouvelle touche que si une seconde s'est écoulée entre deux appuis.

import tkinter as tk
root = tk.Tk()
label = tk.Label(root, text="Saisie une touche :", font=("helvetica", 60))
label.grid()

def on_press(evt):
    root.unbind('<KeyPress>')
    label['text'] = label['text'] + evt.char
    root.after(1000, bind)
    print('out')

def bind():
    b = root.bind('<KeyPress>', on_press)
bind()
root.mainloop()

Sinon, si tu n'utilises pas d'interface graphique, regarde du coté de pynput/keyboard.

#3 Le 08/10/2022, à 22:05

candide_du_2b

Re : Touches rebond et touches lentes

Je vous remercie votre solution fonctionne parfaitement, d'autant plus qu'il me semble bien que les gens d' Ubuntu ont, par souci de sécurité, interdit l'accès au fichier xset contenant les variables système. J'ai mis du temps à vous répondre car j'ai dû faire quelques modifications à mon projet pour l'adapter à la solution que vous m'avez donnée.
Le résultat est parfait, et tout marche comme je le souhaitais. J'avais fait quelques essais avec la méthode time qui fonctionnaient aussi, mais je doit reconnaître que votre idée de la fonction me simplifie bien la vie.

def bind():
    b = fen1.bind('<Key>', mon_filtre)

bind()

est géniale.... Un grand merci, encore.

Dernière modification par candide_du_2b (Le 08/10/2022, à 22:06)

Hors ligne

#4 Le 08/10/2022, à 22:08

Compte supprimé

Re : Touches rebond et touches lentes

Avec plaisir.