|
|
|
|
@ -2,54 +2,44 @@
|
|
|
|
|
|
|
|
|
|
import sys |
|
|
|
|
import os |
|
|
|
|
sys.path.append(os.path.dirname(os.path.abspath(__file__))) |
|
|
|
|
import sdl2 |
|
|
|
|
import sdl2.ext |
|
|
|
|
|
|
|
|
|
from engine import sdl2 as engine |
|
|
|
|
|
|
|
|
|
class KeyTester: |
|
|
|
|
class KeyLogger: |
|
|
|
|
def __init__(self): |
|
|
|
|
self.render_engine = engine.GameWindow(800, 600, 1, "Key Tester", |
|
|
|
|
key_callback=(self.key_pressed, self.key_released, None)) |
|
|
|
|
self.pressed_keys = [] |
|
|
|
|
self.last_key = "None" |
|
|
|
|
|
|
|
|
|
def key_pressed(self, key): |
|
|
|
|
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) |
|
|
|
|
|
|
|
|
|
# Initialize SDL2 |
|
|
|
|
sdl2.ext.init() |
|
|
|
|
self.window = sdl2.ext.Window("Key Logger", size=(640, 480)) |
|
|
|
|
self.window.show() |
|
|
|
|
self.running = True |
|
|
|
|
self.key_down = True |
|
|
|
|
|
|
|
|
|
def run(self): |
|
|
|
|
print("Key Tester started. Press keys to see them displayed.") |
|
|
|
|
print("Press ESC to quit.") |
|
|
|
|
self.render_engine.mainloop(update=self.update_display) |
|
|
|
|
while self.running: |
|
|
|
|
# Handle SDL events |
|
|
|
|
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__": |
|
|
|
|
tester = KeyTester() |
|
|
|
|
tester.run() |
|
|
|
|
logger = KeyLogger() |
|
|
|
|
logger.run() |
|
|
|
|
|