2016-09-18 5 views
7

Ich kann keine Informationen finden, wie Joystick mit mehreren Tasten über uinput/suinput erstellen. Beispiel auf python mit python-uinput:Lib (s) Eingabe: Erstellen von Joystick mit mehr als einer Taste

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

Wie Sie in diesem Beispiel sehen können BTN_JOYSTICK als Taste. Und wie schaffen zweite Taste/sucht zwei ABS_X/ABS_Y?

Hinweis: Ich verwende python als Beispiel, Anwendungssprache ist C mit libsuinput.

Antwort

3

Weitere Tasten — mehr Tastencodes. Ursprüngliche Schaltflächencodes sind in dem linux/input.h-Header aus der Benutzerraumperspektive oder uapi/linux/input-event-codes.h aus der Kernelperspektive definiert. Für Python sind sie in der ev.py dupliziert. Wie Sie sehen können, gibt es eine Menge von ihnen und Sie sind hauptsächlich interessiert an Dingen zwischen BTN_JOYSTICK und BTN_THUMBR (aber BTN_TRIGGER_HAPPY Werte werden auch von einigen verwendet). Die interessantesten sind BTN_THUMB, BTN_PINKIE, BTN_[ABC], BTN_SELECT und BTN_START.

Wie für zusätzliche Achse, wählen Sie eine zwischen ABS_X und ABS_MISC. Die interessantesten zusätzlichen sind ABS_R[XYZ] und ABS_HAT0[XYZ].

Um diese zusätzlichen Schaltflächen/Achsen zu verwenden, verwenden Sie einfach diese Bezeichner auf die gleiche Weise, die Sie BTN_JOYSTICK mit ABS_X und ABS_Y verwenden.

Jetzt ist eine weitere interessante Frage wahrscheinlich, welche Werte von dieser Liste von echten Joysticks verwendet werden, die Sie zu emulieren versuchen. Diese Werte können mit den Programmen evtest oder evemu (unter Verwendung eines echten Joysticks) ermittelt werden. Einige weit verbreitete Joysticks (Xbox und PS3) waren auch discussed here (wie Sie sehen können, unterscheiden sich Joysticks sehr darin, welche Knopfcodes sie produzieren). Und um wirklich sicher zu sein (oder ein Gerät zu emulieren, das nicht mit evtest überprüft werden kann), können Sie auch einen Blick auf real joystick drivers (nur BTN_ und ABS_ Dinge, die sie verwenden).

+0

Ich sehe, Sie bei RuSO registriert. Bitte, öffentlich antworten Sie hier: 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% 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

Verwandte Themen