问题
MaaFramework v5.10.4 Win32 输入层把 contact=0/1 直接硬编码为左/右键消息或 SendInput 标志,没有读取系统 SM_SWAPBUTTON。Windows 开启「左右键互换」后,Win32-Front(SeizeInput)和 Win32-Window-Background(MessageInput with_window_pos)都会点击失效。
代码位置
source/MaaWin32ControlUnit/Input/InputUtils.h:63-213:WM_LBUTTON*/WM_RBUTTON* 硬编码
source/MaaWin32ControlUnit/Input/SeizeInput.cpp:60-90, 129-152:MOUSEEVENTF_LEFT*/RIGHT* 硬编码
source/MaaWin32ControlUnit/Input/MessageInput.cpp:872-950, 1011-1065:同上
来源
MaaEnd/MaaEnd#2825 — bot 分析链路已完整定位到 Win32 输入层。用户表现:
电脑端-前台/电脑端-后台(都是 Win32)点击失败
电脑端-默认(也是 Win32 的 MessageInput with_cursor_pos)反而能跑通
修复方向
建议在 InputUtils.h 统一做逻辑主键/副键 remap:
- 初始化读一次
GetSystemMetrics(SM_SWAPBUTTON) 并输出日志
- 按该值在底层对
contact 0/1 做 remap,避免每个 input backend 各修各的
- 覆盖
MessageInput + SeizeInput
补充
SM_SWAPBUTTON 的读取要在与 MaaFW agent 相同的 interactive desktop session,服务场景下要留心
问题
MaaFramework v5.10.4 Win32 输入层把
contact=0/1直接硬编码为左/右键消息或SendInput标志,没有读取系统SM_SWAPBUTTON。Windows 开启「左右键互换」后,Win32-Front(SeizeInput)和Win32-Window-Background(MessageInputwith_window_pos)都会点击失效。代码位置
source/MaaWin32ControlUnit/Input/InputUtils.h:63-213:WM_LBUTTON*/WM_RBUTTON*硬编码source/MaaWin32ControlUnit/Input/SeizeInput.cpp:60-90, 129-152:MOUSEEVENTF_LEFT*/RIGHT*硬编码source/MaaWin32ControlUnit/Input/MessageInput.cpp:872-950, 1011-1065:同上来源
MaaEnd/MaaEnd#2825 — bot 分析链路已完整定位到 Win32 输入层。用户表现:
电脑端-前台/电脑端-后台(都是 Win32)点击失败电脑端-默认(也是 Win32 的MessageInput with_cursor_pos)反而能跑通修复方向
建议在
InputUtils.h统一做逻辑主键/副键 remap:GetSystemMetrics(SM_SWAPBUTTON)并输出日志contact 0/1做 remap,避免每个 input backend 各修各的MessageInput+SeizeInput补充
SM_SWAPBUTTON的读取要在与 MaaFW agent 相同的 interactive desktop session,服务场景下要留心