import ctypes
# Коды клавиш для Windows API
VK_A = 0x41
VK_D = 0x44
KEYEVENTF_KEYUP = 0x0002
if starting:
diagnostics.debug("=== FreePIE WinAPI SnapTap Active ===")
prev_a = False
prev_d = False
# Читаем физическое состояние через FreePIE
current_a = keyboard.getKeyDown(Key.A)
current_d = keyboard.getKeyDown(Key.D)
# Логика Last-Win (приоритет последнего нажатия)
if current_a and current_d:
if current_d and not prev_d:
diagnostics.debug("SnapTap: A -> D (A released)")
# Программно «отпускаем» A через Windows API
ctypes.windll.user32.keybd_event(VK_A, 0, KEYEVENTF_KEYUP, 0)
elif current_a and not prev_a:
diagnostics.debug("SnapTap: D -> A (D released)")
# Программно «отпускаем» D через Windows API
ctypes.windll.user32.keybd_event(VK_D, 0, KEYEVENTF_KEYUP, 0)
prev_a = current_a
prev_d = current_d