2016-09-18 7 views
7

uinput/suinput을 사용하여 여러 개의 버튼이있는 조이스틱을 만드는 방법이 정보를 찾을 수 없습니다. python-uinput를 사용하여 python에 예 : 당신이 볼 수 있듯이Lib (s) uinput : 하나 이상의 버튼이있는 조이스틱 만들기

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() 

,이 예제에서는 버튼과 BTN_JOYSTICK를 사용하여. 두 번째 단추/중독자 두 개를 만드는 방법 ABS_X/ABS_Y?

참고 : 예를 들어 python을 사용하고 있습니다. 응용 언어는 C이고 libsuinput입니다.

답변

3

더 많은 버튼 — 더 많은 버튼 코드 원래 버튼 코드는 사용자 공간 관점에서 linux/input.h 헤더로 정의되거나 커널 관점에서 uapi/linux/input-event-codes.h으로 정의됩니다. 파이썬의 경우 그들은 ev.py에 중복됩니다. 보시다시피, 그들 중 많은 수가 있으며 대부분 BTN_JOYSTICKBTN_THUMBR 사이의 것에 관심이 있습니다 (그러나 일부에서는 BTN_TRIGGER_HAPPY 값이 사용됩니다). 가장 흥미로운 것들은 BTN_THUMB, BTN_PINKIE, BTN_[ABC], BTN_SELECTBTN_START입니다.

추가 축의 경우 ABS_XABS_MISC 중 하나를 선택하십시오. 가장 흥미로운 것들은 ABS_R[XYZ]ABS_HAT0[XYZ]입니다.

그런 추가 버튼/축을 사용하려면 동일한 식별자로 BTN_JOYSTICKABS_XABS_Y을 사용하면됩니다.

또 다른 재미있는 질문은 아마도이 목록의 값이 실제 조이스틱이 에뮬레이트하려고 시도하는 것입니다. 이 값은 evtest 또는 evemu 프로그램을 사용하여 얻을 수 있습니다 (물론 실제 조이스틱 사용). 널리 사용 가능한 조이스틱 (Xbox 및 PS3)도 discussed here입니다. 조이스틱은 버튼 코드에 따라 매우 다릅니다. 그리고 확실하게 (또는 evtest로 확인할 수없는 일부 장치를 에뮬레이션하려면) real joystick drivers (단지 BTN_ABS_의 것들)을 살펴보십시오.

+0

나는 당신이 ruSO에서 registred 것을 본다. 공개 답변을 드리겠습니다. 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 % 81 % D1 % 8F % D0 % BC % D0 % B8- % D0 % B8- % D0 % BA % D0 % BD % D0 % BE % D0 % BF % D0 % BA % D0 % B0 % D0 % BC % D0 % B8. – val