我无法找到信息,如何使用uinput
/ suinput
创建带有多个按钮的操纵杆。关于使用python
的{{1}}的示例:
python-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()
作为按钮。如何创建第二个按钮/上瘾两个BTN_JOYSTICK
/ ABS_X
?
注意:我以ABS_Y
为例,应用语言为python
C
。
答案 0 :(得分:3)
更多按钮 - 更多按钮代码。最初的按钮代码在用户空间透视图的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]
。
因此,要使用其他按钮/轴,您只需使用BTN_JOYSTICK
与ABS_X
和ABS_Y
相同的方式使用这些标识符。
现在,另一个有趣的问题可能是这个列表中的值是由你试图模仿的真实操纵杆使用的。可以使用evtest或evemu程序(当然使用真实操纵杆)获取此值。一些广泛使用的操纵杆(Xbox和PS3)也是discussed here(如你所见,操纵杆在它们产生的按钮代码上有很大不同)。要确定(或模拟某些设备,您无法使用evtest进行检查),您还可以查看real joystick drivers(仅使用BTN_
和ABS_
个内容。< / p>