mirror of
https://github.com/dekuNukem/USB4VC.git
synced 2025-10-31 11:26:46 -07:00
simplified code for xpadneo
This commit is contained in:
@@ -88,7 +88,7 @@ kill -SIGINT pid
|
|||||||
-----------
|
-----------
|
||||||
xbox one bluetooth driver
|
xbox one bluetooth driver
|
||||||
|
|
||||||
sudo apt install xboxdrv
|
https://github.com/atar-axis/xpadneo
|
||||||
|
|
||||||
echo 'options bluetooth disable_ertm=Y' | sudo tee -a /etc/modprobe.d/bluetooth.conf
|
echo 'options bluetooth disable_ertm=Y' | sudo tee -a /etc/modprobe.d/bluetooth.conf
|
||||||
|
|
||||||
|
|||||||
@@ -316,8 +316,7 @@ code_value_to_name_lookup = {
|
|||||||
0x15:{'ABS_HAT2Y'},
|
0x15:{'ABS_HAT2Y'},
|
||||||
0x16:{'ABS_HAT3X'},
|
0x16:{'ABS_HAT3X'},
|
||||||
0x17:{'ABS_HAT3Y'},
|
0x17:{'ABS_HAT3Y'},
|
||||||
158:{'KEY_BACK'},
|
373:{'BTN_MODE'},
|
||||||
172:{'KEY_HOMEPAGE'},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
board_id_lookup = {
|
board_id_lookup = {
|
||||||
|
|||||||
@@ -96,8 +96,7 @@ BTN_TASK = 0x117
|
|||||||
|
|
||||||
# some gamepad buttons report as keyboard keys when connected via bluetooth, need to account for those
|
# some gamepad buttons report as keyboard keys when connected via bluetooth, need to account for those
|
||||||
gamepad_buttons_as_kb_codes = {
|
gamepad_buttons_as_kb_codes = {
|
||||||
158, # KEY_BACK, share button, xbox one controller when connected via bluetooth
|
373, # KEY_MODE, Xbox logo button, xbox one controller when connected via bluetooth on xpadneo
|
||||||
172, # KEY_HOMEPAGE, xbox logo button, xbox one controller when connected via bluetooth
|
|
||||||
}
|
}
|
||||||
|
|
||||||
nop_spi_msg_template = [SPI_MOSI_MAGIC] + [0]*31
|
nop_spi_msg_template = [SPI_MOSI_MAGIC] + [0]*31
|
||||||
@@ -182,29 +181,7 @@ MOUSE_SPI_LOOKUP = {
|
|||||||
REL_WHEEL:8,
|
REL_WHEEL:8,
|
||||||
}
|
}
|
||||||
|
|
||||||
xbox_one_bluetooth_to_linux_ev_code_dict = {
|
xbox_one_to_linux_ev_code_dict = {
|
||||||
"XB1_A":"BTN_SOUTH",
|
|
||||||
"XB1_B":"BTN_EAST",
|
|
||||||
"XB1_X":"BTN_NORTH",
|
|
||||||
"XB1_Y":"BTN_WEST",
|
|
||||||
"XB1_LSB":"BTN_THUMBL",
|
|
||||||
"XB1_RSB":"BTN_THUMBR",
|
|
||||||
"XB1_LB":"BTN_TL",
|
|
||||||
"XB1_RB":"BTN_TR",
|
|
||||||
"XB1_VIEW":"KEY_BACK",
|
|
||||||
"XB1_MENU":"BTN_START",
|
|
||||||
"XB1_LOGO":"KEY_HOMEPAGE",
|
|
||||||
"XB1_LSX":"ABS_X",
|
|
||||||
"XB1_LSY":"ABS_Y",
|
|
||||||
"XB1_RSX":"ABS_Z",
|
|
||||||
"XB1_RSY":"ABS_RZ",
|
|
||||||
"XB1_LT":"ABS_BRAKE",
|
|
||||||
"XB1_RT":"ABS_GAS",
|
|
||||||
"XB1_DPX":"ABS_HAT0X",
|
|
||||||
"XB1_DPY":"ABS_HAT0Y",
|
|
||||||
}
|
|
||||||
|
|
||||||
xbox_one_wired_to_linux_ev_code_dict = {
|
|
||||||
"XB1_A":"BTN_SOUTH",
|
"XB1_A":"BTN_SOUTH",
|
||||||
"XB1_B":"BTN_EAST",
|
"XB1_B":"BTN_EAST",
|
||||||
"XB1_X":"BTN_NORTH",
|
"XB1_X":"BTN_NORTH",
|
||||||
@@ -238,10 +215,8 @@ def find_keycode_in_mapping(source_code, mapping_dict, usb_gamepad_type):
|
|||||||
source_name = usb4vc_shared.code_value_to_name_lookup.get(source_code)
|
source_name = usb4vc_shared.code_value_to_name_lookup.get(source_code)
|
||||||
if source_name is None:
|
if source_name is None:
|
||||||
return None, None
|
return None, None
|
||||||
if usb_gamepad_type == "Xbox One Bluetooth":
|
if usb_gamepad_type == "Xbox One":
|
||||||
mapping_dict = translate_dict(mapping_dict, xbox_one_bluetooth_to_linux_ev_code_dict)
|
mapping_dict = translate_dict(mapping_dict, xbox_one_to_linux_ev_code_dict)
|
||||||
elif usb_gamepad_type == "Xbox One Wired":
|
|
||||||
mapping_dict = translate_dict(mapping_dict, xbox_one_wired_to_linux_ev_code_dict)
|
|
||||||
target_info = None
|
target_info = None
|
||||||
for item in source_name:
|
for item in source_name:
|
||||||
if item in mapping_dict:
|
if item in mapping_dict:
|
||||||
@@ -295,15 +270,10 @@ def apply_curve(x_0_255, y_0_255):
|
|||||||
|
|
||||||
ABS_Z = 0x02
|
ABS_Z = 0x02
|
||||||
ABS_RZ = 0x05
|
ABS_RZ = 0x05
|
||||||
ABS_GAS = 0x09
|
xbox_one_analog_trigger_codes = {ABS_Z, ABS_RZ}
|
||||||
ABS_BRAKE = 0x0a
|
|
||||||
xbox_one_wired_analog_trigger_codes = {ABS_Z, ABS_RZ}
|
|
||||||
xbox_one_bluetooth_analog_trigger_codes = {ABS_GAS, ABS_BRAKE}
|
|
||||||
|
|
||||||
def is_analog_trigger(ev_code, gamepad_type):
|
def is_analog_trigger(ev_code, gamepad_type):
|
||||||
if gamepad_type == "Xbox One Bluetooth" and ev_code in xbox_one_bluetooth_analog_trigger_codes:
|
if gamepad_type == "Xbox One" and ev_code in xbox_one_analog_trigger_codes:
|
||||||
return True
|
|
||||||
if gamepad_type == "Xbox One Wired" and ev_code in xbox_one_wired_analog_trigger_codes:
|
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
@@ -318,10 +288,7 @@ def make_generic_gamepad_spi_packet(gp_status_dict, gp_id, this_device_info, map
|
|||||||
this_gamepad_name = this_device_info.get('name', '').lower()
|
this_gamepad_name = this_device_info.get('name', '').lower()
|
||||||
usb_gamepad_type = 'Generic USB'
|
usb_gamepad_type = 'Generic USB'
|
||||||
if 'xbox' in this_gamepad_name or 'x-box' in this_gamepad_name:
|
if 'xbox' in this_gamepad_name or 'x-box' in this_gamepad_name:
|
||||||
if 'wireless' in this_gamepad_name:
|
usb_gamepad_type = 'Xbox One'
|
||||||
usb_gamepad_type = 'Xbox One Bluetooth'
|
|
||||||
else:
|
|
||||||
usb_gamepad_type = 'Xbox One Wired'
|
|
||||||
|
|
||||||
this_gp_dict = gp_status_dict[gp_id]
|
this_gp_dict = gp_status_dict[gp_id]
|
||||||
curr_gp_output = {
|
curr_gp_output = {
|
||||||
@@ -680,6 +647,8 @@ def get_input_devices():
|
|||||||
dev_dict['is_mouse'] = True
|
dev_dict['is_mouse'] = True
|
||||||
if 'KEY_ENTER' in cap_str and "KEY_Y" in cap_str:
|
if 'KEY_ENTER' in cap_str and "KEY_Y" in cap_str:
|
||||||
dev_dict['is_kb'] = True
|
dev_dict['is_kb'] = True
|
||||||
|
if 'KEY_MODE' in cap_str:
|
||||||
|
dev_dict['is_gp'] = True
|
||||||
if 'EV_ABS' in cap_str and "BTN_SOUTH" in cap_str:
|
if 'EV_ABS' in cap_str and "BTN_SOUTH" in cap_str:
|
||||||
dev_dict['is_gp'] = True
|
dev_dict['is_gp'] = True
|
||||||
try:
|
try:
|
||||||
|
|||||||
Reference in New Issue
Block a user