2016-09-18 41 views
7

Bilgileri bulamıyorum, uinput/suinput'u kullanarak birkaç düğmeli oyun çubuğu oluşturun. python-uinput kullanılarak python üzerine Örnek: Gördüğünüz gibiLib (s) uinput: Birden fazla düğme ile joystick oluşturma

import uinput 

def main(): 
    events = (
     uinput.BTN_JOYSTICK, 
     uinput.ABS_X + (0, 255, 0, 0), 
     uinput.ABS_Y + (0, 255, 0, 0), 
     ) 

    with uinput.Device(events) as device: 
     for i in range(20): 
      # syn=False to emit an "atomic" (5, 5) event. 
      device.emit(uinput.ABS_X, 5, syn=False) 
      device.emit(uinput.ABS_Y, 5) 
     device.emit_click(uinput.BTN_JOYSTICK) 

if __name__ == "__main__": 
    main() 

, bu örnekte düğme olarak BTN_JOYSTICK kullanarak. Ve ikinci düğme/bağımlılık iki ABS_X/ABS_Y nasıl yaratılır?

Not: python örneğini kullanıyorum, uygulama dili Clibsuinput ile.

cevap

3

Diğer düğmeler, daha fazla düğme — düğme kodları. Başlangıçta düğme kodları, kullanıcı alanı perspektifinden linux/input.h başlığında veya çekirdek perspektifinden uapi/linux/input-event-codes.h tanımlanır. Piton için ev.py'da çoğaltılırlar. Gördüğünüz gibi, birçoğu var ve çoğunlukla BTN_JOYSTICK ve BTN_THUMBR arasındaki şeylerle ilgileniyorsunuz (ancak BTN_TRIGGER_HAPPY değerleri de bazıları tarafından kullanılıyor). En ilginç olanlar, BTN_THUMB, BTN_PINKIE, BTN_[ABC], BTN_SELECT ve BTN_START'dur.

Ek eksen için ABS_X ve ABS_MISC arasında herhangi birini seçin. En ilginç ek olanlar ABS_R[XYZ] ve ABS_HAT0[XYZ]'dur.

Bu ek düğmeleri/ekseni kullanmak için, bu tanımlayıcıları ABS_X ve ABS_Y ile BTN_JOYSTICK kullandığınız şekilde kullanın.

Şimdi, başka ilginç bir soru, bu listeden alınan değerlerin, taklit etmeye çalıştığınız gerçek oyun çubukları tarafından kullanıldığı durumdur. Bu değerler, evtest veya evemu programlarını kullanarak (gerçek joystick'i kullanarak) elde edilebilir. Yaygın olarak mevcut olan bazı joystick'ler (Xbox ve PS3) ayrıca discussed here idi (gördüğünüz gibi, joystickler ürettikleri düğme kodlarında çok farklılar). Ve gerçekten emin olmak için (ya da evtest ile kontrol edemediğiniz bazı aygıtları taklit), ayrıca real joystick drivers (sadece BTN_ ve ABS_ kullandıkları şeyler) bir göz atabilirsiniz.

+0

Gördüğünüz gibi, ruSO'ya kayıt yaptırdınız. Lütfen, burada cevap verdiğiniz herkese cevap verin: http://ru.stackoverflow.com/questions/567511/libsuinput-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0% B8% D0% B5% D0% B4% D0% B6% D0% BE% D0% B9% D1% 81% D1% 82% D0% B8% D0% BA% D0% B0-% D1% 81-% D0 % BD% D0% B5% D1% 81% D0% BA% D0% BE% D0% BB% D1% 8C% D0% BA% D0% B8% D0% BC% D0% B8-% D0% BE% D1% D1% 8F% D0% BC% D0% B8-% D0% B8-% D0% BA% D0% BD% D0% BE% D0% BF% D0% BA% D0% B0% D0% BC% D0% 81% B8. – val