[RÉSOLU]Détecter les touches appuyées au clavier

Vous voulez de l'aide ? Postez ici :)
Kalaeman
Posts: 11
Joined: 30 Mar 2012, 20:47

[RÉSOLU]Détecter les touches appuyées au clavier

Post by Kalaeman »

J'ai vu qu'il était possible de retourner la position actuelle de la souris. Est-il possible d'une quelconque façon de retourner les touches appuyées au clavier?
niconil
Posts: 93
Joined: 12 Mar 2012, 10:11

Re: Détecter les touches appuyées au clavier

Post by niconil »

pour saisir une chaine rentrée par l'utilisateur, j'utiliserai l'action entrée de donnée.

mais capter les évènements clavier déclenchés par un utilisateur sans qu'il le sache
je ne vois pas et ce n'est peut-etre pas dans le scope d'actionaz ...
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: Détecter les touches appuyées au clavier

Post by Jmgr »

Ce n'est pas possible pour l'instant, je suis en train de travailler sur un système qui permettrait d’appeler une fonction en JavaScript à chaque pression de touche, mais c'est plus complexe que ça n'en a l'air car il n'existe pas de norme au niveau du nommage des touches entre Windows et GNU/Linux. (d'ailleurs c'est aussi la raison pour laquelle il n'y a toujours pas d'option pour enregistrer un script à partir de ce que fait l'utilisateur)
"My software never has bugs. It just develops random features."
Kalaeman
Posts: 11
Joined: 30 Mar 2012, 20:47

Re: Détecter les touches appuyées au clavier

Post by Kalaeman »

Ok, j'imagine bien que c'est complexe s'il te faut inventer le système toi même. Bonne chance dans tous les cas :P
wismerheal
Posts: 56
Joined: 31 May 2011, 15:33

Re: Détecter les touches appuyées au clavier

Post by wismerheal »

Bonjour,

Vous pouvez cependant feinter en utilisant un programme tiers qui permet de récupérer la saisie et l'export dans un endroit donné sous forme de texte qui ensuite est exploitable par Actionaz 3.

Il vous suffira de proposer l'installation de ce logiciel tiers à vos utilisateurs.
xan2622
Posts: 6
Joined: 09 Jul 2016, 19:37

Re: [RÉSOLU]Détecter les touches appuyées au clavier

Post by xan2622 »

Bonjour.

Je déterre ce sujet car il correspond exactement à ce que je cherche.

J'ai fait une recherche et j'ai trouvé la même suggestion dans un autre sujet : https://www.jmgr.net/forum/viewtopic.ph ... uche#p4831
Rajouter une action qui attend la pression d'une touche par l'utilisateur. (Entrée, F1, F2... )
L'utilisation que j'imagine permettrait de faciliter la création de programmes à exécution passive.
J'entends par là que le programme reste en cours d'exécution (en attente) et que dès qu'une touche est appuyée par l'utilisateur,
le programme va automatiser une série d'actions différentes suivant la touche qui est saisie ...
Je ne saurais le dire autrement, ces deux sujets résument parfaitement ce que j'aimerais voir dans Actiona : la détection d'appui sur les touches.

Y a t-il du nouveau du côté développement de cette fonction ?
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: [RÉSOLU]Détecter les touches appuyées au clavier

Post by Jmgr »

Salut,

Oui c'est une fonctionnalité fréquemment demandée. Malheureusement les problèmes rencontrés il y a 6 ans sont toujours présents, et mon temps libre a encore réduit depuis cette époque...
Peut-être qu'une version intermédiaire pourrait permettre de sélectionner certaines touches seulement, comme cela pas de soucis avec la compatibilité entre les systèmes d'exploitation ?
Quoi qu'il en soit, je ne peux hélas pas promettre de date d'ajout pour cette fonctionnalité.
"My software never has bugs. It just develops random features."
xan2622
Posts: 6
Joined: 09 Jul 2016, 19:37

Re: [RÉSOLU]Détecter les touches appuyées au clavier

Post by xan2622 »

Pour le script que je fais en ce moment, je n'ai besoin que de la touche Entrée mais supporter que quelques touches ne serait qu'une façon bancale de régler le problème. :?
Autant faire ça bien dès le début (enfin je pense).

J'ai cherché du côté de Javascript pour voir si je ne pouvais pas ajouter un bout de code JS à mon script Actiona. Voici ce que j'ai trouvé :
https://medium.com/@uistephen/keyboarde ... dbad0a067a

Le hic c'est que je ne sais absolument pas programmer. Je ne sais pas comment faire pour capturer les touches avec Javascript.

S'il faut encourager le développeur de Actiona (si tu vois de qui je veux parler :) ), je suis prêt à mettre 50 € pour l'ajout complet et fonctionnel de cette fonction. Grâce à Bountysource, il est possible d'ajouter des bounty sur les issues Github. J'ai déjà remercié les développeurs d'autres projets open-source pour avoir corrigé ou implémenté des fonctionnalités.

Je pense que c'est vraiment une des fonctions qui manquent à Actiona, actuellement.
MDLE46
Posts: 108
Joined: 11 Nov 2016, 19:06

Re: [RÉSOLU]Détecter les touches appuyées au clavier

Post by MDLE46 »

Bonjour,


Je n'ai pas creusé, mais je pense ça pourrait le faire tout simplement en utilisant la librairie keypress.

Voir les sites ci-dessous :

http://jslibrairie.ek.la/keypress-js-a112737438

https://github.com/dmauro/Keypress/blob ... e#L728-864

https://dmauro.github.io/Keypress/

Cordialement.
MDLE46
MDLE46
Posts: 108
Joined: 11 Nov 2016, 19:06

Re: [RÉSOLU]Détecter les touches appuyées au clavier

Post by MDLE46 »

Re bjr, tout simplement c'est surement vite dit ... MDLE46.
MDLE46
Posts: 108
Joined: 11 Nov 2016, 19:06

Re: [RÉSOLU]Détecter les touches appuyées au clavier

Post by MDLE46 »

Re-bjr, Désolé, la librairie keypress ne fonctionne pas avec Actiona. MDLE46.
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: [RÉSOLU]Détecter les touches appuyées au clavier

Post by Jmgr »

Le Javascript (ou plus précisément l'Ecmascript) est un langage qui inclut très peu de fonctions. Le Javascript utilisé dans les navigateurs comporte beaucoup de fonctions spécifiques au Web, notamment pour capturer des touches.
Le Javascript inclu dans Actiona ne comporte pas toutes ces fonctions (Actiona n'est pas un navigateur Web), il possède néanmoins quelques fonctions supplémentaires : https://wiki.actiona.tools/doku.php?id=fr:code
En bref, on ne peut que difficilement mélanger des scripts Web avec des scripts Actiona, la plupart du temps il manquera des fonctions.

Merci pour la proposition de "bounty", je vais y réfléchir. Ce qui me manque actuellement c'est plus du temps que de l'argent.

Pour résumer les difficultés à mettre en place cette fonctionnalité :
  • Windows et Linux ont leur propre définition de ce qu'est une "touche", c'est à dire qu'il faut trouver un moyen de convertir une touche d'un OS à un autre de manière fiable
  • Il ne faut pas confondre une touche avec un caractère : la touche à l'emplacement du caractère "a" sur un clavier français va donner un caractère "q" sur un clavier US. Alors, qu'est-ce qu'on stocke ? Une touche ou un caractère ? (question ouverte)
  • Capturer une touche même si une autre application est en premier plan est compliqué, en général les systèmes d'exploitation interdisent ou limitent ce genre de fonctionnalité parce que ça permet d'enregistrer facilement toutes les pressions de touche (problème de sécurité) ; dans le cas du Web c'est facile puisque que c'est toujours le navigateur qui est au premier plan
"My software never has bugs. It just develops random features."
xan2622
Posts: 6
Joined: 09 Jul 2016, 19:37

Re: [RÉSOLU]Détecter les touches appuyées au clavier

Post by xan2622 »

  • Windows et Linux ont leur propre définition de ce qu'est une "touche", c'est à dire qu'il faut trouver un moyen de convertir une touche d'un OS à un autre de manière fiable
Actiona ne pourrait-il pas détecter l'OS sur lequel il tourne ? Et en fonction de ça, avoir un code de détection de touche différent en fonction de l'os ? Je sais, c'est pas super au niveau portabilité du code mais je pense que d'autres logiciels font comme ça, non ?
  • Il ne faut pas confondre une touche avec un caractère : la touche à l'emplacement du caractère "a" sur un clavier français va donner un caractère "q" sur un clavier US. Alors, qu'est-ce qu'on stocke ? Une touche ou un caractère ? (question ouverte)
Actiona pourrait, là aussi, détecter le "layout" du clavier (EN, FR, ES...) et en fonction de ça, stocker le bon caractère.
  • Capturer une touche même si une autre application est en premier plan est compliqué, en général les systèmes d'exploitation interdisent ou limitent ce genre de fonctionnalité parce que ça permet d'enregistrer facilement toutes les pressions de touche (problème de sécurité)
Est-ce qu'en lançant Actiona avec les "droits Administrateur", cela pourrait remédier au problème ?
D'une manière générale, je n'aime pas l'idée de lancer un logiciel avec des droits élevés mais si ça peut régler (temporairement) le problème..
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: [RÉSOLU]Détecter les touches appuyées au clavier

Post by Jmgr »

Actiona ne pourrait-il pas détecter l'OS sur lequel il tourne ? Et en fonction de ça, avoir un code de détection de touche différent en fonction de l'os ? Je sais, c'est pas super au niveau portabilité du code mais je pense que d'autres logiciels font comme ça, non ?
Bien sûr, l'idée ici serait d'avoir des fonctions de conversion par OS, pour pouvoir passer d'un identifiant unique à l'OS à un identifiant multiplateforme. Le problème c'est qu'il n'y a aucune convention à ce niveau. Certaines touches n'existent que sur Windows, d'autres que sous Linux. Et encore, je dis "Linux", mais il y a plusieurs sous-systèmes ayant chacun leur propre liste de touches supportées (EVDEV semble être le plus courant cela dit).
J'ai trouvé récemment un exemple de code source qui semble faire ça : https://github.com/depp/keycode
Malheureusement il ne semble pas prendre en compte la disposition (layout) du clavier et me propose "q" alors que j'ai tapé "a".
Actiona pourrait, là aussi, détecter le "layout" du clavier (EN, FR, ES...) et en fonction de ça, stocker le bon caractère.
C'est le même problème : il n'y a aucune convention entre les OS. Si je faisait un logiciel uniquement pour Windows ou Linux ça ne poserait pas de problème, mais ici j'ai besoin de prendre en compte au moins ces deux OS.
Est-ce qu'en lançant Actiona avec les "droits Administrateur", cela pourrait remédier au problème ?
D'une manière générale, je n'aime pas l'idée de lancer un logiciel avec des droits élevés mais si ça peut régler (temporairement) le problème..
Sans doute, mais je ne veux pas qu'on aie à lancer le programme avec des droits d'administrateur, c'est trop dangereux. De plus beaucoup de personnes n'ont pas ces droits sur leur ordinateur.

Bref, ce n'est pas insurmontable, c'est juste beaucoup plus compliqué que ça en a l'air :)
"My software never has bugs. It just develops random features."
xan2622
Posts: 6
Joined: 09 Jul 2016, 19:37

Re: [RÉSOLU]Détecter les touches appuyées au clavier

Post by xan2622 »

J'ai trouvé récemment un exemple de code source qui semble faire ça : https://github.com/depp/keycode
Malheureusement il ne semble pas prendre en compte la disposition (layout) du clavier et me propose "q" alors que j'ai tapé "a".
Ne serait-il pas possible de créer une issue sur ce dépôt Github pour demander des explications ou même demander de supporter les layouts différents (EN, FR, ES...) ? Je pense que ce depp sera content de voir que sa library est utilisée :)
Post Reply