проблема с pie-mimgui - вечно зажатая СКМ/ПКМ

glor1xxx

Новичок
Автор темы
4
2
Версия MoonLoader
.026-beta
Проблема. Активирую Pie Menu любой кнопкой мышки и кнопка "залипает". Скрипт считает, что она вечно зажата.
Если активирую Pie с клавиатуры (кнопка активации менюшки и клавиша мышки в pie.BeginPiePopup - разные), то все прекрасно работает. При зажиме висит менюшка, а как отпускаю клавишу - пропадает. Если же ставлю в isKeyDown кнопку мышки, то скрипт ее почему-то считает вечно зажатой, даже если я ее отпускаю.

Lua:
-- Это в беск цикле. pie_mode отвечает за появление менюшки.
imgui.ShowCursor = isKeyDown(0x04)
pie_mode.v = isKeyDown(0x04)
imgui.Process = pie_mode.v

-- Это в imgui
if pie_mode.v then
    imgui.OpenPopup('PieMenu')
    if pie.BeginPiePopup('PieMenu', pie_keyid) then
        --Ну тут менюшки, вкладочки
        pie.EndPiePopup()
    end
end

--[[
pie_keyid пробовал менять от 0 до 2, делать одинаковыми клавишу активации и pie_keyid - толку ноль.
Менюшка остается вечно активной, а скрипт считает клавишу зажатой
]]
как можно исправить? (взял из theme, столкнулся с такой же проблемой, если у кого-то есть решение буду очень благодарен :) )
 
Последнее редактирование:
  • Нравится
Реакции: KyRDa
Решение
тут дело не в этом, у меня без pie-menu все работает прекрасно, с ним уже не считывает отжатие любой кнопки мыши, подобные методы решения пробовал, не помогало и сейчас не помогло.
пример кода из моего скрипта:


Lua:
local hotkey_key = HOTKEY.GetHotKey(hotkey_name)[1]
                              
Binder_Setting_Pies.current_pie = i
Binder_Setting_Pies.pie_active = true

lua_thread.create(function()
    while true do wait(10)
        if not isKeyDown(hotkey_key) then
            Binder_Setting_Pies.pie_active = false
            return
        end
    end
end)
принцип тот же, проблема та же )
Lua:
local hotkey_key = HOTKEY.GetHotKey(hotkey_name)[1]

Binder_Setting_Pies.current_pie = i
Binder_Setting_Pies.pie_active = true...

kyrtion

Известный
970
353
@Cosmo описывал проблему о баге с инпутом клавиши. Можешь узнать об этом:
 

glor1xxx

Новичок
Автор темы
4
2
@Cosmo описывал проблему о баге с инпутом клавиши. Можешь узнать об этом:
тут дело не в этом, у меня без pie-menu все работает прекрасно, с ним уже не считывает отжатие любой кнопки мыши, подобные методы решения пробовал, не помогало и сейчас не помогло.
пример кода из моего скрипта:


Lua:
local hotkey_key = HOTKEY.GetHotKey(hotkey_name)[1]
                               
Binder_Setting_Pies.current_pie = i
Binder_Setting_Pies.pie_active = true

lua_thread.create(function()
    while true do wait(10)
        if not isKeyDown(hotkey_key) then
            Binder_Setting_Pies.pie_active = false
            return
        end
    end
end)
принцип тот же, проблема та же )
 
Последнее редактирование:

UBP

Известный
350
204
тут дело не в этом, у меня без pie-menu все работает прекрасно, с ним уже не считывает отжатие любой кнопки мыши, подобные методы решения пробовал, не помогало и сейчас не помогло.
пример кода из моего скрипта:


Lua:
local hotkey_key = HOTKEY.GetHotKey(hotkey_name)[1]
                              
Binder_Setting_Pies.current_pie = i
Binder_Setting_Pies.pie_active = true

lua_thread.create(function()
    while true do wait(10)
        if not isKeyDown(hotkey_key) then
            Binder_Setting_Pies.pie_active = false
            return
        end
    end
end)
принцип тот же, проблема та же )
Lua:
local hotkey_key = HOTKEY.GetHotKey(hotkey_name)[1]

Binder_Setting_Pies.current_pie = i
Binder_Setting_Pies.pie_active = true


local function onHotkeyRelease(key)
    if key == hotkey_key then
        Binder_Setting_Pies.pie_active = false
    end
end


addEventHandler("onWindowMessage", function(msg, wparam, lparam)
    if msg == wm.WM_KEYUP or msg == wm.WM_SYSKEYUP then
        onHotkeyRelease(wparam)
    end
end)
 
  • Влюблен
Реакции: glor1xxx

glor1xxx

Новичок
Автор темы
4
2
Lua:
local hotkey_key = HOTKEY.GetHotKey(hotkey_name)[1]

Binder_Setting_Pies.current_pie = i
Binder_Setting_Pies.pie_active = true


local function onHotkeyRelease(key)
    if key == hotkey_key then
        Binder_Setting_Pies.pie_active = false
    end
end


addEventHandler("onWindowMessage", function(msg, wparam, lparam)
    if msg == wm.WM_KEYUP or msg == wm.WM_SYSKEYUP then
        onHotkeyRelease(wparam)
    end
end)
попробую, спасибо, отпишу как смогу

Lua:
local hotkey_key = HOTKEY.GetHotKey(hotkey_name)[1]

Binder_Setting_Pies.current_pie = i
Binder_Setting_Pies.pie_active = true


local function onHotkeyRelease(key)
    if key == hotkey_key then
        Binder_Setting_Pies.pie_active = false
    end
end


addEventHandler("onWindowMessage", function(msg, wparam, lparam)
    if msg == wm.WM_KEYUP or msg == wm.WM_SYSKEYUP then
        onHotkeyRelease(wparam)
    end
end)
способ помог, спасибо, только вместо SYSKEYUP нужно брать в данном случае
WM_MBUTTONUP
 
Последнее редактирование:
  • Нравится
Реакции: UBP