Gambas France BETA


Pas de compte ? Incription

évenements clavier

12
AuteurMessages
nano54120#1 Posté le 10/1/2012 à 00:51:47
bonjour a tous,

je cherche a tester un événement clavier mais en dehors de mon application. je voudrais qu'elle tourne en arrière plan et qu'elle puisse détecter l'appuis sur le bouton de ma webcam. j'ai testé en form_keypress et le code retourné est 65535. mais je ne trouve pas comment tester les événements en dehors de l'application. merci pour votre aide.
spheris#2 Posté le 10/1/2012 à 10:55:38
Peut être peux-tu faire une autre appli gambas qui écrit des infos dans un fichier texte, et ton appli principale vient lire toutes les minutes ou secondes dedans pour voir si ce fichier a changé.

Peux-tu préciser ta demande, je ne saisi pas bien ta phrase :

mais je ne trouve pas comment tester les événements en dehors de l'application


Merci pour tes précisions.
A+
;)
nano54120#3 Posté le 10/1/2012 à 15:01:00
Merci pour ton aide.

Et bien voilà : j'ai utilisé un Form_Keypress pour détecter les appuis sur les touches du clavier. Pas de problème , ça fonctionne (avec le module qt.gb bien entendu) mais si je clique sur une autre fenêtre d'une autre application qui est sur le bureau , mon appli gambas tourne toujours mais les événements du clavier ne sont plus détectés puisque qu'elle n'est plus active (on dit Focus). C'est logique puisque mon test concerné les événements de la Form de mon aplli et seulement celle là. Moi je voudrais pouvoir tester les événement du Desktop mais il n'existe pas de Desktop_Keypress ! C'est à dire d'un niveau parent plus haut que mon appli en fait. Je sais faire çà sur Windows en VB mais je n'ai pas encore trouvé comment le faire sur Linux avec GB. J'avais pensé à utiliser Wait mais je n'ai pas réussi à faire quelque chose de correct. Les aides sur le net nem'on pas été d'un grand secours , il n'y a pas toujours d'exemples !
manu#4 Posté le 10/1/2012 à 17:00:39
Avec Gambas ca roule !Ok c'est beaucoup plus clair.... :)

Faut que tu ailles voir du coté de dBus, mais je ne l'ai jamais utilisé donc je sais pas si ca répondra à tes questions.

pour ce qui concerne Gambas va:

Ici : http://gambasdoc.org/help/doc/dbus?fr&v3

et Ici : http://gambasdoc.org/help/comp/gb.dbus?fr&v3

Voici pour l'introduction du 1er lien :


Le système DBus est (presque) entièrement pris en charge en Gambas 3, par le composant gb.dbus.
Qu’est-ce que c’est DBus ? c’est un " système de bus de messages ", c. à d. un petit programme qui peut transmettre différentes sortes de messages entre les applications. C’est comme le vieux système KDE 3 DCOP. Pour plus ample information, voir http://dbus.freedesktop.org.
Il y a normalement deux types de bus qui tournent sur votre machine : le " bus système ", qui est global et unique, et le " bus session ", qui est lancé pour chaque utilisateur connecté.
gb.dbus vous permet :
d’appeler toute Méthode ou propriété exportée par toute application connectée au bus.
d’intercepter tout signal émis par une interface quelconque.
d’exporter tout objet Gambas vers DBus.
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
spheris#5 Posté le 10/1/2012 à 18:37:26
...Je sais faire çà sur Windows en VB mais je n'ai pas encore trouvé en GB...


Juste pour info, peux-tu nous décrire comment tu t'y prends sous l'écran bleu?
Ce sera peut être une piste pour t'aider..
;)
Prokopy#6 Posté le 10/1/2012 à 19:54:25
Kinder PinguiSalut tout le monde,

