import pywinusb.hid as hid
import pyvjoy
import time
# 1. vJoy Cihazını Başlat (Device 1)
vj = None
try:
if hasattr(pyvjoy, 'PyVJoyDevice'):
vj = pyvjoy.PyVJoyDevice(1)
elif hasattr(pyvjoy, 'vJoyDevice'):
vj = pyvjoy.vJoyDevice(1)
else:
vj = pyvjoy._sdk
vj.AcquireVJD(1)
print("[BAŞARILI] vJoy Device 1 aktif.")
except Exception as e:
print(f"[HATA] vJoy Bağlantı Hatası: {e}")
exit()
# Cihaz Filtresi (Aula WIN68 HE)
devices = hid.HidDeviceFilter(vendor_id=0x2e3c, product_id=0xc365).get_devices()
print("[BİLGİ] Kesintisiz Analog Sensör Dinleyici Aktif.")
print("-> W Tuşu: Gaz (X Axis)")
print("-> S Tuşu: Fren (Y Axis)\n")
def data_handler(data):
try:
if len(data) >= 10:
key_id = data[8] # Tuş Kimliği
raw_val = data[9] # Canlı Basış Derinliği (0-255)
# Basış Oranlama (0.0 - 1.0 arası)
# raw_val doğrudan basış derinliğidir
norm_val = min(max(raw_val / 255.0, 0.0), 1.0)
vjoy_val = int(norm_val * 32766) + 1
# W Tuşu (Key ID 2) -> Gaz (X Eksen)
if key_id == 2:
if hasattr(vj, 'set_axis'):
vj.set_axis(pyvjoy.HID_USAGE_X, vjoy_val)
else:
vj.SetAxis(vjoy_val, 1, 0x30)
# S Tuşu (Key ID 3 ve 7. İndeks 3) -> Fren (Y Eksen)
elif key_id == 3 and data[7] == 3:
if hasattr(vj, 'set_axis'):
vj.set_axis(pyvjoy.HID_USAGE_Y, vjoy_val)
else:
vj.SetAxis(vjoy_val, 1, 0x31)
except Exception:
pass
for dev in devices:
try:
dev.open()
dev.set_raw_data_handler(data_handler)
except Exception:
pass
try:
while True:
time.sleep(0.005) # 200 Hz yüksek güncelleme hızı
except KeyboardInterrupt:
print("\n[BİLGİ] Kapatıldı.")