cellGem: fix racing wheel mapping

This commit is contained in:
Megamouse
2026-10-01 12:42:01 +02:00
parent be69c054ee
commit 805c931d49
2 changed files with 15 additions and 15 deletions
+14 -14
View File
@@ -323,7 +323,7 @@ public:
{
const auto& pad = ::at32(handler->GetPads(), pad_num(i));
const bool connected = pad && pad->is_connected() && !pad->is_copilot() && i < attribute.max_connect;
const bool is_real_move = g_cfg.io.move != move_handler::real || pad->m_pad_handler == pad_handler::move;
const bool is_real_move = g_cfg.io.move != move_handler::real || (pad && pad->m_pad_handler == pad_handler::move);
update_connection(i, connected && is_real_move);
}
@@ -2166,12 +2166,12 @@ static const std::unordered_map<gem_btn, u16> ext_btn_indices =
{ gem_btn::racing_wheel_l2, 1 },
{ gem_btn::racing_wheel_r2, 2 },
{ gem_btn::racing_wheel_paddle_l, 3 },
{ gem_btn::racing_wheel_paddle_r, 4 },
{ gem_btn::racing_wheel_paddle_r, 3 },
{ gem_btn::combo_racing_wheel_throttle, 0 },
{ gem_btn::combo_racing_wheel_l2, 1 },
{ gem_btn::combo_racing_wheel_r2, 2 },
{ gem_btn::combo_racing_wheel_paddle_l, 3 },
{ gem_btn::combo_racing_wheel_paddle_r, 4 },
{ gem_btn::combo_racing_wheel_paddle_r, 3 },
};
static u32 ext_device_id(gem_ext_id id)
@@ -2282,23 +2282,23 @@ static void input_to_ext(u32 external_device_id, CellGemExtPortData& ext, std::s
{
switch (value.btn)
{
case gem_btn::combo_racing_wheel_throttle:
case gem_btn::combo_racing_wheel_l2:
case gem_btn::combo_racing_wheel_r2:
case gem_btn::racing_wheel_throttle:
case gem_btn::racing_wheel_l2:
case gem_btn::racing_wheel_r2:
ext.custom[::at32(ext_btn_indices, value.btn)] = static_cast<u8>(value.value);
break;
case gem_btn::combo_racing_wheel_paddle_l:
case gem_btn::combo_racing_wheel_paddle_r:
case gem_btn::racing_wheel_paddle_l:
case gem_btn::racing_wheel_paddle_r:
ext.custom[::at32(ext_btn_indices, value.btn)] |= ::at32(ext_btn_map, value.btn);
break;
case gem_btn::combo_racing_wheel_d_pad_up:
case gem_btn::combo_racing_wheel_d_pad_right:
case gem_btn::combo_racing_wheel_d_pad_down:
case gem_btn::combo_racing_wheel_d_pad_left:
case gem_btn::racing_wheel_d_pad_up:
case gem_btn::racing_wheel_d_pad_right:
case gem_btn::racing_wheel_d_pad_down:
case gem_btn::racing_wheel_d_pad_left:
ext.digital1 |= ::at32(ext_btn_map, value.btn);
break;
case gem_btn::combo_racing_wheel_l1:
case gem_btn::combo_racing_wheel_r1:
case gem_btn::racing_wheel_l1:
case gem_btn::racing_wheel_r1:
ext.digital2 |= ::at32(ext_btn_map, value.btn);
break;
default:
+1 -1
View File
@@ -1275,7 +1275,7 @@ void usb_device_logitech_g27::interrupt_transfer(u32 buf_size, u8* buf, u32 endp
// Change device mode
u8 cmd = buf[1];
u8 arg = buf[2];
if (buf[8] == 0xf8) // we have 2 commands back to back
if (buf_size >= 11 && buf[8] == 0xf8) // we have 2 commands back to back
{
cmd = buf[9];
arg = buf[10];