Wowxel/core/InputRecorder.py

46 lines
1.6 KiB
Python

import time
from pynput import keyboard, mouse
import pyautogui
from ast import literal_eval
# Classe pour enregistrer les événements
class InputRecorder:
def __init__(self, file_name="events_log.txt"):
self.events = []
self.file_name = file_name
# Fonction pour gérer les événements du clavier
def on_press_key(self, key):
try:
self.events.append(('keyboard', 'press', key.char, time.time()))
except AttributeError:
self.events.append(('keyboard', 'press', key.name, time.time()))
def on_release_key(self, key):
print(key, "############ key released", keyboard.Key.esc)
self.events.append(('keyboard', 'release', key, time.time()))
if key == keyboard.Key.esc:
return False
# Fonction pour gérer les événements de la souris
def on_click(self, x, y, button, pressed):
if pressed:
self.events.append(('mouse', 'click', button.name, (x, y), time.time()))
# Fonction pour démarrer l'enregistrement
def start_recording(self):
print("Appuie sur Échap pour arrêter l'enregistrement...")
with keyboard.Listener(on_press=self.on_press_key, on_release=self.on_release_key) as kl, mouse.Listener(on_click=self.on_click) as ml:
kl.join()
ml.join()
# Sauvegarder les événements dans un fichier
with open(self.file_name, "w") as f:
for event in self.events:
f.write(str(event) + "\n")
print(f"Les événements ont été sauvegardés dans {self.file_name}")
if __name__ == "__main__":
# Enregistrement des événements
recorder = InputRecorder()
recorder.start_recording()