Tout d'abord, il me semble que l'on ne peut pas (sans intervention de l'utilisateur, cad. configurer les raccourcis clavier) recevoir un évènement clavier lorsque la fenêtre n'a pas le focus.

Ensuite, est-ce que chez le bouton de ta webcam commande la mise en marche de celle-ci ? Dans ce cas il serait je pense préférable de détecter l'arrivée de la webcam plutôt que le bouton lui-même. :)
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
nano54120#7 Posté le 10/1/2012 à 22:04:28
Yesssss voilà plein d'idées!

Faut que tu ailles voir du coté de dBus


Intéressant mais comment se décrit le clavier dans le paramètre interface ? Quel est le terme ?
Je suis sous Gambas 2.21 celle qui est disponible sous les dépôts d'Ubuntu 11.04. J'ai vu que GB 3 était en béta alors je n'ai pas été tenté !

Juste pour info, peux-tu nous décrire comment tu t'y prends sous l'écran bleu?


Voici le code :

' Gambas class file
PUBLIC hScan AS Process


PUBLIC SUB Form_Open()
DIM sVersion AS String
DIM sData, sTemp AS String

ME.Center

SHELL "zbarcam --version" TO sVersion
IF sVersion = ""
IF Message.Question("zbarcam ne semble pas installé, voulez vous quand même continuer", "Continuer", "Abandonner") = 2 THEN
ME.close
ENDIF
ENDIF

END

PUBLIC SUB Lancer_Click()

TextArea1.Text = "C'est parti"
hScan = EXEC ["zbarcam", "/dev/video1", "--prescale=192x160", "--raw"] FOR READ AS "ScanBC"

END

PUBLIC SUB ScanBC_Read()

DIM sLine AS String

READ #LAST, sLine, -256
TextArea1.Text = TextArea1.Text & "\n" & sLine
' Desktop.SendKeys(sLine)
hScan.Kill

END

PUBLIC SUB ButClose_Click()

hScan.Kill
ME.Close

END

PUBLIC SUB Form_KeyPress()
IF Key.Code = 65535
hScan = EXEC ["zbarcam", "/dev/video0", "--prescale=192x160", "--raw"] FOR READ AS "ScanBC"
END IF

END

Sur ma form j'ai deux TexteArea et un bouton. Soit j’appuie sur le bouton de la form pour lancer le scan , soit j'appuie sur le bouton de la webcam. Dès que le QRcode est reconnu le process Zbarcam est killé et le flux est affiché dans le TexteArea1.

Je viens de m'apercevoir que le test du bouton de la camera n'est pas le même suivant la webcam ! J'ai une webcam qui renvoi un code clavier et une autre qui fait ... autrement mais pas sous un code clavier en tout cas! Ce n'est donc pas universel !

est-ce que chez le bouton de ta webcam commande la mise en marche de celle-ci ?


Oui, c'est mon appli qui lance Zbarcam à la demande du bouton. En fait mon but est de démonter la webcam pour intégrer les éléments électroniques dans un boîtier adapté à la lecture de petites cartes imprimées. Il y aura au fond de ce boîtier le bouton de la webcam et quand la carte appuiera dessus l'analyse se fera.

Dans ce cas il serait je pense préférable de détecter l'arrivée de la webcam plutôt que le bouton lui-même


Que veux tu dire par là ?
manu#8 Posté le 10/1/2012 à 22:20:00
Avec Gambas ca roule !j’espère que tu as regardé ma petite application avec zbarcam au moins ;) http://gambasforge.org/code-51-codezbarre.html .C'est en gambas3 mais le code est très simple, ca devrais marché en gambas2 ;)
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
nano54120#9 Posté le 10/1/2012 à 22:39:41
heuuu ton lien est mort!
nano54120#10 Posté le 10/1/2012 à 23:58:58
Compris il y a un point de trop après le html :no:

Oui ! J'avais vu ton appli et d'ailleurs je m'en suis inspiré pour comprendre comment récupérer le flux du process de Zbarcam. J'en profite pour te remercier de cette aide précieuse.

Je reviens sur le message de Prokopy : tu m'as donné l'idée de me passer du test du bouton. En fait, dès que le QRcode est détecté , j'ai un flux qui est lu et ça c'est signalé comment un événement. Je peux donc laisser tourner le process de Zbarcam et réagir à chaque lecture de flux.

Ce qui donne ceci:
' Gambas class file
PUBLIC hScan AS Process


PUBLIC SUB Form_Open()
DIM sVersion AS String
DIM sData, sTemp AS String

ME.Center

SHELL "zbarcam --version" TO sVersion
IF sVersion = ""
IF Message.Question("zbarcam ne semble pas installé, voulez vous quand même continuer", "Continuer", "Abandonner") = 2 THEN
ME.close
ENDIF
ENDIF

END

PUBLIC SUB Lancer_Click()

TextArea1.Text = "C'est parti"
hScan = EXEC ["zbarcam", "/dev/video0", "--prescale=192x160", "--raw"] FOR READ AS "ScanBC"

END

PUBLIC SUB ScanBC_Read()

DIM sLine AS String

READ #LAST, sLine, -256
TextArea1.Text = TextArea1.Text & sLine
Desktop.SendKeys(sLine)
END

