Refactor KeyTester to KeyLogger for improved key event logging and SDL2 integration
This commit is contained in:
@@ -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()
|
||||||
|
|
||||||
Reference in New Issue
Block a user