2017-09-22 1 views
0

En écrivant un programme CLI, j'aimerais lire les commandes Ctrl+<anything>.Lecture des touches Ctrl, Alt et Maj de python CLI

Comment puis-je écouter et gérer i.e.: touches de combinaison Ctrl+R de mon application CLI python?

Pour l'instant, il est nécessaire uniquement pour les environnements Linux. Une approche pythonique serait la meilleure option, mais je ne sais pas comment. A partir des signaux, il est possible de gérer des entrées bien connues, mais pas des frappes personnalisées.

+0

Vous devrez appeler directement dans les fonctions OS pour connaître l'état de ces touches. Quel système d'exploitation utilisez-vous? Bien que la combinaison de Control et d'une lettre génère un caractère que vous pouvez détecter. –

+0

Bien. Mais, il y a une façon pythonique de le faire, sans écrire une implémentation liée au système d'exploitation. Je crois que le rouge de Stdin est une approche propre ... Mais, je ne sais pas comment. – apast

+0

Votre objectif est-il d'utiliser une touche * any * avec Control, ou seulement les lettres de l'alphabet? –

Répondre

2

Pynput est un package configuré pour gérer les entrées de la souris et du clavier pour divers systèmes d'exploitation. This Github issue montre comment détecter les clés en attente. Si vous ne voulez pas suivre le lien:

from pynput import keyboard 

# The key combination to check 
COMBINATION = {keyboard.Key.cmd, keyboard.Key.ctrl} 

# The currently active modifiers 
current = set() 


def on_press(key): 
    if key in COMBINATION: 
     current.add(key) 
     if all(k in current for k in COMBINATION): 
      print('All modifiers active!') 
    if key == keyboard.Key.esc: 
     listener.stop() 


def on_release(key): 
    try: 
     current.remove(key) 
    except KeyError: 
     pass 


with keyboard.Listener(on_press=on_press, on_release=on_release) as listener: 
    listener.join()