Focus sur icones du bureau

Bonjour,

Pour rappel je suis déficient visuel.

Je continue avec Python ei j’ai écrit un Player qui utilise espeak pour vocaliser un texte.
Dans une petite interface tkinter j’ai “bindé” des raccourcis pour réaliser des fonctions.

Je voudrais aller plus loin et récupérer le focus clavier des icones du bureau comme on le ferait avec les widgets de tkinter.
Evidemment ce n’est pas avec tkinter que je ferais cela.

J’étudie le module Xlib et je tourne autour uniquement du type window sans deviner où trouver les objets comme les icones.
Une icone pourrait-elle être une window “réduite” ?

Je ne trouve aucun post sur Xlib sur afpy.org.

Ce n’est peut-être pas la bonne méthode pour connaître quelle icone a le focus.

Auriez-vous une solution ou piste ?

Cordialement
pierre estrem

Je vais essayer d’être exact…

Je voudrais utiliser un module qui fasse exactement ce que fait tkinter mais appliquer au bureau XFCE.

Autrement dit pouvoir intercepter les frappes clavier (bind) et connaître quel objet a le focus.

Le script devrait donc tourner en arrière-plan.

Merci
pierre estrem

Ca me semble devoir être fait au niveau système en effet. Je vais voir si je peux ramener une personne qui a bossé sur xlib pour voir s’il a une idée.

Bonjour,

Grand merci pour ce retour ! :slight_smile:

Tel que j’ai étudié Xlib je comprenais qu’on manipulait des fenêtres et
fait penser aussi à la commande “wmctrl” qui donne des infos sur les
desktops/windows mais rien sur le focus sur ces desktops, et c’est tout
ce que je souhaite.

J’ai vu du code qui semblait répondre mais dans un langage inconnu
(AutoIt ?).

Je reste sur le pont pour vous dire où j’en suis sur ce sujet.

Cordialement
pierre estrem

Bonjour,
Regarde “xdotool getwindowfocus”. C’est une commande du shell…
Imaginons que tu es sur une fenetre A:
FOCUS_A = int(subprocess.run(["xdotool getwindowfocus"], shell=True, stdout=subprocess.PIPE).stdout)
si par la suite tu veux savoir si c’est la fenetre A qui a le focus:

if int(subprocess.run(["xdotool getwindowfocus", shell=True, stdout=subprocess.PIPE).stdout) == FOCUS: 

Bonsoir,

Hélas xdotool (équivalent au module xdo de Python) retourne l’ID d’une
fenêtre alors que le Bureau XFCE est autre chose qu’une fenêtre.

On est plus bas dans le système, serveur X ?

Je vais voir du côté des modules Python relatif au keyboard.
Ca pourrait le faire.

Merci pour votre contribution

Bonjour,

Un petit retour pour vous informer que le bon module pour intercepter
les frappes du clavier se nomme “pyxhook” et qu’il faut utiliser la
classe HookManager() ainsi :

from pyxhook import HookManager ... hm = HookManager() hm.HookKeyboard() hm.KeyDown = onKeyDown hm.KeyUp = onKeyUp hm.start()

pierre estrem

1 « J'aime »