113 votes

Comment générer des événements clavier ?

bref résumé :

J'essaie de créer un programme qui envoie des événements de clavier à l'ordinateur. À toutes fins utiles, les événements simulés doivent être traités comme des frappes réelles sur le clavier.

poste original :

Je cherche un moyen de générer des événements clavier en utilisant python.

Supposons que la fonction reçoive une touche qu'elle doit simuler en la pressant, comme ceci :

keyboardevent('a') #lower case 'a'
keyboardevent('B') #upper case 'B'
keyboardevent('->') # right arrow key

def keyboardevent(key):
    #code that simulated 'key' being pressed on keyboard

Les exemples ci-dessus sont évidemment des exemples, mais ce que je recherche, c'est une bibliothèque, un module, ou autre, que je puisse utiliser pour simuler des événements clavier.

note : Ceci est différent de l'envoi de caractères vers des blocs-notes, ou de la saisie de texte dans des champs ou autres. Je veux que le script python simule un événement clavier réel, l'ordinateur pensera qu'il y a réellement un événement clavier.

Note supplémentaire :

Je ne veux pas envoyer les touches à la fenêtre active - je veux que le système croie que les touches du clavier sont pressées, différence subtile, car certaines fenêtres actives n'acceptent pas certaines combinaisons de touches, ou si je voulais utiliser des raccourcis clavier pour les processus d'arrière-plan à travers mon script, ils n'ont pas besoin de passer par la fenêtre active

Jusqu'à présent, j'ai examiné ces choses :

Générer des événements clavier pour l'application la plus en avant

Comment générer des événements d'appui sur les touches du clavier en Python ?

qui ne concernaient que la pomme et n'ont pas aidé du tout.

Et ceci :

Quel est le moyen le plus simple de simuler un clavier et une souris sur Python ?

Ce qui semble être ce dont j'ai besoin, mais je ne trouve pas la bibliothèque correspondante ni de documentation.

J'ai également cherché dans d'autres endroits, mais je n'ai pas encore trouvé de solution.

0voto

Hrishit Dey Points 1
    def keyboardevent():
         keyboard.press_and_release('a')
         keyboard.press_and_release('shift + b')

    keyboardevent()

0voto

import ctypes
user32 = ctypes.WinDLL('user32')

class KBDIN(ctypes.Structure): _fields_ = (("wVk", ctypes.c_ushort),("dwFlags", ctypes.c_ulong),("dwExtraInfo", ctypes.c_ulonglong))
class INPUT(ctypes.Structure): _fields_ = (("type", ctypes.c_ulong),("ki", KBDIN),("padding", ctypes.c_ubyte * 8))

def Press(key_code):   user32.SendInput(1, ctypes.byref(INPUT(type=1, ki=KBDIN(wVk=key_code))), 40)
def Release(key_code): user32.SendInput(1, ctypes.byref(INPUT(type=1, ki=KBDIN(wVk=key_code, dwFlags=2))), 40)

Codes de clés virtuelles

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X