gpt4 book ai didi

c - Lib(s)uinput : creating joystick with more than one button

转载 作者:IT王子 更新时间:2023-10-29 00:34:27 30 4
gpt4 key购买 nike

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

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 为例,应用程序语言是 Clibsuinput

最佳答案

更多按钮——更多按钮代码。从用户空间的角度来看,最初按钮代码是在 linux/input.h header 中定义的,或者 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]

因此,要使用这些额外的按钮/轴,您只需使用这些标识符,就像将 BTN_JOYSTICKABS_XABS_Y 一起使用一样。

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

关于c - Lib(s)uinput : creating joystick with more than one button,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39559063/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com