PUBLIC SUB Form_KeyPress()
IF Key.Code = 65535
hScan = EXEC ["zbarcam", "/dev/video1", "--prescale=192x160", "--raw"] FOR READ AS "ScanBC"
END IF

END

PUBLIC SUB Form_Close()
hScan.Kill
ME.Close
END

Vous remarquerez Desktop.SendKeys(sLine). En fait mon but final et de pouvoir substituer le clavier par des QRcode qui lanceraient une séquence de caractères et pourrait ainsi remplir automatiquement les champs d'un formulaire comme par exemple un couple login/mot de passe. Ainsi vous glissez une carte dans un lecteur et votre identification se fait automatiquement. Et surtout vous pourriez avoir un mot de passe très long et compliqué sans à avoir à le retenir de tête ! Couplé à un logiciel générateur de QRcode , vous pourriez régénérer votre carte avec un nouveau mot de passe toujours aussi complexe.
manu#11 Posté le 11/1/2012 à 07:59:57
Avec Gambas ca roule !haa oui, je reconnais mon code là ;). Oui, je pense aussi qu'effectivement, tu peux te passer d'un bouton, puisque on gère la détection du code-barre très bien dans l'application gambas.

Donc, il y a plus de problème alors ?

PS pour insérer du code dans tes posts, utilises les balises prévues a cet effet (bouton "tête de gambas" dans l’éditeur)
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
nano54120#12 Posté le 11/1/2012 à 12:53:43
Non , pour ce cas j'ai détourné la question et je vais pouvoir avancer. Cependant cela limite mon champ d'action. Pour certains cas une demande manuelle aurait été pratique et donc un bouton à appuyer serai bien venu et j'aurais bien voulu savoir comment faire quand même.

Sinon j'ai une autre question : j'ai fait un QRcode avec le site http://qrcode.kaywa.com/fr et dans mon message il y a des caractères accentués. Ca plante à la lecture, il affiche des caractères japonais qu'il ne sait pas interpréter. Existe t il une solution ?

manu#13 Posté le 11/1/2012 à 13:11:12
Avec Gambas ca roule !
Non , pour ce cas j'ai détourné la question et je vais pouvoir avancer. Cependant cela limite mon champ d'action. Pour certains cas une demande manuelle aurait été pratique et donc un bouton à appuyer serai bien venu et j'aurais bien voulu savoir comment faire quand même.


As tu regardé du coté de dBus ? Je regarderai ce soir, mais vu ce que j'ai lu, si dbus le fait pas, ca me parais difficile. Bien que j'ai une autre petite idée....



Sinon j'ai une autre question : j'ai fait un QRcode avec le site http://qrcode.kaywa.com/fr et dans mon message il y a des caractères accentués. Ca plante à la lecture, il affiche des caractères japonais qu'il ne sait pas interpréter. Existe t il une solution ?



C'est un problème ZbarCam ca, faudrais voir ca avec "eux"... Mais le plus simple, c'est d'éviter ces caractères... ça doit être possible.
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
nano54120#14 Posté le 11/1/2012 à 20:30:19
Pour dBus je peut rien tester car je suis en gb v2 et ne me parle pas de compiler la version 3 car si il y a bien un truc où je suis en froid avec Linux c'est bien les compilations ! Ca n'a jamais marché !!! J'ai toujours suivi à la lettre les indications d'installation mais jamais de ma vie je n'ai réussi à faire um make ou make install ! Je fais des efforts pourtant mais je trouve ça d'une telle débilité sur Linux ! C'est vraiment son plus gros point noir ! Avec un package c'est tellement simple et bien construit. Quand je pense à tous ces sites qui nous narguent à dire : il suffit de taper make ... puis make install !!! Je n'ai jamais rien vu de plus incertain que cette procédure ! Désolé de m'énerver mais c'est vrai quoi à la fin ! Et je ne parle pas des dépendances .... :evil:
manu#15 Posté le 11/1/2012 à 21:14:51
Avec Gambas ca roule !nano, la compilation existe aussi sous windows, c'est indispensable pour tous les logiciels compilés et ils sont trés nombreux...
Mais c'est vrai, sur Linux , on hésite pas à l'utiliser, plus que sur windows. Mais c'est un autre problème.

De toute façon, gambas3 sera bientôt dans les dépôts de Ubuntu, car je suppose que tu es sur Ubuntu. Si tu es sur Fedora, arch, mageia ou autres distrib de ce type, Gambas3 est pakagé par la communauté (gambas) depuis longtemps mais bon...

Tu verra ca quand tu sera un peu plus à l'aise avec Linux et si cela t'interesse...
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
12