Python ile joystick girdileri nasıl okunur?

ayalkin

Hectopat
Katılım
6 Mayıs 2020
Mesajlar
171
Çözümler
1
Merhabalar, üstadlar. Bilgisayarda Python ile gamepad girdilerini nasıl okuyup yorumlayabilirim? Girdileri okuyup yorumlayıp, gamepadi fare gibi kullanmak istiyorum. Bunu konu hakkındaki fikir ve görüşleriniz nelerdir? Bildiğiniz bir modül var mı?
 
Son düzenleyen: Moderatör:
Aklıma gelen 2 tane çıkış yolun var.

  • XInput verilerini okuyabilirsin.
  • "Windows messages" denilen Windows'taki pencere sunucusuna giden olaylardan filtreleyerek gamepad tuşlarına basılıp basılmadığını dinleyebilirsin.
İkisinden biri Python için uygunsa bunlar üzerinden ilerleyebilirsin. Aklıma bunlar geldi. Eğer bunlar direkt olarak yoksa da C/C++ ile Python modülü olarak yazmışlardır.
 
Şu anda elimde bir gamepad bulunmadığı için kodu yazıp test edemiyorum fakat inputs modülünü kullanabilirsin. Daha sonra istediğin girdileri klavye-fare girdilerine dönüştürmek için pywin32 kullanabilirsin.

İnputs dokümanları: Welcome to the inputs documentation! — Inputs 0.5 documentation

Pywin32 GitHub sayfası: mhammond/pywin32

Inputs modülü maalesef ki benim oyun kolumu algılayamadı. Yanlış bilmiyorsam eğer inputs modülü sadece Xbox ve PSP kolları için destek veriyor. Benim sahip kol ise yıllar önce birmilyoncudan ucuza alınan bir kol.

Aklıma gelen 2 tane çıkış yolun var.

  • Xinput verilerini okuyabilirsin.
  • "Windows messages" denilen Windows'taki pencere sunucusuna giden olaylardan filtreleyerek gamepad tuşlarına basılıp basılmadığını dinleyebilirsin.
İkisinden biri Python için uygunsa bunlar üzerinden ilerleyebilirsin. Aklıma bunlar geldi. Eğer bunlar direkt olarak yoksa da c/c++ ile Python modülü olarak yazmışlardır.

Dediğiniz içeriğe bakarken winmm kütüphanesin joysetcapture fonksiyonuna denk geldim. Windows kendi kütüphanelerinde oyun kolları için destek veriyormuş. Python'da ctypes ile kütüphaneyi içeri alıp işlemler yapılabilir. Doğruları söylemek gerekirse o kadar uğraşmaya gözüm kesmedi.

Söyledikleriniz haricinde birçok modüle daha göz attım. Örnek vermek gerekirse psychopy, pyglet ve bazı GitHub projeleri benim için işe yaramadı. En son umudu kesip C++ ile winmm kütüphanesinde bir şeyler yapma kararı almıştım ki aklıma pygame modülü geldi. Pygame modülü oyun kolumu gördü ve üstünde işlemler yapmama izin verdi. Yakın zamanda ilgili kodu yazıp forumda paylaşacağım başka arkadaşlarda nasiplensin. İkinizi de yardımınız için teşekkür ederim.
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Geri
Yukarı