Quelle est la façon la plus simple de détection d'entrée de clavier de python dans le terminal?
J'ai un simple script python, qui a des fonctions qui s'exécutent dans une boucle (je prends les capteurs).
while True:
print "Doing a function"
Si le clavier est pressée, je voudrais imprimer "touche enfoncée".
Quelle est la façon la plus simple de le faire en Python? J'ai cherché haut et bas. J'ai trouvé comment le faire avec pygame, mais je préfère le faire sans. Si je dois utiliser pygame est-il possible de ne pas avoir une fenêtre séparée pour l'application?:
import pygame, time
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption('Pygame Keyboard Test')
pygame.mouse.set_visible(0)
while True:
print "doing a function"
for event in pygame.event.get():
if (event.type == KEYUP) or (event.type == KEYDOWN):
print "key pressed"
time.sleep(0.1)
- Lire ici pour une alternative à l'aide seulement de la stdlib. De toute façon je pense que l'utilisation pygame ou des malédictions est en fait la chose la plus simple à faire.
- Je pense que vous avez peut-être raison. Pygame a aussi l'avantage de travailler sur pc / mac.
Vous devez vous connecter pour publier un commentaire.
La La Documentation Python offre cet extrait de code pour avoir des caractères à partir du clavier:
Vous pouvez également utiliser le PyHook module pour faire votre travail.
L'un de la façon la plus simple que j'ai trouvé est d'utiliser pynput module.peuvent être trouvés ici avec de beaux exemples
ci-dessus est l'exemple a travaillé pour moi et pour l'installer, allez
pour python 2:
pour python 3:
Vous pouvez utiliser les méthodes de http://docs.python.org/2/library/msvcrt.html si vous êtes sur Windows.
Ces fonctions, basé sur la ci-dessus, semblent bien fonctionner pour obtenir des caractères à partir du clavier (bloquants et non bloquants):
Cela a fonctionné pour moi sur macOS Sierra et Python 2.7.10 et 3.6.3
Je l'ai écrit plus facile à utiliser mise en œuvre pour @enrico.bacis de réponse. Il prend en charge de Linux(python2.7 et python3.5) et Windows(python2.7). Il peut prendre en charge Mac OS, mais je n'ai pas le tester. Si vous avez essayé sur un Mac, s'il vous plaît dites-moi le résultat.
Ceci est un exemple(en supposant que vous avez enregistré les codes ci-dessus dans "key_getter.py'):
Inspiré de code ci-dessus (crédits), le simple blocage (aka pas de consommation PROCESSEUR) version de macOS je cherchais:
2017-11-09, ÉDITÉ: Pas testé avec Python 3
space
n'est pas de travail, et en python 3esc
donne une erreur:TypeError: ord() expected a character, but string of length 0 found
"space"
chaîne, au lieu de" "
(espace char) lorsque l'espace est enfoncée?Cela doit s'exécuter en tant que root: (attention, il s'agit d'un système à l'échelle de keylogger)
Bien, depuis la date de cette question de poste, une bibliothèque Python abordé ce sujet.
pynput de la bibliothèque, de Moïse Palmer, est IDÉAL pour attraper les évènements souris et clavier d'une manière très simple.
(l'esprit le manque de 'je' dans pynput - je l'ai raté aussi... 😉 )