Browse Source

Refactor KeyTester to KeyLogger for improved key event logging and SDL2 integration

master
Matteo Benedetto 4 months ago
parent
commit
1ea8db735f
  1. 80
      key.py

80
key.py

@ -2,54 +2,44 @@
import sys import sys
import os import os
sys.path.append(os.path.dirname(os.path.abspath(__file__))) import sdl2
import sdl2.ext
from engine import sdl2 as engine class KeyLogger:
class KeyTester:
def __init__(self): def __init__(self):
self.render_engine = engine.GameWindow(800, 600, 1, "Key Tester", # Initialize SDL2
key_callback=(self.key_pressed, self.key_released, None)) sdl2.ext.init()
self.pressed_keys = [] self.window = sdl2.ext.Window("Key Logger", size=(640, 480))
self.last_key = "None" self.window.show()
self.running = True
def key_pressed(self, key): self.key_down = True
self.last_key = f"PRESSED: {key}"
if key not in self.pressed_keys:
self.pressed_keys.append(key)
print(f"Key pressed: {key}")
def key_released(self, key):
self.last_key = f"RELEASED: {key}"
if key in self.pressed_keys:
self.pressed_keys.remove(key)
print(f"Key released: {key}")
def update_display(self):
# Mostra l'ultimo tasto premuto/rilasciato
self.render_engine.draw_text(f"Last action: {self.last_key}",
self.render_engine.fonts[20], (10, 10),
engine.sdl2.ext.Color(255, 255, 255))
# Mostra tutti i tasti attualmente premuti
pressed_text = "Currently pressed: " + ", ".join(self.pressed_keys) if self.pressed_keys else "Currently pressed: None"
self.render_engine.draw_text(pressed_text,
self.render_engine.fonts[16], (10, 40),
engine.sdl2.ext.Color(255, 255, 255))
# Istruzioni
self.render_engine.draw_text("Press any key to test. ESC to quit.",
self.render_engine.fonts[14], (10, 80),
engine.sdl2.ext.Color(200, 200, 200))
# Continua il loop
self.render_engine.new_cycle(60, self.update_display)
def run(self): def run(self):
print("Key Tester started. Press keys to see them displayed.") while self.running:
print("Press ESC to quit.") # Handle SDL events
self.render_engine.mainloop(update=self.update_display) events = sdl2.ext.get_events()
for event in events:
if event.type == sdl2.SDL_KEYDOWN:
keycode = event.key.keysym.sym
# Log keycode to file
open("keycode.txt", "a").write(f"Pressed: {keycode}\n")
elif event.type == sdl2.SDL_KEYUP:
keycode = event.key.keysym.sym
# Log keycode to file
open("keycode.txt", "a").write(f"Released: {keycode}\n")
elif event.type == sdl2.SDL_QUIT:
self.running = False
# Update the window
self.window.refresh()
sdl2.SDL_Delay(10)
# Check for quit event
if not self.running:
break
# Cleanup
sdl2.ext.quit()
if __name__ == "__main__": if __name__ == "__main__":
tester = KeyTester() logger = KeyLogger()
tester.run() logger.run()
Loading…
Cancel
Save