2016-09-18 13 views
7

uinput/suinputを使用して、いくつかのボタンを使ってジョイスティックを作成する方法が見つかりません。あなたがボタンとしてBTN_JOYSTICKを使用して、この例では、見ることができるように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() 

python-uinputを使用してpython上の例。どのようにして2番目のボタン/中毒2つを作成するのですかABS_X/ABS_Y

注:例としてpythonを使用しています。アプリケーション言語はClibsuinputです。

答えて

3

その他のボタン—もっとボタンコード。もともとのボタンコードは、ユーザー空間の観点からはlinux/input.hヘッダーに、またはカーネルの観点からはuapi/linux/input-event-codes.hに定義されています。 Pythonの場合、それらはev.pyに複製されています。ご覧のとおり、多くのものがあり、ほとんどBTN_JOYSTICKBTN_THUMBRの間のものに興味があります(ただし、BTN_TRIGGER_HAPPYの値も一部で使用されています)。最も興味深いものはBTN_THUMB,BTN_PINKIE,BTN_[ABC],BTN_SELECTおよびBTN_STARTです。

追加の軸は、ABS_XABS_MISCのいずれかを選択します。最も興味深いものは、ABS_R[XYZ]ABS_HAT0[XYZ]です。

そのような追加のボタン/軸を使用するには、同じ方法でこれらの識別子を使用するだけでBTN_JOYSTICKABS_XABS_Yを使用します。

もう1つの興味深い質問は、おそらく、このリストの値がエミュレートしようとしている実際のジョイスティックで使用されている値です。この値はevtestまたはevemuのプログラム(実際のジョイスティックを使用して)を使用して取得できます。広く利用可能なジョイスティック(XboxとPS3)もdiscussed hereでした(ご覧のとおり、ジョイスティックはボタンのコードによって大きく異なります)。あなたがevtestで確認できないデバイスをエミュレートするには、real joystick drivers(彼らが使用するものはBTN_ABS_)を見てください。

+0

私は、あなたがruで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 D0%BA%D0%BA%D0%BA%D0%BA%D0%BA%D0%B8%D0%BC%D0%B8-%D0%BE%D1% D0%B0%D0%B0%D0%B0%D0%B0%D0%B0%D0%B0%D0%B0%B0%D0% B8。 – val

関連する問題