keybinds: simulate mouse movement after bringing active window to top (#12703)
Fixes https://github.com/hyprwm/Hyprland/discussions/12702
This commit is contained in:
parent
5faa66d297
commit
e5d20b56bc
3 changed files with 66 additions and 0 deletions
|
|
@ -224,6 +224,28 @@ static SDispatchResult scroll(std::string in) {
|
|||
return {};
|
||||
}
|
||||
|
||||
static SDispatchResult click(std::string in) {
|
||||
CVarList2 data(std::move(in));
|
||||
|
||||
uint32_t button;
|
||||
bool pressed;
|
||||
try {
|
||||
button = std::stoul(std::string{data[0]});
|
||||
pressed = std::stoul(std::string{data[1]}) == 1;
|
||||
} catch (...) { return {.success = false, .error = "invalid input"}; }
|
||||
|
||||
Log::logger->log(Log::DEBUG, "tester: mouse button {} state {}", button, pressed);
|
||||
|
||||
g_mouse->m_pointerEvents.button.emit(IPointer::SButtonEvent{
|
||||
.timeMs = sc<uint32_t>(Time::millis(Time::steadyNow())),
|
||||
.button = button,
|
||||
.state = pressed ? WL_POINTER_BUTTON_STATE_PRESSED : WL_POINTER_BUTTON_STATE_RELEASED,
|
||||
.mouse = true,
|
||||
});
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
static SDispatchResult keybind(std::string in) {
|
||||
CVarList2 data(std::move(in));
|
||||
// 0 = release, 1 = press
|
||||
|
|
@ -283,6 +305,7 @@ APICALL EXPORT PLUGIN_DESCRIPTION_INFO PLUGIN_INIT(HANDLE handle) {
|
|||
HyprlandAPI::addDispatcherV2(PHANDLE, "plugin:test:alt", ::pressAlt);
|
||||
HyprlandAPI::addDispatcherV2(PHANDLE, "plugin:test:gesture", ::simulateGesture);
|
||||
HyprlandAPI::addDispatcherV2(PHANDLE, "plugin:test:scroll", ::scroll);
|
||||
HyprlandAPI::addDispatcherV2(PHANDLE, "plugin:test:click", ::click);
|
||||
HyprlandAPI::addDispatcherV2(PHANDLE, "plugin:test:keybind", ::keybind);
|
||||
HyprlandAPI::addDispatcherV2(PHANDLE, "plugin:test:add_rule", ::addRule);
|
||||
HyprlandAPI::addDispatcherV2(PHANDLE, "plugin:test:check_rule", ::checkRule);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue