首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lib(s)uinput:创建具有多个按钮的操纵杆

Lib(s)uinput:创建具有多个按钮的操纵杆
EN

Stack Overflow用户
提问于 2016-09-18 23:00:58
回答 1查看 1.9K关注 0票数 8

我找不到信息,如何使用uinput/suinput创建带有多个按钮的操纵杆。使用python-uinputpython示例

代码语言:javascript
复制
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为例,应用程序语言是带有libsuinputC

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-22 05:22:20

更多按钮-更多按钮代码。最初,按钮代码从用户空间的角度定义在linux/input.h头中,或者从内核的角度定义在uapi/linux/input-event-codes.h中。对于python,它们在ev.py中是重复的。正如您所看到的,它们有很多,并且您最感兴趣的是BTN_JOYSTICKBTN_THUMBR之间的内容(但BTN_TRIGGER_HAPPY值也被一些人使用)。最有趣的是BTN_THUMBBTN_PINKIEBTN_[ABC]BTN_SELECTBTN_START

至于附加轴,请在ABS_XABS_MISC之间选择任意一个。最有趣的附加工具是ABS_R[XYZ]ABS_HAT0[XYZ]

因此,要使用其他按钮/轴,只需以与使用ABS_XABS_YBTN_JOYSTICK相同的方式使用这些标识符。

现在,另一个有趣的问题可能是这个列表中的哪些值被您试图模仿的真正的操纵杆所使用。这个值可以通过使用evtestevemu程序(当然是使用真正的操纵杆)来获得。一些广泛使用的操纵杆(Xbox和PS3)也是discussed here的(正如你所看到的,操纵杆产生的按钮代码是非常不同的)。为了确定(或者模拟一些你不能用evtest检查的设备),你也可以看看real joystick drivers (他们使用的只是BTN_ABS_ )。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39559063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档