Lib(s)uinput:使用多个按钮创建操纵杆

前端之家收集整理的这篇文章主要介绍了Lib(s)uinput:使用多个按钮创建操纵杆前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我找不到信息,如何使用uinput / suinput创建带有几个按钮的操纵杆.使用 python-uinput的 python示例:
import uinput

def main():
    events = (
        uinput.BTN_JOYSTICK,uinput.ABS_X + (0,255,0),uinput.ABS_Y + (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作为示例,应用程序语言是带有libsuinput的C.

解决方法

更多按钮 – 更多按钮代码.最初的按钮代码用户空间透视图中定义在linux / input.h头文件中,或者从内核角度定义为 uapi/linux/input-event-codes.h.对于python,它们在 ev.py中被复制.正如你所看到的,它们中有很多并且你最感兴趣的是BTN_JOYSTICK和BTN_THUMBR之间的东西(但BTN_TRIGGER_HAPPY值也被一些人使用).最有趣的是BTN_THUMB,BTN_PINKIE,BTN_ [ABC],BTN_SELECT和BTN_START.

对于附加轴,请在ABS_X和ABS_MISC之间选择任意一个.最有趣的是ABS_R [XYZ]和ABS_HAT0 [XYZ].

因此,要使用其他按钮/轴,您只需使用这些标识符,就像使用带有ABS_X和ABS_Y的BTN_JOYSTICK一样.

现在,另一个有趣的问题可能是这个列表中的值是由你试图模仿的真实操纵杆使用的.可以使用evtestevemu程序(当然使用真实的操纵杆)获得该值.一些广泛使用的操纵杆(XBox和PS3)也是discussed here(正如你所看到的,操纵杆在它们产生的按钮代码上有很大不同).要确定(或模拟一些你无法用evtest检查的设备),你也可以看看real joystick drivers(他们使用的只是BTN_和ABS_).

原文链接:https://www.f2er.com/c/118077.html

猜你在找的C&C++相关文章