问题是因为不可能同时模拟 LMB 按下/释放并监控其状态。
解决方法如下:
Step 0.
您将要修改鼠标左键的行为。
这是一个潜在危险的操作:如果没有 LMB,您几乎无法在计算机上执行任何操作。
所以你必须创建一个“备用LMB”。
例如,如果您不使用鼠标按钮 8,则可以使其表现得像 LMB 的克隆。
转到 GHUB(鼠标设备,“分配”屏幕,系统选项卡)。
将“主要点击”分配给您的物理 MB#8。
现在,如果出现问题并且您的 LMB 停止工作,您可以按 MB#8 而不是 LMB。
Step 1.
您在游戏中使用鼠标按钮 4(“后退”)吗?
- 如果是(游戏中将某些操作设置为 MB#4),则继续“步骤 2”。
- 如果否(游戏忽略 MB#4 按下),则跳过“步骤 2”并继续“步骤 3”。
Step 2.
您必须将游戏动作从 MB#4 重新映射到其他某个键。
请执行下列操作:
- 选择您当前在游戏中未使用的键盘按键
(我们假设F12
密钥当前未使用)
- 转到 GHUB(鼠标设备,“分配”屏幕,按键选项卡);
assign F12
到您的物理 MB#4
- 转到您的游戏设置;
将游戏动作设置为F12
而不是 MB#4
现在,当您按下物理 MB#4 时,游戏会收到F12
并激活游戏动作。
跳过“步骤 3”并继续“步骤 4”。
Step 3.
转到 GHUB(鼠标设备,“作业”屏幕)。
从物理 MB#4 取消分配标准命令“后退”(单击并从下拉菜单中选择“禁用”)。
禁用的 MB#4 将看起来像一个内部黑色的白色圆圈。
Step 4.
设置脚本(见下文)。
Step 5.
转到 GHUB(鼠标设备,“分配”屏幕,系统选项卡)。
将“返回”分配给您的物理 LMB。
您将看到有关潜在危险操作的警告。
允许此操作,因为如果出现问题,您有“备用 LMB”。
function OnEvent(event, arg)
if event == "PROFILE_ACTIVATED" then
EnablePrimaryMouseButtonEvents(true)
elseif event == "MOUSE_BUTTON_PRESSED" and arg == 1 then
PressMouseButton(1)
if IsKeyLockOn("capslock") then
repeat
MoveMouseRelative(0,4)
Sleep(10)
if not IsMouseButtonPressed(4) then break end
ReleaseMouseButton(1)
MoveMouseRelative(0,4)
Sleep(10)
PressMouseButton(1)
until not IsMouseButtonPressed(4) -- 4 = "Back"
end
elseif event == "MOUSE_BUTTON_RELEASED" and arg == 1 then
ReleaseMouseButton(1)
elseif event == "PROFILE_DEACTIVATED" then
ReleaseMouseButton(1)
end
end