2017-07-03 6 views
0

J'essaie actuellement de créer un script python simple pour créer des données vocales.enregistrement pendant que la touche est enfoncée, arrêt lorsque la touche est relâchée

L'idée avec le script est que commence l'enregistrement en utilisant pyaudio, quand une touche est maintenue enfoncée, et arrête l'enregistrement lorsque la touche est relâchée.

Je suis actuellement un peu confus sur la façon dont je devrais mettre en œuvre le while key hold/stop at release mechanism.

j'ai trouvé cette bibliothèque keyboard, mais ne peut pas donner un sens si elle intègre cette forme de mécanisme?

+1

Voir les commentaires de [cette] (https://stackoverflow.com/questions/40649634/determine-length-of-keypress-in-python) question. Cela pourrait vous aider. –

+0

semblent tout comme un peu trop pour cette tâche simple @ P.Siehr –

Répondre

1

Selon this code dans la source de la bibliothèque "clavier", il fournit un tel mécanisme pour détecter si une touche est actuellement pressée. Vous pouvez donc faire une boucle while pour vérifier si l'utilisateur a libéré cette clé.

#/usr/bin/python 
# file: __init__.py 
# ... 
def is_pressed(key): 
    """ 
    Returns True if the key is pressed. 
     is_pressed(57) -> True 
     is_pressed('space') -> True 
     is_pressed('ctrl+space') -> True 
    """ 
    _listener.start_if_necessary() 
    if is_number(key): 
     return key in _pressed_events 
    elif len(key) > 1 and ('+' in key or ',' in key): 
     parts = canonicalize(key) 
     if len(parts) > 1: 
      raise ValueError('Cannot check status of multi-step combination ({}).'.format(key)) 
     return all(is_pressed(part) for part in parts[0]) 
    else: 
     for event in _pressed_events.values(): 
      if matches(event, key): 
       return True 
     return False 
+0

'tout keyboard.is_pressed ('espace'):' me donne un message d'erreur: 'lever ImportError (« Vous devez être root pour utiliser cette bibliothèque sur linux ') ImportError: Vous devez être root pour utiliser cette bibliothèque sur linux.' Et en cours d'exécution comme sudo me donne un message d'erreur: 'IOError: [Errno 1] opération non autorisée:./dev/uinput'' –

+0

'keyboard' ne semble fonctionner qu'avec Windows et Linux. Tout ce qui fonctionne à la fois sur Linux et Windows. –

+0

@open_ey, Utilisez-vous MacOS? – Sajuuk